From b2afd4434317248e95c65ea4b1ccfa8ad35c8eff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eke=20P=C3=A9ter?= Date: Wed, 7 Aug 2024 20:38:11 +0200 Subject: [PATCH] Prioritize MVE specific packages for download --- MVES/Classes/MV_MainExtension.uc | 15 --------- MVES/Classes/MV_Result.uc | 46 ++++++++++++++++++++++------ MVES/Classes/MapVote.uc | 7 ++--- TestMVE/Classes/TestAll.uc | 2 +- TestMVE/Classes/TestMapVoteResult.uc | 19 ++++++++++-- 5 files changed, 56 insertions(+), 33 deletions(-) diff --git a/MVES/Classes/MV_MainExtension.uc b/MVES/Classes/MV_MainExtension.uc index 51c627e..8d1a783 100644 --- a/MVES/Classes/MV_MainExtension.uc +++ b/MVES/Classes/MV_MainExtension.uc @@ -160,21 +160,6 @@ function TimedMessage( int ID) } } -function string GenerateSPList( string NewPacks) -{ - local string Result; - local int i; - - if ( (MapVote(Outer) == None) || (MapVote(Outer).MainServerPackages == "") ) - return ""; - - Result = MapVote(Outer).MainServerPackages; - Result = Left( Result, Len(Result) -1 ); - while ( NewPacks != "" ) - Result = Result$","$chr(34)$static.NextParameter(NewPacks,",")$chr(34); - return Result$")"; -} - function MLC_Rules( Info MapListCacheActor) { local MV_MapList MapList; diff --git a/MVES/Classes/MV_Result.uc b/MVES/Classes/MV_Result.uc index 9d0858e..2755f8e 100644 --- a/MVES/Classes/MV_Result.uc +++ b/MVES/Classes/MV_Result.uc @@ -46,9 +46,16 @@ static function MV_Result Create(optional string map, optional int gameIdx) return object; } -function bool AddPackages(string packageNameList) +function AddPackages(string packageNameList) { local string packageName; + + // unwrap decorations + if ( InStr(packageNameList, "(") == 0 ) + { + packageNameList = Mid(packageNameList, 1, Len(packageNameList) - 2); + } + while ( class'MV_Parser'.static.TrySplit(packageNameList, ",", packageName, packageNameList) ) { AddPackage(packageName); @@ -58,12 +65,19 @@ function bool AddPackages(string packageNameList) function bool AddPackage(string packageName) { local int i; + + // unwrap decorations + if ( InStr(packageName, "\"") == 0 ) + { + packageName = Mid(packageName, 1, Len(packageName) - 2); + } + if ( i >= ServerPackageMaxCount ) { Err("Cannot add `"$packageName$"`, max server package count reached!"); return False; } - for ( i = 0; i < ServerPackageCount; i ++ ) + for ( i = 0; i < ServerPackageCount; i++ ) { if ( ServerPackages[i] == packageName ) { @@ -71,7 +85,7 @@ function bool AddPackage(string packageName) } } ServerPackages[ServerPackageCount] = packageName; - ServerPackageCount ++ ; + ServerPackageCount++; return True; } @@ -80,7 +94,7 @@ function string GetPackagesStringList() local string separator, result; local int i; separator = ""; - for ( i = 0; i < ServerPackageCount; i ++ ) + for ( i = 0; i < ServerPackageCount; i++ ) { result = result$separator$ServerPackages[i]; separator = ","; @@ -88,6 +102,20 @@ function string GetPackagesStringList() return result; } +function string GetWrappedPackages() +{ + local string separator, result; + local int i; + separator = "(\""; + for ( i = 0; i < ServerPackageCount; i++ ) + { + result = result$separator$ServerPackages[i]; + separator = "\",\""; + } + return result$"\")"; +} + + function bool AddMutators(string list) { local string mutator; @@ -106,7 +134,7 @@ function bool AddMutator(string mutator) Err("Cannot add `"$mutator$"`, max mutator count reached!"); return False; } - for ( i = 0; i < MutatorCount; i ++ ) + for ( i = 0; i < MutatorCount; i++ ) { if ( Mutators[i] == mutator ) { @@ -114,7 +142,7 @@ function bool AddMutator(string mutator) } } Mutators[MutatorCount] = mutator; - MutatorCount ++ ; + MutatorCount++; return True; } @@ -136,7 +164,7 @@ function bool AddActor(string actor) Err("Cannot add `"$actor$"`, max server actor count reached!"); return False; } - for ( i = 0; i < ActorCount; i ++ ) + for ( i = 0; i < ActorCount; i++ ) { if ( Actors[i] == actor ) { @@ -144,7 +172,7 @@ function bool AddActor(string actor) } } Actors[ActorCount] = actor; - ActorCount ++ ; + ActorCount++; return True; } @@ -186,7 +214,7 @@ function bool UpdateSingleGameSetting(string key, string value) } SettingsKey[SettingsCount] = key; SettingsValue[SettingsCount] = value; - SettingsCount ++ ; + SettingsCount++; return True; } diff --git a/MVES/Classes/MapVote.uc b/MVES/Classes/MapVote.uc index bb825d0..600554f 100644 --- a/MVES/Classes/MapVote.uc +++ b/MVES/Classes/MapVote.uc @@ -1593,11 +1593,8 @@ final function bool SetupTravelString( string mapStringWithIdx ) // add gametype packages Result.AddPackages(CustomGame[Result.GameIndex].Packages); // concats main packages - spk = Extension.GenerateSPList(Result.GetPackagesStringList()); - if ( spk == "" ) - { - spk = MainServerPackages; - } + Result.AddPackages(MainServerPackages); + spk = Result.GetWrappedPackages(); if ( InStr( spk, "<") >= 0 ) { spk = ParseAliases( spk); diff --git a/TestMVE/Classes/TestAll.uc b/TestMVE/Classes/TestAll.uc index 1cdfa6d..e561088 100644 --- a/TestMVE/Classes/TestAll.uc +++ b/TestMVE/Classes/TestAll.uc @@ -3,9 +3,9 @@ class TestAll extends TestClass; function TestMain() { TestChild(class'TestSort'); - TestChild(class'TestMapVoteResult'); TestChild(class'TestMapTags'); TestChild(class'TestMapListEncoder'); TestChild(class'TestMvAliases'); TestChild(class'TestMapHistory'); + TestChild(class'TestMapVoteResult'); } diff --git a/TestMVE/Classes/TestMapVoteResult.uc b/TestMVE/Classes/TestMapVoteResult.uc index 01e6b02..fd764c1 100644 --- a/TestMVE/Classes/TestMapVoteResult.uc +++ b/TestMVE/Classes/TestMapVoteResult.uc @@ -11,6 +11,7 @@ function TestMain() TestIntProperties(); TestActors(); TestSettings(); + TestWrappedPackages(); } function TestPackages() @@ -24,6 +25,16 @@ function TestPackages() AssertEquals(s.GetPackagesStringList(), "Package1,Package2,Package3", "can get string list"); } +function TestWrappedPackages() +{ + Describe("MV_Result accepts packages wrapped in paren"); + s.AddPackages("(\"SoldierSkins\",\"CommandoSkins\")"); + AssertEquals(s.GetPackagesStringList(), "SoldierSkins,CommandoSkins", "can get string list"); + s.AddPackages("(\"MVE2h\",\"CommandoSkins\")"); + AssertEquals(s.GetPackagesStringList(), "SoldierSkins,CommandoSkins,MVE2h", "appends additional"); + AssertEquals(s.GetWrappedPackages(), "(\"SoldierSkins\",\"CommandoSkins\",\"MVE2h\")", "can wrap packages"); +} + function TestMapLoading() { @@ -85,7 +96,8 @@ function TestStringProperties() AssertEquals(s.FilterCode, "dmlist", "empty string does not change FilterCode"); } -function TestIntProperties(){ +function TestIntProperties() +{ Describe("int properties"); s.SetTickRate(75); AssertEquals(s.TickRate, 75, "sets tickrate"); @@ -93,7 +105,8 @@ function TestIntProperties(){ AssertEquals(s.TickRate, 75, "previous tickrate is kept when settikng to 0"); } -function TestSettings(){ +function TestSettings() +{ Describe("game settings"); s.AddGameSettings("FragLimit=30,TimeLimit=0,GameSpeed=1.00,MinPlayers=2,bUseTranslocator=False,GameName=Instagib Deathmatch"); AssertEquals(s.SettingsCount, 6, "parses settings correctly"); @@ -114,6 +127,6 @@ function TestSettings(){ function Describe(string subject) { - super.Describe(subject); + Super.Describe(subject); s = new class'MV_Result'; } \ No newline at end of file