diff --git a/sources/GameModes/GameMode.uc b/sources/GameModes/GameMode.uc index 7c869be..6e37490 100644 --- a/sources/GameModes/GameMode.uc +++ b/sources/GameModes/GameMode.uc @@ -167,13 +167,13 @@ public function ReportBadOptions() } /** - * @return Server options as key-value pairs in an `HashTable`. + * @return Server options as key-value pairs in an `AssociativeArray`. */ -public function HashTable GetOptions() +public function AssociativeArray GetOptions() { - local int i; - local HashTable result; - result = _.collections.EmptyHashTable(); + local int i; + local AssociativeArray result; + result = _.collections.EmptyAssociativeArray(); for (i = 0; i < option.length; i += 1) { if (!ValidateServerURLName(option[i].key)) continue; diff --git a/sources/Packages.uc b/sources/Packages.uc index e87d703..cfe9ce4 100644 --- a/sources/Packages.uc +++ b/sources/Packages.uc @@ -81,7 +81,6 @@ private simulated function InitializeClient() return; } default.selfReference = self; - // TODO: Swap these around after dealing with aliases class'ClientLevelCore'.static.CreateLevelCore(self); _ = class'Global'.static.GetInstance(); } @@ -104,7 +103,6 @@ private function InitializeServer() } default.selfReference = self; // Launch and setup core Acedia - // TODO: Swap these around after dealing with aliases serverCore = class'ServerLevelCore'.static.CreateLevelCore(self); _ = class'Global'.static.GetInstance(); _server = class'ServerGlobal'.static.GetInstance(); @@ -150,7 +148,9 @@ function ServerTraveling(string URL, bool bItems) votingAdapter = none; } default.selfReference = none; - _.environment.ShutDown(); + _.environment.DisableAllFeatures(); + class'UnrealService'.static.Require().Destroy(); + class'ServerLevelCore'.static.GetInstance().Destroy(); if (nextMutator != none) { nextMutator.ServerTraveling(URL, bItems); } @@ -224,8 +224,8 @@ private function EnableFeatures(array features) // Fetches and sets up signals that `Mutator` needs to provide private function SetupMutatorSignals() { - local ServerUnrealService service; - service = ServerUnrealService(class'ServerUnrealService'.static.Require()); + local UnrealService service; + service = UnrealService(class'UnrealService'.static.Require()); onMutateSignal = Mutator_OnMutate_Signal( service.GetSignal(class'Mutator_OnMutate_Signal')); onModifyLoginSignal = Mutator_OnModifyLogin_Signal( diff --git a/sources/VotingHandlerAdapter.uc b/sources/VotingHandlerAdapter.uc index bb73010..04be56f 100644 --- a/sources/VotingHandlerAdapter.uc +++ b/sources/VotingHandlerAdapter.uc @@ -170,18 +170,19 @@ private function string BuildOptionsString(GameMode gameMode) local string result; local string nextKey, nextValue; local CollectionIterator iter; - local HashTable options; + local AssociativeArray options; options = gameMode.GetOptions(); for (iter = options.Iterate(); !iter.HasFinished(); iter.Next()) { - nextKey = _.text.ToString(Text(iter.GetKey())); - nextValue = _.text.ToString(Text(iter.Get())); + nextKey = Text(iter.GetKey()).ToString(); + nextValue = Text(iter.Get()).ToString(); if (optionWasAdded) { result $= "?"; } result $= (nextKey $ "=" $ nextValue); optionWasAdded = true; } + options.Empty(true); options.FreeSelf(); iter.FreeSelf(); return result;