collecting stages uniquely

This commit is contained in:
jenz
2026-09-12 00:31:12 +02:00
parent b9764dd61c
commit cf2d0e7e8e
@@ -1008,7 +1008,7 @@ public void FinishedRaceZone(int client)
MapStageCategoryCvars entry; MapStageCategoryCvars entry;
g_hMapStageCategoryCvars.GetArray(i, entry); g_hMapStageCategoryCvars.GetArray(i, entry);
if (!StrEqual(entry.map, g_cMapname) || entry.stage != player_stage[client]) if (!StrEqual(entry.map, g_cMapname) || entry.stage != player_stage[client])
{ {
continue; continue;
} }
categoryNumber++; categoryNumber++;
@@ -1389,7 +1389,7 @@ public void OpenStageMenu(int client, const char[] mapName)
menu.SetTitle("[UNLOZE Racetimer] Stages on: %s", mapName); menu.SetTitle("[UNLOZE Racetimer] Stages on: %s", mapName);
menu.ExitBackButton = true; menu.ExitBackButton = true;
int currentStage = -1; ArrayList stages = new ArrayList();
for (int i = 0; i < g_hMapStageCategoryCvars.Length; i++) for (int i = 0; i < g_hMapStageCategoryCvars.Length; i++)
{ {
MapStageCategoryCvars entry; MapStageCategoryCvars entry;
@@ -1398,16 +1398,24 @@ public void OpenStageMenu(int client, const char[] mapName)
{ {
continue; continue;
} }
if (entry.stage != currentStage) if (stages.FindValue(entry.stage) != -1)
{ {
currentStage = entry.stage; continue;
char info[16];
IntToString(currentStage, info, sizeof(info));
char display[32];
Format(display, sizeof(display), "Stage %i", currentStage);
menu.AddItem(info, display);
} }
stages.Push(entry.stage);
} }
stages.Sort(Sort_Ascending, Sort_Integer);
for (int i = 0; i < stages.Length; i++)
{
int stage = stages.Get(i);
char info[16];
IntToString(stage, info, sizeof(info));
char display[32];
Format(display, sizeof(display), "Stage %i", stage);
menu.AddItem(info, display);
}
delete stages;
if (menu.ItemCount == 0) if (menu.ItemCount == 0)
{ {