X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2FMain.qc;h=7f6b9ea238a18f22db08529b738e6fb7ace80da5;hp=ddff8e18fe033bdb84048936d44853d2e1a9d1c3;hb=d5276c31c0843c85c0e517e786194930ec369cd7;hpb=210c421d2b65a373b2ce7613822f5ca378743631 diff --git a/qcsrc/client/Main.qc b/qcsrc/client/Main.qc index ddff8e18fe..7f6b9ea238 100644 --- a/qcsrc/client/Main.qc +++ b/qcsrc/client/Main.qc @@ -60,6 +60,10 @@ void CSQC_Init(void) check_unacceptable_compiler_bugs(); +#ifdef WATERMARK + print("^4CSQC Build information: ", WATERMARK(), "\n"); +#endif + float i; CSQC_CheckEngine(); @@ -82,12 +86,15 @@ void CSQC_Init(void) // 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"); registercmd("+button3"); registercmd("-button3"); registercmd("+button4"); registercmd("-button4"); + registercmd("+showscores");registercmd("-showscores"); registercmd("+showaccuracy");registercmd("-showaccuracy"); #ifndef CAMERATEST @@ -105,14 +112,14 @@ void CSQC_Init(void) #ifndef CAMERATEST } #endif - registercvar("sbar_usecsqc", "1"); - registercvar("sbar_columns", "default", CVAR_SAVE); + registercvar("hud_usecsqc", "1"); + registercvar("scoreboard_columns", "default", CVAR_SAVE); gametype = 0; - // sbar_fields uses strunzone on the titles! - for(i = 0; i < MAX_SBAR_FIELDS; ++i) - sbar_title[i] = strzone("(null)"); + // hud_fields uses strunzone on the titles! + for(i = 0; i < MAX_HUD_FIELDS; ++i) + hud_title[i] = strzone("(null)"); postinit = false; @@ -123,8 +130,6 @@ void CSQC_Init(void) GetTeam(COLOR_SPECTATOR, true); // add specs first - cvar_clientsettemp("_supports_weaponpriority", "1"); - RegisterWeapons(); WaypointSprite_Load(); @@ -178,6 +183,7 @@ void CSQC_Init(void) minimapname = strzone(minimapname); WarpZone_Init(); + hud_configure_prev = -1; } // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc) @@ -207,9 +213,9 @@ void CSQC_Shutdown(void) if not(isdemo()) { if not(calledhooks & HOOK_START) - localcmd("\n_cl_hook_gamestart nop;"); + localcmd("\n_cl_hook_gamestart nop\n"); if not(calledhooks & HOOK_END) - localcmd("\ncl_hook_gameend;"); + localcmd("\ncl_hook_gameend\n"); } } @@ -321,9 +327,9 @@ void Playerchecker_Think() e.ping_packetloss = 0; e.ping_movementloss = 0; //e.gotscores = 0; // we might already have the scores... - SetTeam(e, GetPlayerColor(i)); // will not hurt; later updates come with Sbar_UpdatePlayerTeams + SetTeam(e, GetPlayerColor(i)); // will not hurt; later updates come with HUD_UpdatePlayerTeams RegisterPlayer(e); - Sbar_UpdatePlayerPos(e); + HUD_UpdatePlayerPos(e); } } } @@ -335,7 +341,7 @@ void TrueAim_Init(); void PostInit(void) { print(strcat("PostInit\n maxclients = ", ftos(maxclients), "\n")); - localcmd(strcat("\nsbar_columns_set ", cvar_string("sbar_columns"), ";\n")); + localcmd(strcat("\nscoreboard_columns_set ", cvar_string("scoreboard_columns"), ";\n")); entity playerchecker; playerchecker = spawn(); @@ -351,8 +357,8 @@ void PostInit(void) // CSQC_ConsoleCommand : Used to parse commands in the console that have been registered with the "registercmd" function // Return value should be 1 if CSQC handled the command, otherwise return 0 to have the engine handle it. float button_zoom; -void Cmd_Sbar_SetFields(float); -void Cmd_Sbar_Help(float); +void Cmd_HUD_SetFields(float); +void Cmd_HUD_Help(float); float CSQC_ConsoleCommand(string strMessage) { float argc; @@ -364,7 +370,18 @@ float CSQC_ConsoleCommand(string strMessage) local string strCmd; strCmd = argv(0); - if(strCmd == "+button4") { // zoom + if(strCmd == "hud_configure") { // config hud + cvar_set("_hud_configure", ftos(!cvar("_hud_configure"))); + return true; + } else if(strCmd == "hud_save") { // save hud config + if(argv(1) == "" || argv(2)) { + print("Usage:\n"); + print("hud_save configname (saves to hud_skinname_configname.cfg)\n"); + } + else + HUD_Panel_ExportCfg(argv(1)); + return true; + } else if(strCmd == "+button4") { // zoom // return false, because the message shall be sent to the server anyway (for demos/speccing) if(ignore_plus_zoom) { @@ -388,16 +405,16 @@ float CSQC_ConsoleCommand(string strMessage) button_attack2 = 0; return false; } else if(strCmd == "+showscores") { - sb_showscores = true; + scoreboard_showscores = true; return true; } else if(strCmd == "-showscores") { - sb_showscores = false; + scoreboard_showscores = false; return true; } else if(strCmd == "+showaccuracy") { - sb_showaccuracy = true; + scoreboard_showaccuracy = true; return true; } else if(strCmd == "-showaccuracy") { - sb_showaccuracy = false; + scoreboard_showaccuracy = false; return true; } @@ -505,9 +522,8 @@ void GameCommand(string msg) { print("Usage: cl_cmd COMMAND..., where possible commands are:\n"); print(" settemp cvar value\n"); - print(" radar\n"); - print(" sbar_columns_set ...\n"); - print(" sbar_columns_help\n"); + print(" scoreboard_columns_set ...\n"); + print(" scoreboard_columns_help\n"); GameCommand_Generic("help"); return; } @@ -523,14 +539,11 @@ void GameCommand(string msg) else if(cmd == "settemp") { cvar_clientsettemp(argv(1), argv(2)); } - else if(cmd == "radar") { - ons_showmap = !ons_showmap; + else if(cmd == "scoreboard_columns_set") { + Cmd_HUD_SetFields(argc); } - else if(cmd == "sbar_columns_set") { - Cmd_Sbar_SetFields(argc); - } - else if(cmd == "sbar_columns_help") { - Cmd_Sbar_Help(argc); + else if(cmd == "scoreboard_columns_help") { + Cmd_HUD_Help(argc); } #ifdef BLURTEST else if(cmd == "blurtest") { @@ -584,12 +597,16 @@ void GameCommand(string msg) localcmd("sv_cmd debug_shotorg\n"); } else if(cmd == "sendcvar") { - s = cvar_string(argv(1)); - if(argv(1) == "cl_weaponpriority") + // W_FixWeaponOrder will trash argv, so save what we need. + string thiscvar; + thiscvar = strzone(argv(1)); + s = cvar_string(thiscvar); + if(thiscvar == "cl_weaponpriority") s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 1); - else if(substring(argv(1), 0, 17) == "cl_weaponpriority" && strlen(argv(1)) == 18) + else if(substring(thiscvar, 0, 17) == "cl_weaponpriority" && strlen(thiscvar) == 18) s = W_FixWeaponOrder(W_NumberWeaponOrder(s), 0); - localcmd("cmd sentcvar ", argv(1), " \"", s, "\"\n"); + localcmd("cmd sentcvar ", thiscvar, " \"", s, "\"\n"); + strunzone(thiscvar); } else if(cmd == "spawn") { s = argv(1); @@ -620,6 +637,9 @@ float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary) local float bSkipKey; bSkipKey = false; + if (HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary)) + return true; + if (MapVote_InputEvent(bInputType, nPrimary, nSecondary)) return true; @@ -670,7 +690,7 @@ void Ent_ReadPlayerScore() float isNew; entity o; - // damnit -.- don't want to go change every single .sv_entnum in sbar.qc AGAIN + // damnit -.- don't want to go change every single .sv_entnum in hud.qc AGAIN // (no I've never heard of M-x replace-string, sed, or anything like that) isNew = !self.owner; // workaround for DP bug n = ReadByte()-1; @@ -716,7 +736,7 @@ void Ent_ReadPlayerScore() } if(o.sort_prev) - Sbar_UpdatePlayerPos(o); // if not registered, we cannot do this yet! + HUD_UpdatePlayerPos(o); // if not registered, we cannot do this yet! self.entremove = Ent_RemovePlayerScore; } @@ -747,7 +767,7 @@ void Ent_ReadTeamScore() o.(teamscores[i]) = ReadChar(); } - Sbar_UpdateTeamPos(o); + HUD_UpdateTeamPos(o); } void Net_Reset() @@ -761,7 +781,7 @@ void Ent_ClientData() f = ReadByte(); - sb_showscores_force = (f & 1); + scoreboard_showscores_force = (f & 1); if(f & 2) { @@ -941,14 +961,11 @@ void Gamemode_Init() precache_pic("gfx/ons-cp-blue.tga"); precache_pic("gfx/ons-frame.tga"); precache_pic("gfx/ons-frame-team.tga"); - } else if(gametype == GAME_KEYHUNT) { - precache_pic("gfx/sb_key_carrying"); - precache_pic("gfx/sb_key_carrying_outline"); } if not(isdemo()) { - localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), ";"); + localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), "\n"); calledhooks |= HOOK_START; } } @@ -995,7 +1012,7 @@ void Ent_ScoresInfo() teamscores_label[i] = strzone(ReadString()); teamscores_flags[i] = ReadByte(); } - Sbar_InitScores(); + HUD_InitScores(); Gamemode_Init(); } @@ -1005,9 +1022,14 @@ void Ent_Init() nb_pb_period = ReadByte() / 32; //Accuracy of 1/32th - hook_shotorigin_x = ReadCoord(); - hook_shotorigin_y = ReadCoord(); - hook_shotorigin_z = ReadCoord(); + hook_shotorigin[0] = decompressShotOrigin(ReadInt24_t()); + hook_shotorigin[1] = decompressShotOrigin(ReadInt24_t()); + hook_shotorigin[2] = decompressShotOrigin(ReadInt24_t()); + hook_shotorigin[3] = decompressShotOrigin(ReadInt24_t()); + electro_shotorigin[0] = decompressShotOrigin(ReadInt24_t()); + electro_shotorigin[1] = decompressShotOrigin(ReadInt24_t()); + electro_shotorigin[2] = decompressShotOrigin(ReadInt24_t()); + electro_shotorigin[3] = decompressShotOrigin(ReadInt24_t()); if(forcefog) strunzone(forcefog); @@ -1017,6 +1039,9 @@ void Ent_Init() g_weaponswitchdelay = ReadByte() / 255.0; + g_balance_grenadelauncher_secondary_bouncefactor = ReadCoord(); + g_balance_grenadelauncher_secondary_bouncestop = ReadCoord(); + if(!postinit) PostInit(); } @@ -1204,13 +1229,13 @@ void Net_ReadPingPLReport() void Net_VoteDialog(float highlight) { if(highlight) { - vote_highlighted = ReadShort(); + vote_highlighted = ReadByte(); return; } - vote_yescount = ReadShort(); - vote_nocount = ReadShort(); - vote_needed = ReadShort(); + vote_yescount = ReadByte(); + vote_nocount = ReadByte(); + vote_needed = ReadByte(); vote_active = 1; } @@ -1218,6 +1243,32 @@ 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(); + + if(complain_weapon_name) + strunzone(complain_weapon_name); + complain_weapon_name = strzone(ReadString()); + + complain_weapon_type = ReadByte(); + + complain_weapon_time = time; +} + // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer. // You must ALWAYS first acquire the temporary ID, which is sent as a byte. // Return value should be 1 if CSQC handled the temporary entity, otherwise return 0 to have the engine process the event. @@ -1244,7 +1295,7 @@ float CSQC_Parse_TempEntity() Net_ReadRace(); bHandled = true; break; - case 13: // TE_BEAM + case TE_CSQC_BEAM: Net_GrapplingHook(); bHandled = true; break; @@ -1284,6 +1335,14 @@ float CSQC_Parse_TempEntity() announce_snd = strzone(ReadString()); bHandled = true; break; + case TE_CSQC_NOTIFY: + Net_Notify(); + bHandled = true; + break; + case TE_CSQC_WEAPONCOMPLAIN: + Net_WeaponComplain(); + bHandled = true; + break; default: // No special logic for this temporary entity; return 0 so the engine can handle it bHandled = false; @@ -1298,7 +1357,7 @@ string getcommandkey(string text, string command) string keys; float n, j, k, l; - if (!sbar_showbinds) + if (!hud_showbinds) return text; keys = db_get(binddb, command); @@ -1316,7 +1375,7 @@ string getcommandkey(string text, string command) keys = strcat(keys, ", ", keynumtostring(k)); ++l; - if (sbar_showbinds_limit > 0 && sbar_showbinds_limit >= l) break; + if (hud_showbinds_limit > 0 && hud_showbinds_limit >= l) break; } } @@ -1324,12 +1383,12 @@ string getcommandkey(string text, string command) } if ("" == keys) { - if (sbar_showbinds > 1) + if (hud_showbinds > 1) return strcat(text, " (not bound)"); else return text; } - else if (sbar_showbinds > 1) + else if (hud_showbinds > 1) return strcat(text, " (", keys, ")"); else return keys;