From 9b0e00b70bcf4d26b88df1d83946d4814cf5b4ac Mon Sep 17 00:00:00 2001 From: terencehill Date: Tue, 5 Feb 2019 22:32:11 +0100 Subject: [PATCH] Implement MapInfo_Type_FromString in a sane way (without macros) --- qcsrc/common/mapinfo.qc | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/qcsrc/common/mapinfo.qc b/qcsrc/common/mapinfo.qc index 64fdff73b..307eb2773 100644 --- a/qcsrc/common/mapinfo.qc +++ b/qcsrc/common/mapinfo.qc @@ -589,25 +589,25 @@ void _MapInfo_Map_ApplyGametypeEx(string s, Gametype pWantedType, Gametype pThis } } -Gametype MapInfo_Type_FromString(string t) +Gametype MapInfo_Type_FromString(string str) { -#define deprecate(from, to) MACRO_BEGIN \ - if (t == #from) { \ - string replacement = #to; \ - if(WARN_COND) \ - LOG_WARNF("MapInfo_Type_FromString (probably %s): using deprecated name '%s'. Should use '%s'.", MapInfo_Map_bspname, t, replacement); \ - t = replacement; \ - } \ -MACRO_END - deprecate(nexball, nb); - deprecate(freezetag, ft); - deprecate(keepaway, ka); - deprecate(invasion, inv); - deprecate(assault, as); - deprecate(race, rc); - FOREACH(Gametypes, it.mdl == t, return it); + string replacement = ""; + switch (str) + { + case "nexball": replacement = "nb"; break; + case "freezetag": replacement = "ft"; break; + case "keepaway": replacement = "ka"; break; + case "invasion": replacement = "inv"; break; + case "assault": replacement = "as"; break; + case "race": replacement = "rc"; break; + } + if (replacement != "" && WARN_COND) + { + LOG_WARNF("MapInfo_Type_FromString (probably %s): using deprecated name '%s'. Should use '%s'.", MapInfo_Map_bspname, str, replacement); + str = replacement; + } + FOREACH(Gametypes, it.mdl == str, return it); return NULL; -#undef deprecate } string MapInfo_Type_Description(Gametype t) -- 2.39.2