X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2FMain.qc;h=58dfe22830b1701ff4406784e4a5a7533c723c4b;hb=85c3ccb68b2ca1d79c378ffba18f505da1b06637;hp=95a01ab0e767501ac9b257ff2b266536dbe893cf;hpb=dc3538ad5afba59f36a79011ec6997553c851c25;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 95a01ab0e..58dfe2283 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -25,17 +25,17 @@ 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; @@ -83,10 +83,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"); @@ -149,10 +145,13 @@ void CSQC_Init(void) cl_announcer_prev = strzone(autocvar_cl_announcer); } 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 +353,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 +505,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 +600,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 +615,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 +641,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)) @@ -847,13 +852,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) @@ -924,7 +942,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; @@ -945,13 +963,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, type: %d -> %d)\n"), num_for_edict(self), self.enttype, t)); Ent_Remove(); bIsNewEntity = 1; } + } + else + { + if(!bIsNewEntity) + { + print(sprintf(_("A CSQC entity appeared out of nowhere! (edict: %d, type: %d)\n"), num_for_edict(self), t)); + bIsNewEntity = 1; + } + } #endif self.enttype = t; switch(t) @@ -994,7 +1022,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. @@ -1300,36 +1328,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()); - } -} - void Net_WeaponComplain() { complain_weapon = ReadByte(); @@ -1348,10 +1346,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... @@ -1385,14 +1383,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; @@ -1405,8 +1395,23 @@ float CSQC_Parse_TempEntity() announce_snd = strzone(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: