]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/Main.qc
Merge remote branch 'origin/terencehill/newpanelhud-dom_points' into terencehill...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / Main.qc
index 3615e8a5e1a77512a70a7b0b2ce157ed05c299e9..d37a971eaebc7b3dd9ebe71b0ad58f5d2794916c 100644 (file)
@@ -140,11 +140,11 @@ void CSQC_Init(void)
        GibSplash_Precache();
        Casings_Precache();
        DamageInfo_Precache();
-       if(cvar_string("cl_announcer") != cl_announcer_prev) {
+       if(autocvar_cl_announcer != cl_announcer_prev) {
                Announcer_Precache();
                if(cl_announcer_prev)
                        strunzone(cl_announcer_prev);
-               cl_announcer_prev = strzone(cvar_string("cl_announcer"));
+               cl_announcer_prev = strzone(autocvar_cl_announcer);
        }
        Tuba_Precache();
 
@@ -167,7 +167,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)
@@ -186,7 +188,10 @@ void CSQC_Shutdown(void)
        remove(players);
        db_close(binddb);
        db_close(tempdb);
-       db_save(ClientProgsDB, "client.db");
+       if(autocvar_cl_db_saveasdump)
+               db_dump(ClientProgsDB, "client.db");
+       else
+               db_save(ClientProgsDB, "client.db");
        db_close(ClientProgsDB);
 
        cvar_clientsettemp_restore();
@@ -325,7 +330,7 @@ void TrueAim_Init();
 void PostInit(void)
 {
        print(strcat("PostInit\n    maxclients = ", ftos(maxclients), "\n"));
-       localcmd(strcat("\nscoreboard_columns_set ", cvar_string("scoreboard_columns"), ";\n"));
+       localcmd(strcat("\nscoreboard_columns_set ", autocvar_scoreboard_columns, ";\n"));
 
        entity playerchecker;
        playerchecker = spawn();
@@ -355,7 +360,7 @@ float CSQC_ConsoleCommand(string strMessage)
        strCmd = argv(0);
 
        if(strCmd == "hud_configure") { // config hud
-               cvar_set("_hud_configure", ftos(!cvar("_hud_configure")));
+               cvar_set("_hud_configure", ftos(!autocvar__hud_configure));
                return true;
        } else if(strCmd == "hud_save") { // save hud config
                if(argv(1) == "" || argv(2)) {
@@ -605,6 +610,37 @@ void GameCommand(string msg)
                e.draw = DrawDebugModel;
                e.classname = "debugmodel";
        }
+    else if(cmd == "vyes")
+    {
+        if(uid2name_dialog)
+        {
+            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");
+            vote_change = -9999;
+                       uid2name_dialog = 0;
+        }
+        else
+        {
+            localcmd("cmd vote yes\n");
+        }
+    }
+    else if(cmd == "vno")
+    {
+        if(uid2name_dialog)
+        {
+            vote_active = 0;
+            vote_prev = 0;
+            cvar_set("cl_allow_uid2name", "0");
+            vote_change = -9999;
+                       uid2name_dialog = 0;
+        }
+        else
+        {
+            localcmd("cmd vote no\n");
+        }
+    }
+
        else
        {
                print("Invalid command. For a list of supported commands, try cl_cmd help.\n");
@@ -633,6 +669,7 @@ float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary)
        if(menu_visible)
                if(menu_action(bInputType, nPrimary, nSecondary))
                        return TRUE;
+
        return bSkipKey;
 }
 
@@ -794,11 +831,6 @@ void Ent_ClientData()
        if(newspectatee_status != spectatee_status)
        {
                float i;
-               // clear the weapon accuracy stats
-               for(i = WEP_FIRST; i <= WEP_LAST; ++i) {
-                       weapon_hits[i] = 0;
-                       weapon_fired[i] = 0;
-               }
 
                // clear race stuff
                race_laptime = 0;
@@ -850,6 +882,32 @@ void Ent_RandomSeed()
        psrandom(s);
 }
 
+void Ent_ReadAccuracy(void)
+{
+       float sf, f, w, b;
+       sf = ReadInt24_t();
+       if(sf == 0)
+       {
+               for(w = 0; w <= WEP_LAST - WEP_FIRST; ++w)
+                       weapon_accuracy[w] = -1;
+               return;
+       }
+       
+       for(w = 0, f = 1; w <= WEP_LAST - WEP_FIRST; ++w, f *= 2)
+       {
+               if(sf & f)
+               {
+                       b = ReadByte();
+                       if(b == 0)
+                               weapon_accuracy[w] = -1;
+                       else if(b == 255)
+                               weapon_accuracy[w] = 1.0; // no better error handling yet, sorry
+                       else
+                               weapon_accuracy[w] = (b - 1.0) / 100.0;
+               }
+       }
+}
+
 // 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();
@@ -913,6 +971,7 @@ void(float bIsNewEntity) CSQC_Ent_Update =
                case ENT_CLIENT_HOOK: Ent_ReadHook(bIsNewEntity, ENT_CLIENT_HOOK); break;
                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;
                default:
                        error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
                        break;
@@ -944,15 +1003,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");
@@ -1033,12 +1083,16 @@ void Ent_Init()
 
        g_weaponswitchdelay = ReadByte() / 255.0;
 
-       g_balance_grenadelauncher_secondary_bouncefactor = ReadCoord();
-       g_balance_grenadelauncher_secondary_bouncestop = ReadCoord();
+       g_balance_grenadelauncher_bouncefactor = ReadCoord();
+       g_balance_grenadelauncher_bouncestop = ReadCoord();
+       g_balance_electro_secondary_bouncefactor = ReadCoord();
+       g_balance_electro_secondary_bouncestop = ReadCoord();
 
        nex_scope = !ReadByte();
        campingrifle_scope = !ReadByte();
 
+       serverflags = ReadByte();
+
        if(!postinit)
                PostInit();
 }