From a0482718065c839fc7bc8183c96f598aa010d167 Mon Sep 17 00:00:00 2001 From: wraitii Date: Mon, 22 Mar 2021 16:57:10 +0000 Subject: [PATCH] Fix AI+Player from persistent settings (again) Reintroduced in fa3b341b57, as I changed the execution order of onLoad. This fixes the problem by explicitly handling this case, which should avoid accidentally reintroducing the problem. Differential Revision: https://code.wildfiregames.com/D3724 This was SVN commit r25103. --- .../gui/gamesetup/Controllers/GameSettingsController.js | 7 +++++++ .../GameSettings/PerPlayer/Dropdowns/PlayerAssignment.js | 1 + 2 files changed, 8 insertions(+) diff --git a/binaries/data/mods/public/gui/gamesetup/Controllers/GameSettingsController.js b/binaries/data/mods/public/gui/gamesetup/Controllers/GameSettingsController.js index b9257d0280..452afc33b2 100644 --- a/binaries/data/mods/public/gui/gamesetup/Controllers/GameSettingsController.js +++ b/binaries/data/mods/public/gui/gamesetup/Controllers/GameSettingsController.js @@ -74,7 +74,14 @@ class GameSettingsController { let settings = this.persistentMatchSettings.loadFile(); if (settings) + { this.parseSettings(settings); + // If the new settings led to AI & players conflict, remove the AI. + for (let guid in g_PlayerAssignments) + if (g_PlayerAssignments[guid].player !== -1 && + g_GameSettings.playerAI.get(g_PlayerAssignments[guid].player - 1)) + g_GameSettings.playerAI.set(g_PlayerAssignments[guid].player - 1, undefined); + } } this.updateLayout(); diff --git a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/PerPlayer/Dropdowns/PlayerAssignment.js b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/PerPlayer/Dropdowns/PlayerAssignment.js index 900e46798b..0353909c92 100644 --- a/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/PerPlayer/Dropdowns/PlayerAssignment.js +++ b/binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/GameSettings/PerPlayer/Dropdowns/PlayerAssignment.js @@ -70,6 +70,7 @@ PlayerSettingControls.PlayerAssignment = class PlayerAssignment extends GameSett if (this.assignedGUID === newGUID) return; this.assignedGUID = newGUID; + // Remove the AI from the slot if there was one. if (this.assignedGUID && g_GameSettings.playerAI.get(this.playerIndex)) { g_GameSettings.playerAI.setAI(this.playerIndex, undefined);