X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2FMain.qc;h=4fca767dfc05a3be7bd7fc0b4be68b0854aca089;hb=0c0c960639a07781363b3d681e46aa0267a93bf0;hp=3fe3bf2c2c836b05b6148ae572a2a94a9061877f;hpb=c1f3f5b21dec034b543e314edc7dcc4f2da763c2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index 3fe3bf2c2..4fca767df 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -169,7 +169,9 @@ void CSQC_Init(void) minimapname = strzone(minimapname); WarpZone_Init(); + hud_configure_prev = -1; + tab_panel = -1; } // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc) @@ -592,6 +594,7 @@ void GameCommand(string msg) vote_prev = 0; cvar_set("cl_allow_uid2name", "1"); vote_change = -9999; + uid2name_dialog = 0; } else { @@ -606,6 +609,7 @@ void GameCommand(string msg) vote_prev = 0; cvar_set("cl_allow_uid2name", "0"); vote_change = -9999; + uid2name_dialog = 0; } else { @@ -650,6 +654,10 @@ float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary) // -------------------------------------------------------------------------- // BEGIN OPTIONAL CSQC FUNCTIONS +void Ent_RemoveEntCS() +{ + entcs_receiver[self.sv_entnum] = world; +} void Ent_ReadEntCS() { InterpolateOrigin_Undo(); @@ -660,7 +668,9 @@ void Ent_ReadEntCS() self.origin_y = ReadShort(); self.origin_z = ReadShort(); self.angles_y = ReadByte() * 360.0 / 256; - self.origin_z = self.angles_x = self.angles_z = 0; + self.angles_x = self.angles_z = 0; + entcs_receiver[self.sv_entnum] = self; + self.entremove = Ent_RemoveEntCS; InterpolateOrigin_Note(); } @@ -805,6 +815,15 @@ void Ent_ClientData() race_laptime = 0; race_checkpointtime = 0; } + if (autocvar_hud_panel_healtharmor_progressbar_gfx) + { + if ( (spectatee_status == -1 && newspectatee_status > 0) //before observing, now spectating + || (spectatee_status > 0 && newspectatee_status > 0 && spectatee_status != newspectatee_status) //changed spectated player + ) + prev_p_health = -1; + else if(spectatee_status && !newspectatee_status) //before observing/spectating, now playing + prev_health = -1; + } spectatee_status = newspectatee_status; } @@ -877,6 +896,36 @@ void Ent_ReadAccuracy(void) } } +void Ent_ShowNames() +{ + float sf; + + // entity init, TODO can this be done only once somehow? + self.the_entnum = ReadByte(); // TODO: fixme to only send once somehow + self.draw2d = Draw_ShowNames; + + //self.movetype = MOVETYPE_FLY; // movetype needed so we can traceline? + //self.mins = '-20 -20 -24'; + //self.maxs = '20 20 45'; + self.classname = "shownames_tag"; + + sf = ReadByte(); + + if(sf & 1) + { + self.healthvalue = ReadByte() * 10; + } + if(sf & 2) + { + self.armorvalue = ReadByte() * 10; + } + + if(sf & 128) // same team + self.sameteam = TRUE; + else + self.sameteam = FALSE; +} + // CSQC_Ent_Update : Called every frame that the server has indicated an update to the SSQC / CSQC entity has occured. // The only parameter reflects if the entity is "new" to the client, meaning it just came into the client's PVS. void Ent_RadarLink(); @@ -943,6 +992,7 @@ void(float bIsNewEntity) CSQC_Ent_Update = case ENT_CLIENT_LGBEAM: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_LGBEAM); break; case ENT_CLIENT_GAUNTLET: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_GAUNTLET); break; case ENT_CLIENT_ACCURACY: Ent_ReadAccuracy(); break; + case ENT_CLIENT_SHOWNAMES: Ent_ShowNames(); break; default: //error(strcat(_("unknown entity type in CSQC_Ent_Update: %d\n"), self.enttype)); error(sprintf(_("Unknown entity type in CSQC_Ent_Update (enttype: %d, edict: %d, classname: %s)\n"), self.enttype, num_for_edict(self), self.classname)); @@ -975,15 +1025,6 @@ void CSQC_Ent_Remove() void Gamemode_Init() { - if(gametype == GAME_ONSLAUGHT) { - print(strcat("Using ", minimapname, " as minimap.\n")); - precache_pic("gfx/ons-cp-neutral.tga"); - precache_pic("gfx/ons-cp-red.tga"); - precache_pic("gfx/ons-cp-blue.tga"); - precache_pic("gfx/ons-frame.tga"); - precache_pic("gfx/ons-frame-team.tga"); - } - if not(isdemo()) { localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), "\n"); @@ -1392,7 +1433,7 @@ string getcommandkey(string text, string command) string keys; float n, j, k, l; - if (!hud_showbinds) + if (!autocvar_hud_showbinds) return text; keys = db_get(binddb, command); @@ -1410,7 +1451,7 @@ string getcommandkey(string text, string command) keys = strcat(keys, ", ", keynumtostring(k)); ++l; - if (hud_showbinds_limit > 0 && hud_showbinds_limit >= l) break; + if (autocvar_hud_showbinds_limit > 0 && autocvar_hud_showbinds_limit >= l) break; } } @@ -1418,12 +1459,12 @@ string getcommandkey(string text, string command) } if ("" == keys) { - if (hud_showbinds > 1) + if (autocvar_hud_showbinds > 1) return sprintf(_("%s (not bound)"), text); else return text; } - else if (hud_showbinds > 1) + else if (autocvar_hud_showbinds > 1) return sprintf(_("%s (%s)"), text, keys); else return keys;