Skip to content

Commit 4265b99

Browse files
committed
neatly work around SendMessage table nilling weirdness
1 parent 9a8a3e8 commit 4265b99

File tree

3 files changed

+45
-8
lines changed

3 files changed

+45
-8
lines changed

Data/Base.rte/Activities/Utility/DeliveryCreationHandler.lua

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,38 @@ function DeliveryCreationHandler:OnSave(saveLoadHandler)
278278

279279
end
280280

281+
function DeliveryCreationHandler:GetHandlerAsSerialized(saveLoadHandler)
282+
return saveLoadHandler:SerializeTable(self.saveTable);
283+
end
284+
285+
function DeliveryCreationHandler:ReplaceHandlerWithSerialized(saveLoadHandler, saveTable)
286+
self.saveTable = saveLoadHandler:DeserializeTable(saveTable);
287+
288+
-- re-add virtual teams
289+
290+
for team, techName in pairs(self.saveTable.virtualTeams) do
291+
self:AddVirtualTeam(team, techName);
292+
end
293+
294+
-- redo adding and removing presets
295+
296+
for team, presetsTable in pairs(self.saveTable.teamRemovedPresets) do
297+
for i, presetName in pairs(self.saveTable.teamRemovedPresets[team]) do
298+
self:RemoveAvailablePreset(team, presetName, true);
299+
end
300+
end
301+
302+
for team, presetsTable in pairs(self.saveTable.teamAddedPresets) do
303+
for i, presetTable in pairs(self.saveTable.teamAddedPresets[team]) do
304+
self:AddAvailablePreset(team, presetTable.PresetName, presetTable.ClassName, presetTable.TechName, true);
305+
end
306+
end
307+
308+
if self.verboseLogging then
309+
print("INFO: DeliveryCreationHandler just replaced itself with a serialized saveTable!");
310+
end
311+
end
312+
281313
function DeliveryCreationHandler:AddVirtualTeam(team, techName)
282314

283315
if team and techName then
@@ -441,7 +473,7 @@ function DeliveryCreationHandler:ReplaceInfantryTypeWeightsTable(team, newWeight
441473

442474
return true;
443475
else
444-
print("DeliveryCreationHandler tried to replace infantry type weights, but wasn't given both a team and a table!");
476+
print("ERROR: DeliveryCreationHandler tried to replace infantry type weights, but wasn't given both a team and a table!");
445477
return false;
446478
end
447479

@@ -458,7 +490,7 @@ function DeliveryCreationHandler:AddAvailablePreset(team, presetName, className,
458490
for i, groupTable in pairs(self.teamPresetTables[team]) do
459491
for presetIndex, presetTable in pairs(groupTable) do
460492
if presetTable.PresetName == presetName then
461-
print("DeliveryCreationHandler tried to add an available preset that was already there!");
493+
print("ERROR: DeliveryCreationHandler tried to add an available preset that was already there!");
462494
return false;
463495
end
464496
end
@@ -491,7 +523,7 @@ function DeliveryCreationHandler:AddAvailablePreset(team, presetName, className,
491523
return true;
492524

493525
else
494-
print("DeliveryCreationHandler tried to add an available preset but was not given all of a team, presetName, className, and techName!");
526+
print("ERROR: DeliveryCreationHandler tried to add an available preset but was not given all of a team, presetName, className, and techName!");
495527
return false;
496528
end
497529

@@ -500,6 +532,10 @@ end
500532
function DeliveryCreationHandler:RemoveAvailablePreset(team, presetName, doNotSaveNewEntry)
501533

502534
-- check through every group and delete the preset with the given presetname from every one
535+
536+
if self.verboseLogging then
537+
print("INFO: DeliveryCreationHandler is trying to delete preset " .. presetName .. " from team " .. team);
538+
end
503539

504540
local found = false;
505541

Data/Base.rte/Scenes/Objects/Bunkers/BunkerSystems/ActorSpawner/ActorSpawner.lua

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,8 @@ function OnMessage(self, message, object)
7777
self.Deactivated = false;
7878
self:RemoveNumberValue("Deactivated");
7979
elseif message == "ActorSpawner_ReplaceDeliveryCreationHandler" then
80-
print("replaced deliverycreationahndler")
81-
print(object)
82-
print(#object)
83-
--self.deliveryCreationHandler = object;
80+
self.deliveryCreationHandler:ReplaceHandlerWithSerialized(self.saveLoadHandler, object)
81+
ActorSpawnerFunctions.PrepareNewActor(self);
8482
elseif message == "ActorSpawner_ManualTrigger" then
8583
if object == true or not self.Deactivated then
8684
self.manualTrigger = true;
@@ -111,6 +109,9 @@ function Create(self)
111109
self.deliveryCreationHandler = require("Activities/Utility/DeliveryCreationHandler");
112110
self.deliveryCreationHandler:Initialize(self.Activity, true);
113111

112+
self.saveLoadHandler = require("Activities/Utility/SaveLoadHandler");
113+
self.saveLoadHandler:Initialize(true);
114+
114115
self.useGlobalMessaging = self:GetNumberValue("SendSpawnedMessageGlobally") == 1 and true or false;
115116
self.messageOnSpawn = self:GetStringValue("messageOnSpawn");
116117

Data/Browncoats.rte/Activities/RefineryAssaultFunctions.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,7 @@ function RefineryAssault:SetupStartingActors()
961961
if par.PresetName == "Refinery S2 Counterattacker Spawner" then
962962
print("DETECTED SPAWNER")
963963
table.insert(self.saveTable.stage2CounterAttSpawners, par);
964-
par:SendMessage("ActorSpawner_ReplaceDeliveryCreationHandler", self.deliveryCreationHandler);
964+
par:SendMessage("ActorSpawner_ReplaceDeliveryCreationHandler", self.deliveryCreationHandler:GetHandlerAsSerialized(self.saveLoadHandler));
965965
end
966966
end
967967

0 commit comments

Comments
 (0)