From 6f608ed4627184e1ceed166b138320945517aaa2 Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sat, 1 Mar 2008 20:21:34 +0000 Subject: fixed so that the map rotation works like it should --- src/game/client/gc_hooks.cpp | 1 - src/game/server/gs_game.cpp | 51 +++++++++++++++++++++++++++++--------------- 2 files changed, 34 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/game/client/gc_hooks.cpp b/src/game/client/gc_hooks.cpp index e85a7e7f..e1644f36 100644 --- a/src/game/client/gc_hooks.cpp +++ b/src/game/client/gc_hooks.cpp @@ -50,7 +50,6 @@ static void load_sounds_thread(void *) extern "C" void modc_init() { static FONT_SET default_font; - int64 start = time_get(); int before = gfx_memory_usage(); diff --git a/src/game/server/gs_game.cpp b/src/game/server/gs_game.cpp index 228ae828..74bb8569 100644 --- a/src/game/server/gs_game.cpp +++ b/src/game/server/gs_game.cpp @@ -115,33 +115,50 @@ void gameobject::cyclemap() { if(!strlen(config.sv_maprotation)) return; - + // handle maprotation - char buf[512]; - const char *s = strstr(config.sv_maprotation, config.sv_map); - if(s == 0) - s = config.sv_maprotation; // restart rotation - else + const char *map_rotation = config.sv_maprotation; + const char *current_map = config.sv_map; + + int current_map_len = strlen(current_map); + const char *next_map = map_rotation; + while(*next_map) { - s += strlen(config.sv_map); // skip this map - while(is_separator(s[0])) - s++; - if(s[0] == 0) - s = config.sv_maprotation; // restart rotation - } + int wordlen = 0; + while(next_map[wordlen] && !is_separator(next_map[wordlen])) + wordlen++; - int i = 0; - for(; i < 512; i++) + if(wordlen == current_map_len && strncmp(next_map, current_map, current_map_len) == 0) + { + // map found + next_map += current_map_len; + while(*next_map && is_separator(*next_map)) + next_map++; + + break; + } + + next_map++; + } + + // restart rotation + if(next_map[0] == 0) + next_map = map_rotation; + + // cut out the next map + char buf[512]; + for(int i = 0; i < 512; i++) { - buf[i] = s[i]; - if(is_separator(s[i]) || s[i] == 0) + buf[i] = next_map[i]; + if(is_separator(next_map[i]) || next_map[i] == 0) { buf[i] = 0; break; } } - i = 0; // skip spaces + // skip spaces + int i = 0; while(is_separator(buf[i])) i++; -- cgit 1.4.1