From: bones_was_here Date: Mon, 23 Oct 2023 16:37:48 +0000 (+1000) Subject: g_maplist: update with `gametype` command, as well as GUI gametype voting X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=0a56f137a2821149693e7acafc28ff4e67b3fd60;p=xonotic%2Fxonotic-data.pk3dir.git g_maplist: update with `gametype` command, as well as GUI gametype voting This fixes the need to manually set g_maplist to \"\" after running the gametype command on a votable server. This is consistent with GUI gametype voting (sv_vote_gametype 1) behaviour and shares its code to reduce duplication. --- diff --git a/qcsrc/server/command/sv_cmd.qc b/qcsrc/server/command/sv_cmd.qc index f05edfcb5..8cd6125ab 100644 --- a/qcsrc/server/command/sv_cmd.qc +++ b/qcsrc/server/command/sv_cmd.qc @@ -774,30 +774,12 @@ void GameCommand_gametype(int request, int argc) if (argv(1) != "") { string s = argv(1); - Gametype t = MapInfo_Type_FromString(s, false, false), tsave = MapInfo_CurrentGametype(); + Gametype t = MapInfo_Type_FromString(s, false, false); if (t) - { - MapInfo_SwitchGameType(t); - MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0); - if (MapInfo_count > 0) - { - // update lsmaps in case the gametype changed, this way people can easily list maps for it - if (lsmaps_reply != "") strunzone(lsmaps_reply); - lsmaps_reply = strzone(getlsmaps()); - bprint("Game type successfully switched to ", s, "\n"); - } - else - { - bprint("Cannot use this game type: no map for it found\n"); - MapInfo_SwitchGameType(tsave); - MapInfo_FilterGametype(MapInfo_CurrentGametype(), MapInfo_CurrentFeatures(), MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags(), 0); - } - } + GameTypeVote_SetGametype(t); else - { bprint("Failed to switch to ", s, ": this game type does not exist!\n"); - } return; } diff --git a/qcsrc/server/mapvoting.qc b/qcsrc/server/mapvoting.qc index 051968eb0..c3ddeeea3 100644 --- a/qcsrc/server/mapvoting.qc +++ b/qcsrc/server/mapvoting.qc @@ -772,8 +772,6 @@ bool GameTypeVote_SetGametype(Gametype type) return false; } - //localcmd("gametype ", MapInfo_Type_ToString(type), "\n"); - cvar_set("g_maplist", MapInfo_ListAllowedMaps(type, MapInfo_RequiredFlags(), MapInfo_ForbiddenFlags()) ); if(autocvar_g_maplist_shuffle) ShuffleMaplist();