/* * G_ExitLevel */ static void G_ExitLevel(void) { gi.AddCommandString(va("map %s\n", g_level.changemap)); g_level.changemap = NULL; g_level.intermission_time = 0; G_EndClientFrames(); }
/* * G_CheckVote */ static void G_CheckVote(void) { int i, count = 0; if (!g_voting->value) return; if (g_level.vote_time == 0) return; if (g_level.time - g_level.vote_time > MAX_VOTE_TIME) { gi.BroadcastPrint(PRINT_HIGH, "Vote \"%s\" expired\n", g_level.vote_cmd); G_ResetVote(); return; } for (i = 0; i < sv_max_clients->integer; i++) { if (!g_game.edicts[i + 1].in_use) continue; count++; } if (g_level.votes[VOTE_YES] >= count * VOTE_MAJORITY) { // vote passed gi.BroadcastPrint(PRINT_HIGH, "Vote \"%s\" passed\n", g_level.vote_cmd); if (!strncmp(g_level.vote_cmd, "map ", 4)) { // special case for map G_BeginIntermission(g_level.vote_cmd + 4); } else if (!strcmp(g_level.vote_cmd, "restart")) { // and restart G_RestartGame(false); } else if (!strncmp(g_level.vote_cmd, "mute ", 5)) { // and mute G_MuteClient(g_level.vote_cmd + 5, true); } else if (!strncmp(g_level.vote_cmd, "unmute ", 7)) { G_MuteClient(g_level.vote_cmd + 7, false); } else { // general case, just execute the command gi.AddCommandString(g_level.vote_cmd); } G_ResetVote(); } else if (g_level.votes[VOTE_NO] >= count * VOTE_MAJORITY) { // vote failed gi.BroadcastPrint(PRINT_HIGH, "Vote \"%s\" failed\n", g_level.vote_cmd); G_ResetVote(); } }