diff --git a/README.md b/README.md index 75f6f76..471d60b 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ A GUI for [RLBot](https://rlbot.org) v5 written in go and powered by [wails](htt 2. Run `wails3 dev` ## Installing build dependencies + 1. Install the [wails v3-alpha cli](https://v3alpha.wails.io/getting-started/installation/) 2. Install [node](https://nodejs.org/en) and [pnpm](https://pnpm.io/installation) 3. Run `cd frontend` and then `pnpm i` (you probably want to `cd ../` after) diff --git a/app.go b/app.go index 8893bf0..c31f628 100644 --- a/app.go +++ b/app.go @@ -4,7 +4,6 @@ import ( "context" "os" "path/filepath" - "strings" "github.com/ncruces/zenity" rlbot "github.com/swz-git/go-interface" @@ -39,14 +38,20 @@ func (a *App) startup(ctx context.Context) { // return fmt.Sprintf("Hello %s, It's show time!", name) // } -func recursiveFileSearch(root, targetName string) ([]string, error) { +func recursiveFileSearch(root, pattern string) ([]string, error) { var matches []string err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { return err } - if strings.HasSuffix(info.Name(), targetName) { - matches = append(matches, path) + if !info.IsDir() && (info.Name() == "bot.toml" || filepath.Ext(info.Name()) == ".bot.toml") { + matched, err := filepath.Match(pattern, info.Name()) + if err != nil { + return err + } + if matched { + matches = append(matches, path) + } } return nil }) @@ -75,7 +80,7 @@ type StartMatchOptions struct { MutatorSettings flat.MutatorSettingsT `json:"mutatorSettings"` ExtraOptions ExtraOptions `json:"extraOptions"` Launcher string `json:"launcher"` - GamePath string `json:"gamePath"` + LauncherArg string `json:"launcherArg"` } func (a *App) StartMatch(options StartMatchOptions) Result { @@ -115,9 +120,11 @@ func (a *App) StartMatch(options StartMatchOptions) Result { launcher = flat.LauncherEpic case "custom": launcher = flat.LauncherCustom + case "noLaunch": + launcher = flat.LauncherNoLaunch default: - println("No launcher chosen, defaulting to steam") - launcher = flat.LauncherSteam + println("No launcher chosen, defaulting to NoLaunch") + launcher = flat.LauncherNoLaunch } var playerConfigs []*flat.PlayerConfigurationT @@ -132,19 +139,19 @@ func (a *App) StartMatch(options StartMatchOptions) Result { println(playerConfigs) - conn.SendPacket(&flat.MatchSettingsT{ + conn.SendPacket(&flat.MatchConfigurationT{ AutoStartBots: true, GameMapUpk: options.Map, PlayerConfigurations: playerConfigs, GameMode: gameMode, - MutatorSettings: &options.MutatorSettings, + Mutators: &options.MutatorSettings, EnableRendering: options.ExtraOptions.EnableRendering, EnableStateSetting: options.ExtraOptions.EnableStateSetting, InstantStart: options.ExtraOptions.InstantStart, SkipReplays: options.ExtraOptions.SkipReplays, AutoSaveReplay: options.ExtraOptions.AutoSaveReplay, Launcher: launcher, - GamePath: options.GamePath, + LauncherArg: options.LauncherArg, ExistingMatchBehavior: flat.ExistingMatchBehavior(options.ExtraOptions.ExistingMatchBehavior), }) diff --git a/frontend/package.json b/frontend/package.json index 5950b72..4cdbcdd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,14 +9,14 @@ }, "dependencies": { "@wailsio/runtime": "3.0.0-alpha.27", - "svelte": "^5", + "svelte": "^5.20.5", "svelte-5-french-toast": "2.0.1", - "svelte-dnd-action": "^0.9.52" + "svelte-dnd-action": "^0.9.57" }, "devDependencies": { "@rsbuild/core": "1.0.5", "@rsbuild/plugin-svelte": "1.0.5", "oxlint": "^0.13.2", - "typescript": "^5.5.2" + "typescript": "^5.7.3" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 90a69d9..02106bf 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -12,27 +12,27 @@ importers: specifier: 3.0.0-alpha.27 version: 3.0.0-alpha.27 svelte: - specifier: ^5 - version: 5.11.2 + specifier: ^5.20.5 + version: 5.20.5 svelte-5-french-toast: specifier: 2.0.1 - version: 2.0.1(svelte@5.11.2) + version: 2.0.1(svelte@5.20.5) svelte-dnd-action: - specifier: ^0.9.52 - version: 0.9.52(svelte@5.11.2) + specifier: ^0.9.57 + version: 0.9.57(svelte@5.20.5) devDependencies: '@rsbuild/core': specifier: 1.0.5 version: 1.0.5 '@rsbuild/plugin-svelte': specifier: 1.0.5 - version: 1.0.5(@rsbuild/core@1.0.5)(svelte@5.11.2)(typescript@5.7.2) + version: 1.0.5(@rsbuild/core@1.0.5)(svelte@5.20.5)(typescript@5.7.3) oxlint: specifier: ^0.13.2 version: 0.13.2 typescript: - specifier: ^5.5.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages: @@ -211,8 +211,12 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - caniuse-lite@1.0.30001688: - resolution: {integrity: sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==} + caniuse-lite@1.0.30001701: + resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} core-js@3.38.1: resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} @@ -221,11 +225,11 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - esm-env@1.2.1: - resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} - esrap@1.2.3: - resolution: {integrity: sha512-ZlQmCCK+n7SGoqo7DnfKaP1sJZa49P01/dXzmjCASSo04p72w8EksT2NMK8CEX8DhKsfJXANioIw8VyHNsBfvQ==} + esrap@1.4.5: + resolution: {integrity: sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -247,11 +251,11 @@ packages: locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - magic-string@0.30.15: - resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - nanoid@5.0.9: - resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} + nanoid@5.1.2: + resolution: {integrity: sha512-b+CiXQCNMUGe0Ri64S9SXFcP9hogjAJ2Rd6GdVxhPLRm7mhGaM7VgOvCAJ1ZshfHbqVDI3uqTI5C8/GaKuLI7g==} engines: {node: ^18 || >=20} hasBin: true @@ -268,8 +272,8 @@ packages: svelte-dev-helper@1.1.9: resolution: {integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==} - svelte-dnd-action@0.9.52: - resolution: {integrity: sha512-f841HB5PCcvp21jsMkxSXCXcsJcGmIPMguN6iI1gXqP9Owcb47+ZUIE5ETUzNJntE9h7dm1wFj2Bm51hRtQ7Lw==} + svelte-dnd-action@0.9.57: + resolution: {integrity: sha512-H1QPlthwAH+xjaISKbp/dQJYeC3Jt1mlTNqJDko0f7XgEyi5ee3PMEuAfF1soJXA0Y5ceb+W8xJXiSZ+2CeMNA==} peerDependencies: svelte: '>=3.23.0 || ^5.0.0-next.0' @@ -326,15 +330,15 @@ packages: peerDependencies: svelte: ^3.2.1 || ^4.0.0-next.1 || ^5.0.0-next.94 - svelte@5.11.2: - resolution: {integrity: sha512-kGWswlBaohYxZHML9jp8ZYXkwjKd+WTpyAK1CCDmNzsefZHQjvsa7kbrKUckcFloNmdzwQwaZq+NyunuNOE6lw==} + svelte@5.20.5: + resolution: {integrity: sha512-dpu2lTPVsAAgZFKpF7A9741sBCdXGogfxFU4aQeVgun7GVNCSVheTzj0FsT7g9OsLhBaMX4lKLwVIvmzQGytmQ==} engines: {node: '>=18'} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true @@ -410,16 +414,16 @@ snapshots: '@rspack/core': 1.0.14(@swc/helpers@0.5.15) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001688 + caniuse-lite: 1.0.30001701 core-js: 3.38.1 optionalDependencies: fsevents: 2.3.3 - '@rsbuild/plugin-svelte@1.0.5(@rsbuild/core@1.0.5)(svelte@5.11.2)(typescript@5.7.2)': + '@rsbuild/plugin-svelte@1.0.5(@rsbuild/core@1.0.5)(svelte@5.20.5)(typescript@5.7.3)': dependencies: '@rsbuild/core': 1.0.5 - svelte-loader: 3.2.4(svelte@5.11.2) - svelte-preprocess: 6.0.3(svelte@5.11.2)(typescript@5.7.2) + svelte-loader: 3.2.4(svelte@5.20.5) + svelte-preprocess: 6.0.3(svelte@5.20.5)(typescript@5.7.3) transitivePeerDependencies: - '@babel/core' - coffeescript @@ -477,7 +481,7 @@ snapshots: '@module-federation/runtime-tools': 0.5.1 '@rspack/binding': 1.0.14 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001688 + caniuse-lite: 1.0.30001701 optionalDependencies: '@swc/helpers': 0.5.15 @@ -491,7 +495,7 @@ snapshots: '@wailsio/runtime@3.0.0-alpha.27': dependencies: - nanoid: 5.0.9 + nanoid: 5.1.2 acorn-typescript@1.4.13(acorn@8.14.0): dependencies: @@ -505,18 +509,19 @@ snapshots: big.js@5.2.2: {} - caniuse-lite@1.0.30001688: {} + caniuse-lite@1.0.30001701: {} + + clsx@2.1.1: {} core-js@3.38.1: {} emojis-list@3.0.0: {} - esm-env@1.2.1: {} + esm-env@1.2.2: {} - esrap@1.2.3: + esrap@1.4.5: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.6 fsevents@2.3.3: optional: true @@ -535,11 +540,11 @@ snapshots: locate-character@3.0.0: {} - magic-string@0.30.15: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - nanoid@5.0.9: {} + nanoid@5.1.2: {} oxlint@0.13.2: optionalDependencies: @@ -552,39 +557,39 @@ snapshots: '@oxlint/win32-arm64': 0.13.2 '@oxlint/win32-x64': 0.13.2 - svelte-5-french-toast@2.0.1(svelte@5.11.2): + svelte-5-french-toast@2.0.1(svelte@5.20.5): dependencies: - svelte: 5.11.2 - svelte-writable-derived: 3.1.1(svelte@5.11.2) + svelte: 5.20.5 + svelte-writable-derived: 3.1.1(svelte@5.20.5) svelte-dev-helper@1.1.9: {} - svelte-dnd-action@0.9.52(svelte@5.11.2): + svelte-dnd-action@0.9.57(svelte@5.20.5): dependencies: - svelte: 5.11.2 + svelte: 5.20.5 - svelte-hmr@0.14.12(svelte@5.11.2): + svelte-hmr@0.14.12(svelte@5.20.5): dependencies: - svelte: 5.11.2 + svelte: 5.20.5 - svelte-loader@3.2.4(svelte@5.11.2): + svelte-loader@3.2.4(svelte@5.20.5): dependencies: loader-utils: 2.0.4 - svelte: 5.11.2 + svelte: 5.20.5 svelte-dev-helper: 1.1.9 - svelte-hmr: 0.14.12(svelte@5.11.2) + svelte-hmr: 0.14.12(svelte@5.20.5) - svelte-preprocess@6.0.3(svelte@5.11.2)(typescript@5.7.2): + svelte-preprocess@6.0.3(svelte@5.20.5)(typescript@5.7.3): dependencies: - svelte: 5.11.2 + svelte: 5.20.5 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 - svelte-writable-derived@3.1.1(svelte@5.11.2): + svelte-writable-derived@3.1.1(svelte@5.20.5): dependencies: - svelte: 5.11.2 + svelte: 5.20.5 - svelte@5.11.2: + svelte@5.20.5: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -593,15 +598,16 @@ snapshots: acorn-typescript: 1.4.13(acorn@8.14.0) aria-query: 5.3.2 axobject-query: 4.1.0 - esm-env: 1.2.1 - esrap: 1.2.3 + clsx: 2.1.1 + esm-env: 1.2.2 + esrap: 1.4.5 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.15 + magic-string: 0.30.17 zimmerframe: 1.1.2 tslib@2.8.1: {} - typescript@5.7.2: {} + typescript@5.7.3: {} zimmerframe@1.1.2: {} diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index 331e2f1..acdfa36 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -12,6 +12,9 @@
diff --git a/frontend/src/arena-names.js b/frontend/src/arena-names.js deleted file mode 100644 index 9a93565..0000000 --- a/frontend/src/arena-names.js +++ /dev/null @@ -1,86 +0,0 @@ -export const MAPS_STANDARD = { - DFHStadium: "Stadium_P", - Mannfield: "EuroStadium_P", - ChampionsField: "cs_p", - UrbanCentral: "TrainStation_P", - BeckwithPark: "Park_P", - UtopiaColiseum: "UtopiaStadium_P", - Wasteland: "wasteland_s_p", - NeoTokyo: "NeoTokyo_Standard_P", - AquaDome: "Underwater_P", - StarbaseArc: "arc_standard_p", - Farmstead: "farm_p", - SaltyShores: "beach_P", - DFHStadium_Stormy: "Stadium_Foggy_P", - DFHStadium_Day: "stadium_day_p", - Mannfield_Stormy: "EuroStadium_Rainy_P", - Mannfield_Night: "EuroStadium_Night_P", - ChampionsField_Day: "cs_day_p", - BeckwithPark_Stormy: "Park_Rainy_P", - BeckwithPark_Midnight: "Park_Night_P", - UrbanCentral_Night: "TrainStation_Night_P", - UrbanCentral_Dawn: "TrainStation_Dawn_P", - UtopiaColiseum_Dusk: "UtopiaStadium_Dusk_P", - DFHStadium_Snowy: "Stadium_Winter_P", - Mannfield_Snowy: "eurostadium_snownight_p", - UtopiaColiseum_Snowy: "UtopiaStadium_Snow_P", - ForbiddenTemple: "CHN_Stadium_P", - RivalsArena: "cs_hw_p", - Farmstead_Night: "Farm_Night_P", - SaltyShores_Night: "beach_night_p", - NeonFields: "music_p", - DFHStadium_Circuit: "Stadium_Race_Day_P", - DeadeyeCanyon: "Outlaw_P", - StarbaseArc_Aftermath: "ARC_Darc_P", - Wasteland_Night: "Wasteland_Night_S_P", - ForbiddenTemple_Day: "CHN_Stadium_Day_P", - BeckwithPark_Snowy: "Park_Snowy_P", - UtopiaColiseum_Gilded: "UtopiaStadium_Lux_P", - SovereignHeights: "Street_P", - ForbiddenTemple_FireAndIce: "fni_stadium_p", - DeadeyeCanyon_Oasis: "outlaw_oasis_p", - EstadioVida_Dusk: "ff_dusk_p", - Mannfield_Dusk: "eurostadium_dusk_p", - Farmstead_Pitched: "farm_grs_p", - Wasteland_Pitched: "wasteland_grs_p", - Neotokyo_Hacked: "neotokyo_hax_p", - AquaDome_Shallows: "Underwater_GRS_P", - SaltyShores_SaltyFest: "Beach_Night_GRS_P", - DriftWoods: "Woods_P", -}; - -export const MAPS_NON_STANDARD = { - Badlands: "Wasteland_P", - Badlands_Night: "Wasteland_Night_P", - TokyoUnderpass: "NeoTokyo_P", - Arctagon: "ARC_P", - Pillars: "Labs_CirclePillars_P", - Cosmic: "Labs_Cosmic_V4_P", - DoubleGoal: "Labs_DoubleGoal_V2_P", - Octagon: "Labs_Octagon_02_P", - Underpass: "Labs_Underpass_P", - UtopiaRetro: "Labs_Utopia_P", - Hoops_DunkHouse: "HoopsStadium_P", - DropShot_Core707: "ShatterShot_P", - ThrowbackStadium: "ThrowbackStadium_P", - BeckwithPark_GothamNight: "Park_Bman_P", - UrbanCentral_Haunted: "Haunted_TrainStation_P", - ChampionsField_NFL: "BB_P", - ThrowbackStadium_Snowy: "ThrowbackHockey_p", - Basin: "Labs_Basin_P", - Corridor: "Labs_Corridor_P", - Loophole: "Labs_Holyfield_P", - Galleon: "Labs_Galleon_P", - GalleonRetro: "Labs_Galleon_Mast_P", - Hourglass: "Labs_PillarGlass_P", - Barricade: "Labs_PillarHeat_P", - Colossus: "Labs_PillarWings_P", - NeoTokyo_Comic: "NeoTokyo_Toon_P", - Hoops_TheBlock: "HoopsStreet_P", - Farmstead_Spooky: "Farm_HW_P", - ChampionsField_NikeFC: "swoosh_p", - Farmstead_Upsidedown: "farm_hw_p", - Quadron: "KO_Quadron_P", - Calavera: "KO_Calavera_P", - Carbon: "KO_Carbon_P", -}; diff --git a/frontend/src/arena-names.ts b/frontend/src/arena-names.ts new file mode 100644 index 0000000..c6d2272 --- /dev/null +++ b/frontend/src/arena-names.ts @@ -0,0 +1,86 @@ +export const MAPS_STANDARD = { + "DFH Stadium": "Stadium_P", + "Mannfield": "EuroStadium_P", + "Champions Field": "cs_p", + "Urban Central": "TrainStation_P", + "Beckwith Park": "Park_P", + "Utopia Coliseum": "UtopiaStadium_P", + "Wasteland": "wasteland_s_p", + "NeoTokyo": "NeoTokyo_Standard_P", + "Aqua Dome": "Underwater_P", + "Starbase Arc": "arc_standard_p", + "Farmstead": "farm_p", + "Salty Shores": "beach_P", + "DFH Stadium (Stormy)": "Stadium_Foggy_P", + "DFH Stadium (Day)": "stadium_day_p", + "Mannfield (Stormy)": "EuroStadium_Rainy_P", + "Mannfield (Night)": "EuroStadium_Night_P", + "Champions Field (Day)": "cs_day_p", + "Beckwith Park (Stormy)": "Park_Rainy_P", + "Beckwith Park (Midnight)": "Park_Night_P", + "Urban Central (Night)": "TrainStation_Night_P", + "Urban Central (Dawn)": "TrainStation_Dawn_P", + "Utopia Coliseum (Dusk)": "UtopiaStadium_Dusk_P", + "DFH Stadium (Snowy)": "Stadium_Winter_P", + "Mannfield (Snowy)": "eurostadium_snownight_p", + "Utopia Coliseum (Snowy)": "UtopiaStadium_Snow_P", + "Forbidden Temple": "CHN_Stadium_P", + "Rivals Arena": "cs_hw_p", + "Farmstead (Night)": "Farm_Night_P", + "Salty Shores (Night)": "beach_night_p", + "Neon Fields": "music_p", + "DFH Stadium (Circuit)": "Stadium_Race_Day_P", + "Deadeye Canyon": "Outlaw_P", + "Starbase Arc (Aftermath)": "ARC_Darc_P", + "Wasteland (Night)": "Wasteland_Night_S_P", + "Forbidden Temple (Day)": "CHN_Stadium_Day_P", + "Beckwith Park (Snowy)": "Park_Snowy_P", + "Utopia Coliseum (Gilded)": "UtopiaStadium_Lux_P", + "Sovereign Heights": "Street_P", + "Forbidden Temple (Fire And Ice)": "fni_stadium_p", + "Deadeye Canyon (Oasis)": "outlaw_oasis_p", + "Estadio Vida (Dusk)": "ff_dusk_p", + "Mannfield (Dusk)": "eurostadium_dusk_p", + "Farmstead (Pitched)": "farm_grs_p", + "Wasteland (Pitched)": "wasteland_grs_p", + "NeoTokyo (Hacked)": "neotokyo_hax_p", + "AquaDome (Shallows)": "Underwater_GRS_P", + "Salty Shores (SaltyFest)": "Beach_Night_GRS_P", + "Drift Woods": "Woods_P", +}; + +export const MAPS_NON_STANDARD = { + "Badlands": "Wasteland_P", + "Badlands (Night)": "Wasteland_Night_P", + "Tokyo Underpass": "NeoTokyo_P", + "Arctagon": "ARC_P", + "Pillars": "Labs_CirclePillars_P", + "Cosmic": "Labs_Cosmic_V4_P", + "Double Goal": "Labs_DoubleGoal_V2_P", + "Octagon": "Labs_Octagon_02_P", + "Underpass": "Labs_Underpass_P", + "Utopia Retro": "Labs_Utopia_P", + "Hoops (Dunk House)": "HoopsStadium_P", + "DropShot (Core707)": "ShatterShot_P", + "Throwback Stadium": "ThrowbackStadium_P", + "Beckwith Park Gotham Night": "Park_Bman_P", + "Urban Central (Haunted)": "Haunted_TrainStation_P", + "Champions Field (NFL)": "BB_P", + "Throwback Stadium (Snowy)": "ThrowbackHockey_p", + "Basin": "Labs_Basin_P", + "Corridor": "Labs_Corridor_P", + "Loophole": "Labs_Holyfield_P", + "Galleon": "Labs_Galleon_P", + "Galleon (Retro)": "Labs_Galleon_Mast_P", + "Hourglass": "Labs_PillarGlass_P", + "Barricade": "Labs_PillarHeat_P", + "Colossus": "Labs_PillarWings_P", + "NeoTokyo (Comic)": "NeoTokyo_Toon_P", + "Hoops (The Block)": "HoopsStreet_P", + "Farmstead (Spooky)": "Farm_HW_P", + "Champions Field (Nike FC)": "swoosh_p", + "Farmstead (Upsidedown)": "farm_hw_p", + "Quadron": "KO_Quadron_P", + "Calavera": "KO_Calavera_P", + "Carbon": "KO_Carbon_P", +}; diff --git a/frontend/src/base-players.ts b/frontend/src/base-players.ts index 5f595e9..57769b8 100644 --- a/frontend/src/base-players.ts +++ b/frontend/src/base-players.ts @@ -8,6 +8,7 @@ export const BASE_PLAYERS: DraggablePlayer[] = [ icon: controller, id: Math.random(), player: new HumanInfo(), + tags: ["human"], }, { displayName: "Psyonix Beginner", @@ -16,6 +17,7 @@ export const BASE_PLAYERS: DraggablePlayer[] = [ player: new PsyonixBotInfo({ skill: 0, }), + tags: ["psyonix"], }, { displayName: "Psyonix Rookie", @@ -24,6 +26,7 @@ export const BASE_PLAYERS: DraggablePlayer[] = [ player: new PsyonixBotInfo({ skill: 1, }), + tags: ["psyonix"], }, { displayName: "Psyonix Pro", @@ -32,6 +35,7 @@ export const BASE_PLAYERS: DraggablePlayer[] = [ player: new PsyonixBotInfo({ skill: 2, }), + tags: ["psyonix"], }, { displayName: "Psyonix Allstar", @@ -40,5 +44,6 @@ export const BASE_PLAYERS: DraggablePlayer[] = [ player: new PsyonixBotInfo({ skill: 3, }), + tags: ["psyonix"], }, ]; diff --git a/frontend/src/components/BotList.svelte b/frontend/src/components/BotList.svelte index 7ae9df9..cce0b00 100644 --- a/frontend/src/components/BotList.svelte +++ b/frontend/src/components/BotList.svelte @@ -10,14 +10,57 @@ let { items = [] }: { items: DraggablePlayer[] } = $props(); const flipDurationMs = 100; - // The following stuff copies the bots from the list instead of moving them + let selectedTag = $state("All"); + const extraModeTags = ["hoops", "dropshot", "snow-day", "spike-rush", "heatseaker"]; + const categories = [ + ["All"], + ["Standard", "Extra Modes", "Special bots/scripts"], + ["Bots for 1v1", "Bots with teamplay", "Goalie bots"] + ]; + + function filterBots() { + switch (selectedTag) { + case "Standard": + return items.filter((bot) => { + return !bot.tags.some((tag) => + [...extraModeTags, "memebot", "human"].includes(tag), + ); + }); + case "Extra Modes": + return items.filter((bot) => { + return bot.tags.some((tag) => extraModeTags.includes(tag)); + }); + case "Special bots/scripts": + return items.filter((bot) => { + return bot.tags.some((tag) => tag === "memebot"); + }); + case "Bots for 1v1": + return items.filter((bot) => { + return bot.tags.some((tag) => tag === "1v1"); + }); + case "Bots with teamplay": + return items.filter((bot) => { + return bot.tags.some((tag) => tag === "teamplay"); + }); + case "Goalie bots": + return items.filter((bot) => { + return bot.tags.some((tag) => tag === "goalie"); + }); + default: + return items; + } + } + + function handleTagClick(tag: string) { + selectedTag = tag; + } + let shouldIgnoreDndEvents = false; function handleDndConsider(e: any) { const { trigger, id } = e.detail.info; if (trigger === TRIGGERS.DRAG_STARTED) { const idx = items.findIndex((item) => item.id === id); const newId = `${id}_copy_${Math.round(Math.random() * 100000)}`; - // the line below was added in order to be compatible with version svelte-dnd-action 0.7.4 and above e.detail.items = e.detail.items.filter( (item: any) => !item[SHADOW_ITEM_MARKER_PROPERTY_NAME], ); @@ -25,8 +68,6 @@ items = e.detail.items; shouldIgnoreDndEvents = true; } else if (!shouldIgnoreDndEvents) { - // with this uncommented, this accepts bots dragged in from - // the team lists, we don't want that // items = e.detail.items; } else { items = [...items]; @@ -42,6 +83,18 @@ } +
+ {#each categories as tagGroup} +
+ {#each tagGroup as tag} + + {/each} +
+ {/each} +
+
- {#each items as bot (bot.id)} + {#each filterBots() as bot (bot.id)}
icon

{bot.displayName}

@@ -63,6 +116,28 @@
+ \ No newline at end of file diff --git a/frontend/src/settings.ts b/frontend/src/settings.ts new file mode 100644 index 0000000..c1ff950 --- /dev/null +++ b/frontend/src/settings.ts @@ -0,0 +1,7 @@ +import { writable } from 'svelte/store'; +import { MAPS_STANDARD } from './arena-names'; + +export const mapStore = writable(localStorage.getItem("MS_MAP") || MAPS_STANDARD.DFHStadium); +mapStore.subscribe(value => { + localStorage.setItem("MS_MAP", value); +}); diff --git a/go.mod b/go.mod index 857fcef..cefaa34 100644 --- a/go.mod +++ b/go.mod @@ -1,62 +1,61 @@ module gui -go 1.22.4 +go 1.23.1 -toolchain go1.22.5 +toolchain go1.23.6 require ( github.com/BurntSushi/toml v1.4.0 - github.com/ncruces/zenity v0.10.13 - github.com/swz-git/go-interface v0.0.0-20241111211740-6b2092c8da82 + github.com/ncruces/zenity v0.10.14 + github.com/swz-git/go-interface v0.0.0-20250223222446-f9cf3451531b github.com/wailsapp/mimetype v1.4.1 - github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3 + github.com/wailsapp/wails/v3 v3.0.0-alpha.9 ) require ( dario.cat/mergo v1.0.1 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v1.0.0 // indirect - github.com/adrg/xdg v0.5.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/ProtonMail/go-crypto v1.1.5 // indirect + github.com/adrg/xdg v0.5.3 // indirect github.com/akavel/rsrc v0.10.2 // indirect github.com/bep/debounce v1.2.1 // indirect - github.com/cloudflare/circl v1.3.8 // indirect - github.com/cyphar/filepath-securejoin v0.2.5 // indirect - github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f // indirect - github.com/ebitengine/purego v0.4.0-alpha.4 // indirect + github.com/cloudflare/circl v1.6.0 // indirect + github.com/cyphar/filepath-securejoin v0.4.1 // indirect + github.com/dchest/jsmin v1.0.0 // indirect + github.com/ebitengine/purego v0.8.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.0 // indirect - github.com/go-git/go-git/v5 v5.12.0 // indirect + github.com/go-git/go-billy/v5 v5.6.2 // indirect + github.com/go-git/go-git/v5 v5.13.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/flatbuffers v24.3.25+incompatible // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/flatbuffers v25.2.10+incompatible // indirect + github.com/google/uuid v1.6.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect - github.com/josephspurrier/goversioninfo v1.4.0 // indirect + github.com/josephspurrier/goversioninfo v1.4.1 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/leaanthony/go-ansi-parser v1.6.1 // indirect - github.com/leaanthony/u v1.1.0 // indirect - github.com/lmittmann/tint v1.0.4 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/leaanthony/u v1.1.1 // indirect + github.com/lmittmann/tint v1.0.7 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect + github.com/pjbgf/sha1cd v0.3.2 // indirect + github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/samber/lo v1.38.1 // indirect + github.com/samber/lo v1.49.1 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect - github.com/wailsapp/go-webview2 v1.0.18 // indirect + github.com/skeema/knownhosts v1.3.1 // indirect + github.com/wailsapp/go-webview2 v1.0.19 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - golang.org/x/crypto v0.25.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/image v0.21.0 // indirect - golang.org/x/mod v0.19.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/tools v0.23.0 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac // indirect + golang.org/x/image v0.24.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index 4aa5aa7..7d51cd4 100644 --- a/go.sum +++ b/go.sum @@ -3,12 +3,12 @@ dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/adrg/xdg v0.5.0 h1:dDaZvhMXatArP1NPHhnfaQUqWBLBsmx1h1HXQdMoFCY= -github.com/adrg/xdg v0.5.0/go.mod h1:dDdY4M4DF9Rjy4kHPeNL+ilVF+p2lK8IdM9/rTSGcI4= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4= +github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78= +github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ= github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw= github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= @@ -17,51 +17,49 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI= -github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= -github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= -github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= +github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f h1:OGqDDftRTwrvUoL6pOG7rYTmWsTCvyEWFsMjg+HcOaA= -github.com/dchest/jsmin v0.0.0-20220218165748-59f39799265f/go.mod h1:Dv9D0NUlAsaQcGQZa5kc5mqR9ua72SmA8VXi4cd+cBw= -github.com/ebitengine/purego v0.4.0-alpha.4 h1:Y7yIV06Yo5M2BAdD7EVPhfp6LZ0tEcQo5770OhYUVes= -github.com/ebitengine/purego v0.4.0-alpha.4/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/dchest/jsmin v1.0.0 h1:Y2hWXmGZiRxtl+VcTksyucgTlYxnhPzTozCwx9gy9zI= +github.com/dchest/jsmin v1.0.0/go.mod h1:AVBIund7Mr7lKXT70hKT2YgL3XEXUaUk5iw9DZ8b0Uc= +github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= +github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elazarl/goproxy v1.4.0 h1:4GyuSbFa+s26+3rmYNSuUVsx+HgPrV1bk1jXI0l9wjM= +github.com/elazarl/goproxy v1.4.0/go.mod h1:X/5W/t+gzDyLfHW4DrMdpjqYjpXsURlBt9lpBDxZZZQ= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.0 h1:w2hPNtoehvJIxR00Vb4xX94qHQi/ApZfX+nBE2Cjio8= -github.com/go-git/go-billy/v5 v5.6.0/go.mod h1:sFDq7xD3fn3E0GOwUSZqHo9lrkmx8xJhA0ZrfvjBRGM= +github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= +github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-git/go-git/v5 v5.13.2 h1:7O7xvsK7K+rZPKW6AQR1YyNhfywkv7B8/FsP3ki6Zv0= +github.com/go-git/go-git/v5 v5.13.2/go.mod h1:hWdW5P4YZRjmpGHwRH2v3zkWcNl6HeXaXQEMGb3NJ9A= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= -github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q= +github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= -github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8= -github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY= +github.com/josephspurrier/goversioninfo v1.4.1 h1:5LvrkP+n0tg91J9yTkoVnt/QgNnrI1t4uSsWjIonrqY= +github.com/josephspurrier/goversioninfo v1.4.1/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -73,25 +71,24 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leaanthony/go-ansi-parser v1.6.1 h1:xd8bzARK3dErqkPFtoF9F3/HgN8UQk0ed1YDKpEz01A= github.com/leaanthony/go-ansi-parser v1.6.1/go.mod h1:+vva/2y4alzVmmIEpk9QDhA7vLC5zKDTRwfZGOp3IWU= -github.com/leaanthony/u v1.1.0 h1:2n0d2BwPVXSUq5yhe8lJPHdxevE2qK5G99PMStMZMaI= -github.com/leaanthony/u v1.1.0/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI= -github.com/lmittmann/tint v1.0.4 h1:LeYihpJ9hyGvE0w+K2okPTGUdVLfng1+nDNVR4vWISc= -github.com/lmittmann/tint v1.0.4/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE= +github.com/leaanthony/u v1.1.1 h1:TUFjwDGlNX+WuwVEzDqQwC2lOv0P4uhTQw7CMFdiK7M= +github.com/leaanthony/u v1.1.1/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI= +github.com/lmittmann/tint v1.0.7 h1:D/0OqWZ0YOGZ6AyC+5Y2kD8PBEzBk6rFHVSfOqCkF9Y= +github.com/lmittmann/tint v1.0.7/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/ncruces/zenity v0.10.13 h1:0Gd/EdjjEQIhrFaJ05Q5ZvyjlcjnorlZpdzgUzqQIH0= -github.com/ncruces/zenity v0.10.13/go.mod h1:UyAUPSjHm1hOdeZa3Lrh/zmItyGq+iH5AP6xSCx8CFM= +github.com/ncruces/zenity v0.10.14 h1:OBFl7qfXcvsdo1NUEGxTlZvAakgWMqz9nG38TuiaGLI= +github.com/ncruces/zenity v0.10.14/go.mod h1:ZBW7uVe/Di3IcRYH0Br8X59pi+O6EPnNIOU66YHpOO4= github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= +github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -101,110 +98,68 @@ github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844/go.mod h1:T1TLSf github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= -github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew= +github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= +github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/swz-git/go-interface v0.0.0-20241111211740-6b2092c8da82 h1:G7qiCQIta6P/lCv61vDsvmn2Pp7bXRHTG0jHaoSlwpQ= -github.com/swz-git/go-interface v0.0.0-20241111211740-6b2092c8da82/go.mod h1:NCsY3YcB5NTHLQaHW40AkKwubi7CSMbfR7EIA44Gd3I= -github.com/wailsapp/go-webview2 v1.0.18 h1:SSSCoLA+MYikSp1U0WmvELF/4c3x5kH8Vi31TKyZ4yk= -github.com/wailsapp/go-webview2 v1.0.18/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/swz-git/go-interface v0.0.0-20250223222446-f9cf3451531b h1:MeJIpQfaQR5ct+9k1E5TEhI0gBMgvBx9nNLZZhJF+MA= +github.com/swz-git/go-interface v0.0.0-20250223222446-f9cf3451531b/go.mod h1:Fnu6IUjNzFw0QsRnxu5vTfdq3bCkxjg51oDYEaLIxJs= +github.com/wailsapp/go-webview2 v1.0.19 h1:7U3QcDj1PrBPaxJNCui2k1SkWml+Q5kvFUFyTImA6NU= +github.com/wailsapp/go-webview2 v1.0.19/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= -github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3 h1:9aCL0IXD60A5iscQ/ps6f3ti3IlaoG6LQe0RZ9JkueU= -github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3/go.mod h1:9Ca1goy5oqxmy8Oetb8Tchkezcx4tK03DK+SqYByu5Y= +github.com/wailsapp/wails/v3 v3.0.0-alpha.9 h1:b8CfRrhPno8Fra0xFp4Ifyj+ogmXBc35rsQWvcrHtsI= +github.com/wailsapp/wails/v3 v3.0.0-alpha.9/go.mod h1:dSv6s722nSWaUyUiapAM1DHc5HKggNGY1a79shO85/g= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= -golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac h1:l5+whBCLH3iH2ZNHYLbAe58bo7yrN4mVcnkHDYz5vvs= +golang.org/x/exp v0.0.0-20250210185358-939b2ce775ac/go.mod h1:hH+7mtFmImwwcMvScyxUhjuVHR3HGaDPMn9rMSUUbxo= +golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ= +golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= -golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/players.go b/players.go index a3c4813..a618ad4 100644 --- a/players.go +++ b/players.go @@ -103,8 +103,8 @@ func (botInfo BotInfo) ToPlayerConfig(team uint32) *flat.PlayerConfigurationT { return &flat.PlayerConfigurationT{ Variety: &flat.PlayerClassT{ - Type: flat.PlayerClassRLBot, - Value: &flat.RLBotT{}, + Type: flat.PlayerClassCustomBot, + Value: &flat.CustomBotT{}, }, Name: botInfo.Config.Settings.Name, AgentId: botInfo.Config.Settings.AgentId, diff --git a/rockethost.go b/rockethost.go index 5333afa..6fe5b25 100644 --- a/rockethost.go +++ b/rockethost.go @@ -108,12 +108,12 @@ func (a *App) GetRHostServers() ([]RHostServer, error) { // &rlbot=yes&blueBots=FridgeV5&orangeBots= type RHostMatchSettings struct { - Server string `json:"server"` - Map string `json:"map"` - BlueBots []string `json:"blueBots"` - OrangeBots []string `json:"orangeBots"` - Launcher string `json:"launcher"` - GamePath string `json:"gamePath"` + Server string `json:"server"` + Map string `json:"map"` + BlueBots []string `json:"blueBots"` + OrangeBots []string `json:"orangeBots"` + Launcher string `json:"launcher"` + LauncherArg string `json:"launcherArg"` } func (a *App) StartRHostMatch(settings RHostMatchSettings) (string, error) { @@ -155,40 +155,42 @@ func (a *App) StartRHostMatch(settings RHostMatchSettings) (string, error) { launcher = flat.LauncherEpic case "custom": launcher = flat.LauncherCustom + case "noLaunch": + launcher = flat.LauncherNoLaunch default: - println("No launcher chosen, defaulting to steam") - launcher = flat.LauncherSteam + println("No launcher chosen, defaulting to NoLaunch") + launcher = flat.LauncherNoLaunch } - err = conn.SendPacket(&flat.MatchSettingsT{ + err = conn.SendPacket(&flat.MatchConfigurationT{ PlayerConfigurations: []*flat.PlayerConfigurationT{}, ScriptConfigurations: []*flat.ScriptConfigurationT{ { Name: "GUIv5", - Location: "", + RootDir: "", RunCommand: "", SpawnId: 0, AgentId: "rlbot/gui", }, }, GameMode: flat.GameModeSoccer, - MutatorSettings: &flat.MutatorSettingsT{}, + Mutators: &flat.MutatorSettingsT{}, ExistingMatchBehavior: flat.ExistingMatchBehaviorRestart, GameMapUpk: settings.Map, EnableStateSetting: true, EnableRendering: true, Launcher: launcher, - GamePath: settings.GamePath, + LauncherArg: settings.LauncherArg, }) if err != nil { - return "", errors.New("Couldn't send matchsettings packet") + return "", errors.New("Couldn't send matchconfiguration packet") } err = conn.SendPacket(&flat.ConnectionSettingsT{ AgentId: "rlbot/gui", WantsBallPredictions: false, WantsComms: false, - CloseAfterMatch: false, + CloseBetweenMatches: false, }) if err != nil { return "", errors.New("Couldn't send connectionsettings packet") @@ -265,7 +267,7 @@ outer: err = conn.SendPacket(&flat.DesiredGameStateT{ ConsoleCommands: []*flat.ConsoleCommandT{ - &flat.ConsoleCommandT{ + { Command: fmt.Sprintf("start %s/?Lan?Password=", result.Message), }, },