X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2FMain.qc;h=326bae22b5118a7be4a9566ae83dda022167560a;hb=d51982782510331bbe81069d3a9f3049a2bbf268;hp=d4d1948d4cd88b5413e57cac46a64d2f3e61de4f;hpb=a70a5f90e06701ab9631f993c59bd65b0072cc37;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index d4d1948d4..326bae22b 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -25,24 +25,23 @@ void cvar_clientsettemp_restore() cvar_set(e.netname, e.message); } -void() menu_show_error = +void menu_show_error() { drawstring('0 200 0', _("ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"), '8 8 0', '1 0 0', 1, 0); -}; +} // CSQC_Init : Called every time the CSQC code is initialized (essentially at map load) // Useful for precaching things -void() menu_sub_null = +void menu_sub_null() { -}; +} #ifdef USE_FTE float __engine_check; #endif string forcefog; -string cl_announcer_prev; void WaypointSprite_Load(); void CSQC_Init(void) { @@ -83,10 +82,6 @@ void CSQC_Init(void) break; maxclients = i; - //ctf_temp_1 = ""; - // localcmd("alias order \"cmd order $*\""); enable if ctf-command thingy is used - //registercmd("ctf_menu"); - registercmd("ons_map"); registercmd("hud_configure"); registercmd("hud_save"); //registercmd("menu_action"); @@ -141,18 +136,15 @@ void CSQC_Init(void) DamageInfo_Precache(); Vehicles_Precache(); turrets_precache(); - - if(autocvar_cl_announcer != cl_announcer_prev) { - Announcer_Precache(); - if(cl_announcer_prev) - strunzone(cl_announcer_prev); - cl_announcer_prev = strzone(autocvar_cl_announcer); - } + Announcer_Precache(); Tuba_Precache(); - - if(autocvar_cl_reticle_item_normal) precache_pic("gfx/reticle_normal"); - if(autocvar_cl_reticle_item_nex) precache_pic("gfx/reticle_nex"); - + + if(autocvar_cl_reticle) + { + if(autocvar_cl_reticle_item_normal) { precache_pic("gfx/reticle_normal"); } + if(autocvar_cl_reticle_item_nex) { precache_pic("gfx/reticle_nex"); } + } + get_mi_min_max_texcoords(1); // try the CLEVER way first minimapname = strcat("gfx/", mi_shortname, "_radar.tga"); shortmapname = mi_shortname; @@ -354,11 +346,10 @@ float CSQC_ConsoleCommand(string strMessage) { float argc; // Tokenize String - //argc = tokenize(strMessage); argc = tokenize_console(strMessage); // Acquire Command - local string strCmd; + string strCmd; strCmd = argv(0); if(strCmd == "hud_configure") { // config hud @@ -507,6 +498,13 @@ void GameCommand(string msg) if(cmd == "mv_download") { Cmd_MapVote_MapDownload(argc); } + else if(cmd == "hud_panel_radar_maximized") + { + if(argc == 1) + hud_panel_radar_maximized = !hud_panel_radar_maximized; + else + hud_panel_radar_maximized = (stof(argv(1)) != 0); + } else if(cmd == "settemp") { cvar_clientsettemp(argv(1), argv(2)); } @@ -595,7 +593,7 @@ void GameCommand(string msg) { vote_active = 0; // force the panel to disappear right as we have selected the value (to prevent it from fading out in the normal vote panel pos) vote_prev = 0; - cvar_set("cl_allow_uid2name", "1"); + localcmd("setreport cl_allow_uid2name 1\n"); vote_change = -9999; uid2name_dialog = 0; } @@ -610,7 +608,7 @@ void GameCommand(string msg) { vote_active = 0; vote_prev = 0; - cvar_set("cl_allow_uid2name", "0"); + localcmd("setreport cl_allow_uid2name 0\n"); vote_change = -9999; uid2name_dialog = 0; } @@ -636,7 +634,7 @@ void GameCommand(string msg) // In the case of mouse input, nPrimary is xdelta, nSecondary is ydelta. float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary) { - local float bSkipKey; + float bSkipKey; bSkipKey = false; if (HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary)) @@ -827,8 +825,6 @@ void Ent_ClientData() if(newspectatee_status != spectatee_status) { - float i; - // clear race stuff race_laptime = 0; race_checkpointtime = 0; @@ -849,13 +845,26 @@ void Ent_Nagger() { float nags, i, j, b, f; - nags = ReadByte(); + nags = ReadByte(); // NAGS NAGS NAGS NAGS NAGS NAGS NADZ NAGS NAGS NAGS if(!(nags & 4)) { if(vote_called_vote) strunzone(vote_called_vote); vote_called_vote = string_null; + vote_active = 0; + } + else + { + vote_active = 1; + } + + if(nags & 64) + { + vote_yescount = ReadByte(); + vote_nocount = ReadByte(); + vote_needed = ReadByte(); + vote_highlighted = ReadChar(); } if(nags & 128) @@ -926,7 +935,7 @@ void Ent_ReadAccuracy(void) void Ent_RadarLink(); void Ent_Init(); void Ent_ScoresInfo(); -void(float bIsNewEntity) CSQC_Ent_Update = +void CSQC_Ent_Update(float bIsNewEntity) { float t; float savetime; @@ -947,13 +956,23 @@ void(float bIsNewEntity) CSQC_Ent_Update = #ifdef DP_CSQC_ENTITY_REMOVE_IS_B0RKED if(self.enttype) - if(t != self.enttype) + { + if(t != self.enttype || bIsNewEntity) { //print(_("A CSQC entity changed its type!\n")); - print(sprintf(_("A CSQC entity changed its type! (edict: %d, classname: %s)\n"), num_for_edict(self), self.classname)); + print(sprintf(_("A CSQC entity changed its type! (edict: %d, server: %d, type: %d -> %d)\n"), num_for_edict(self), self.entnum, self.enttype, t)); Ent_Remove(); bIsNewEntity = 1; } + } + else + { + if(!bIsNewEntity) + { + print(sprintf(_("A CSQC entity appeared out of nowhere! (edict: %d, server: %d, type: %d)\n"), num_for_edict(self), self.entnum, t)); + bIsNewEntity = 1; + } + } #endif self.enttype = t; switch(t) @@ -996,7 +1015,7 @@ void(float bIsNewEntity) CSQC_Ent_Update = } time = savetime; -}; +} // Destructor, but does NOT deallocate the entity by calling remove(). Also // used when an entity changes its type. For an entity that someone interacts // with others, make sure it can no longer do so. @@ -1302,47 +1321,6 @@ void Net_ReadPingPLReport() playerslots[e].ping_movementloss = ml / 255.0; } -void Net_VoteDialog(float highlight) { - if(highlight) { - vote_highlighted = ReadByte(); - return; - } - - vote_yescount = ReadByte(); - vote_nocount = ReadByte(); - vote_needed = ReadByte(); - vote_active = 1; -} - -void Net_VoteDialogReset() { - vote_active = 0; -} - -void Net_Notify() { - float type; - type = ReadByte(); - - if(type == CSQC_KILLNOTIFY) - { - HUD_KillNotify(ReadString(), ReadString(), ReadString(), ReadShort(), ReadByte()); - } - else if(type == CSQC_CENTERPRINT) - { - HUD_Centerprint(ReadString(), ReadString(), ReadShort(), ReadByte()); - } - else if(type == CSQC_CENTERPRINT_GENERIC) - { - float id; - string s; - id = ReadByte(); - s = ReadString(); - if (id != 0 && s != "") - centerprint_generic(id, s, ReadByte(), ReadByte()); - else - centerprint_generic(id, s, 0, 0); - } -} - void Net_WeaponComplain() { complain_weapon = ReadByte(); @@ -1361,10 +1339,10 @@ void Net_WeaponComplain() { // Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event. float CSQC_Parse_TempEntity() { - local float bHandled; + float bHandled; bHandled = true; // Acquire TE ID - local float nTEID; + float nTEID; nTEID = ReadByte(); // NOTE: Could just do return instead of break... @@ -1398,14 +1376,6 @@ float CSQC_Parse_TempEntity() Net_TeamNagger(); bHandled = true; break; - case TE_CSQC_VOTE: - Net_VoteDialog(ReadByte()); - bHandled = true; - break; - case TE_CSQC_VOTERESET: - Net_VoteDialogReset(); - bHandled = true; - break; case TE_CSQC_LIGHTNINGARC: Net_ReadLightningarc(); bHandled = true; @@ -1415,21 +1385,36 @@ float CSQC_Parse_TempEntity() bHandled = true; break; case TE_CSQC_ANNOUNCE: - announce_snd = strzone(ReadString()); + Announcer_Play(ReadString()); bHandled = true; break; - case TE_CSQC_NOTIFY: - Net_Notify(); + case TE_CSQC_KILLNOTIFY: + HUD_KillNotify(ReadString(), ReadString(), ReadString(), ReadShort(), ReadByte()); + bHandled = true; + break; + case TE_CSQC_KILLCENTERPRINT: + HUD_KillCenterprint(ReadString(), ReadString(), ReadShort(), ReadByte()); + bHandled = true; + break; + case TE_CSQC_CENTERPRINT_GENERIC: + float id; + string s; + id = ReadByte(); + s = ReadString(); + if (id != 0 && s != "") + centerprint_generic(id, s, ReadByte(), ReadByte()); + else + centerprint_generic(id, s, 0, 0); bHandled = true; break; case TE_CSQC_WEAPONCOMPLAIN: Net_WeaponComplain(); bHandled = true; break; - case TE_CSQC_VEHICLESETUP: - Net_VehicleSetup(); - bHandled = true; - break; + case TE_CSQC_VEHICLESETUP: + Net_VehicleSetup(); + bHandled = true; + break; default: // No special logic for this temporary entity; return 0 so the engine can handle it bHandled = false;