From 29e06fc327da71c5defddefb69da4f98274fc975 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 12 Dec 2022 14:07:52 -0600 Subject: [PATCH] refactor, with the following wrappers to keep in mind: Core_ClientServer.clearLoadStatus(); Core_ClientServer.inishMapLoad(); Core_ClientServer.FailMapLoad( %moduleName, %isFine); Of special note: the postevent method must only take one entry, so we store off Core_ClientServer.failedModuleName = %moduleName; priorto triggering the event so that the failing module can be reported. --- .../clientServer/Core_ClientServer.tscript | 25 +++++++++++++------ .../scripts/server/levelLoad.tscript | 3 +-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript b/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript index 8df5cc8eb..1bc3b9d6f 100644 --- a/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript +++ b/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript @@ -12,19 +12,30 @@ // When a local game is started - a listen server - via calling StartGame() a server is created and then the client is // connected to it via createAndConnectToLocalServer(). +function Core_ClientServer::clearLoadStatus() +{ + Core_ClientServer.moduleLoadedDone = 0; + Core_ClientServer.moduleLoadedFailed = 0; +} function Core_ClientServer::onLoadMap(%this) { %this.finishMapLoad(); } -function Core_ClientServer::finishMapLoad() +function Core_ClientServer::finishMapLoad(%this) { Core_ClientServer.GetEventManager().postEvent( "mapLoadComplete" ); } +function Core_ClientServer::FailMapLoad(%this, %moduleName, %isFine) +{ + Core_ClientServer.failedModuleName = %moduleName; + Core_ClientServer.GetEventManager().postEvent( "mapLoadFail", %isFine ); +} + function Core_ClientServerListener::onMapLoadComplete(%this) { - $moduleLoadedDone++; + Core_ClientServer.moduleLoadedDone++; %numModsNeedingLoaded = 0; %modulesList = ModuleDatabase.findModules(); for(%i=0; %i < getWordCount(%modulesList); %i++) @@ -33,7 +44,7 @@ function Core_ClientServerListener::onMapLoadComplete(%this) if (%module.ModuleId.isMethod("finishMapLoad")) %numModsNeedingLoaded++; } - if ($moduleLoadedDone == %numModsNeedingLoaded) + if (Core_ClientServer.moduleLoadedDone == %numModsNeedingLoaded) { loadMissionStage3(); } @@ -47,11 +58,11 @@ function Core_ClientServerListener::onmapLoadFail(%this, %isFine) return; } - $moduleLoadedFailed++; - echo("onmapLoadFail!"); - if ($moduleLoadedFailed>1) return; // yeah, we know + Core_ClientServer.moduleLoadedFailed++; + if (Core_ClientServer.moduleLoadedFailed>1) return; // yeah, we know - $Server::LoadFailMsg = "Failed to load map!"; + $Server::LoadFailMsg = Core_ClientServer.failedModuleName @" failed to load mission specific data!"; + error($Server::LoadFailMsg); // Inform clients that are already connected for (%clientIndex = 0; %clientIndex < ClientGroup.getCount(); %clientIndex++) diff --git a/Templates/BaseGame/game/core/clientServer/scripts/server/levelLoad.tscript b/Templates/BaseGame/game/core/clientServer/scripts/server/levelLoad.tscript index ee8e43dba..140135b01 100644 --- a/Templates/BaseGame/game/core/clientServer/scripts/server/levelLoad.tscript +++ b/Templates/BaseGame/game/core/clientServer/scripts/server/levelLoad.tscript @@ -126,8 +126,7 @@ function loadMissionStage2() // Set mission name. if( isObject( theLevelInfo ) ) $Server::MissionName = theLevelInfo.levelName; - $moduleLoadedDone = 0; - $moduleLoadedFailed = 0; + Core_ClientServer.clearLoadStatus(); callOnModules("onLoadMap"); }