26#include "../../cl_shared.h"
27#include "../cl_game.h"
31#include "../../ui/ui_data.h"
39 cgi->UI_ExecuteConfunc(
"multiplayer_setTeamplay %i", isTeamPlay);
40 cgi->UI_InitStack(
"multiplayer_wait",
nullptr);
49 cgi->HUD_InitUI(
"missionoptions");
57 if (
cgi->CL_GetPlayerNum() == playerNum) {
64 cgi->HUD_DisplayMessage(
buf);
73 if (!
cgi->Cvar_GetInteger(
"sv_dedicated") &&
cgi->GAME_IsTeamEmpty())
74 cgi->GAME_AutoTeam(
"multiplayer_initial",
cgi->GAME_GetCharacterArraySize());
76 if (
cgi->Cvar_GetInteger(
"sv_teamplay")
78 cgi->UI_Popup(
_(
"Settings doesn't make sense"),
_(
"Set soldiers per player lower than soldiers per team"));
104 cgi->Cvar_SetValue(
"sv_maxteams", md->
teams);
106 cgi->Cvar_SetValue(
"sv_maxteams", 2);
110 cgi->UI_InitStack(
"multiplayer_wait",
"missionoptions");
128 cgi->UI_InitStack(
"main",
"");
131 int enemiesKilled = 0, enemiesStunned = 0;
132 const int team =
cgi->GAME_GetCurrentTeam();
137 enemiesKilled += numKilled[team][
i];
138 enemiesStunned += numStunned[team][
i];
141 cgi->LIST_AddString(&list,
va(
_(
"Enemies killed:\t%i"), enemiesKilled + enemiesStunned));
142 cgi->LIST_AddString(&list,
va(
_(
"Team survivors:\t%i"), numAlive[team]));
144 if (winner == team) {
145 cgi->UI_PushWindow(
"won");
147 cgi->UI_PushWindow(
"lost");
164 cgi->GAME_SwitchCurrentSelectedMap(step ? step : 1);
171 cgi->LIST_AddString(&gameNames,
_(gt->
name));
175 cgi->Cvar_SetValue(
"ai_singleplayeraliens", md->
maxAliens);
180 cgi->Com_Printf(
"no multiplayer map found for the current selected gametype: '%s'", gameType);
194 cgi->Com_SetGameType();
216 const char* msg =
Com_Trim(message);
218 cgi->HUD_DisplayMessage(msg);
220 cgi->UI_TextScrollEnd(
"hud_chat.allchats.chatscreen.chat");
236 {
nullptr,
nullptr,
nullptr}
255 cgi->SV_Shutdown(
"Game mode shutdown",
false);
268 cgi->UI_ExecuteConfunc(
"multiplayer_admin_panel 0");
270 cgi->UI_ExecuteConfunc(
"multiplayer_admin_panel 1");
276 if (!cvars[
i]->modified) {
280 if (!
cgi->Com_ServerState()) {
286#ifndef HARD_LINKED_CGAME
296 e.
name =
"Multiplayer mode";
297 e.
menu =
"multiplayer";
#define CGAME_HARD_LINKED_FUNCTIONS
static const cgame_import_t * cgi
static void GAME_MP_Results(dbuffer *msg, int winner, int *numSpawned, int *numAlive, int numKilled[][MAX_TEAMS], int numStunned[][MAX_TEAMS], bool nextmap)
After a mission was finished this function is called.
static void GAME_MP_UpdateGametype_f(void)
Update the map according to the gametype.
static CGAME_HARD_LINKED_FUNCTIONS void GAME_MP_StartBattlescape(bool isTeamPlay)
static void GAME_MP_NotifyEvent(event_t eventType)
static void GAME_MP_StartServer_f(void)
Starts a server and checks if the server loads a team unless he is a dedicated server admin.
static void GAME_MP_InitStartup(void)
static void GAME_MP_AddChatMessage(const char *text)
Displays a chat on the hud and add it to the chat buffer.
static linkedList_t * mp_chatMessageStack
static const mapDef_t * GAME_MP_MapInfo(int step)
static const cmdList_t multiplayerCmds[]
static void GAME_MP_RunFrame(float secondsSinceLastFrame)
static void GAME_MP_EndRoundAnnounce(int playerNum, int team)
const cgame_export_t * GetCGameAPI(const cgame_import_t *import)
static void GAME_MP_Shutdown(void)
static bool GAME_MP_HandleServerCommand(const char *command, dbuffer *msg)
Multiplayer game type headers.
void GAME_MP_CallbacksInit(const cgame_import_t *import)
void GAME_MP_CallbacksShutdown(void)
cvar_t * cl_roundtimelimit
cvar_t * rcon_client_password
cvar_t * cl_maxsoldiersperteam
cvar_t * cl_maxsoldiersperplayer
Serverlist menu callbacks headers for multiplayer.
void GAME_MP_ServerListShutdown(void)
void GAME_MP_ParseTeamInfoMessage(dbuffer *msg)
Team selection text.
void GAME_MP_ServerListInit(const cgame_import_t *import)
Serverlist management headers for multiplayer.
event_t
Possible event values.
QGL_EXTERN GLuint GLsizei GLsizei GLint GLenum GLchar * name
bool Q_strnull(const char *string)
void Q_strncpyz(char *dest, const char *src, size_t destsize)
Safe strncpy that ensures a trailing zero.
char * Com_Trim(char *s)
Removed leading and trailing whitespaces.
bool Com_sprintf(char *dest, size_t size, const char *fmt,...)
copies formatted string with buffer-size checking
const char * va(const char *format,...)
does a varargs printf into a temp buffer, so I don't need to have varargs versions of all text functi...
const mapDef_t *EXPORT * MapInfo(int step)
const char *IMPORT * Cvar_GetString(const char *varName)
void *IMPORT * LIST_GetRandom(linkedList_t *list)
const mapDef_t *IMPORT * GAME_GetCurrentSelectedMap(void)
const char *IMPORT * CL_PlayerGetName(unsigned int player)
cvar_t *IMPORT * Cvar_ForceSet(const char *varName, const char *value)
const linkedList_t *IMPORT * LIST_ContainsString(const linkedList_t *list, const char *string)
cvar_t *IMPORT * Cvar_Set(const char *varName, const char *value,...) __attribute__((format(__printf__
const char *IMPORT * Com_GetRandomMapAssemblyNameForCraft(const char *craftID)
gametype_t gts[MAX_GAMETYPES]
This is a cvar definition. Cvars can be user modified and used in our menus e.g.