]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/client/Main.qc
Make particles depend on player scale even more
[voretournament/voretournament.git] / data / qcsrc / client / Main.qc
index 245323c387c448124359578ffcaec37b64a176b9..b3aeb438617715a115e8a98ca6539804d230f692 100644 (file)
@@ -68,7 +68,7 @@ void CSQC_Init(void)
        ClientProgsDB = db_load("client.db");\r
        compressShortVector_init();\r
 \r
-       drawfont = 0;\r
+       drawfont = FONT_USER+1;\r
        menu_visible = FALSE;\r
        menu_show = menu_show_error;\r
        menu_action = menu_sub_null;\r
@@ -88,6 +88,8 @@ void CSQC_Init(void)
        registercmd("-button3");\r
        registercmd("+button4");\r
        registercmd("-button4");\r
+       registercmd("+button6");\r
+       registercmd("-button6");\r
        registercmd("+showaccuracy");registercmd("-showaccuracy");\r
 \r
 #ifndef CAMERATEST\r
@@ -116,7 +118,7 @@ void CSQC_Init(void)
 \r
        postinit = false;\r
 \r
-       calledgrabbers = 0;\r
+       calledhooks = 0;\r
 \r
        teams = Sort_Spawn();\r
        players = Sort_Spawn();\r
@@ -141,6 +143,9 @@ void CSQC_Init(void)
                cl_announcer_prev = strzone(cvar_string("cl_announcer"));\r
        }\r
 \r
+       if(cvar("cl_reticle_item_normal")) precache_pic("gfx/reticle_normal");\r
+       if(cvar("cl_reticle_item_nex")) precache_pic("gfx/reticle_nex");\r
+\r
 #ifdef UID\r
        {\r
                // find the user ID\r
@@ -159,24 +164,29 @@ void CSQC_Init(void)
 #endif\r
 \r
        get_mi_min_max_texcoords(1); // try the CLEVER way first\r
-       minimapname = strcat("gfx/", mi_shortname, "_radar.tga");\r
+       minimapname = strcat("gfx/radar/", mi_shortname, "_radar.tga");\r
        shortmapname = mi_shortname;\r
 \r
        if(precache_pic(minimapname) == "")\r
        {\r
                // but maybe we have a non-clever minimap\r
-               minimapname = strcat("gfx/", mi_shortname, "_mini.tga");\r
+               minimapname = strcat("gfx/radar/", mi_shortname, "_mini.tga");\r
                if(precache_pic(minimapname) == "")\r
                        minimapname = ""; // FAIL\r
                else\r
                        get_mi_min_max_texcoords(0); // load new texcoords\r
        }\r
+       precache_pic("gfx/hud/bg_radar.tga");\r
+       precache_pic("gfx/hud/fg_radar.tga");\r
+       precache_pic("gfx/hud/fg_radar_team.tga");\r
 \r
        mi_center = (mi_min + mi_max) * 0.5;\r
        mi_scale = mi_max - mi_min;\r
        minimapname = strzone(minimapname);\r
 \r
        WarpZone_Init();\r
+\r
+       draw_currentSkin = strzone(strcat("gfx/menu/", cvar_string("menu_skin")));\r
 }\r
 \r
 // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)\r
@@ -203,12 +213,24 @@ void CSQC_Shutdown(void)
        if(camera_active)\r
                cvar_set("chase_active",ftos(chase_active_backup));\r
 \r
+       // unset the event chasecam's chase_active\r
+       if(cvar("chase_active") < 0)\r
+               cvar_set("chase_active", "0");\r
+\r
        if not(isdemo())\r
        {\r
-               if not(calledgrabbers & GRABBER_START)\r
+               if not(calledhooks & HOOK_START)\r
+               {\r
                        localcmd("\n_cl_hook_gamestart nop;");\r
-               if not(calledgrabbers & GRABBER_END)\r
+                       if(g_campaign) // this is a server cvar used in the client code, but g_campaign is always local, so it should be safe\r
+                               localcmd("\n_cl_hook_campaign_gamestart nop;");\r
+               }\r
+               if not(calledhooks & HOOK_END)\r
+               {\r
                        localcmd("\ncl_hook_gameend;");\r
+                       if(g_campaign)\r
+                               localcmd("\ncl_hook_campaign_gameend;");\r
+               }\r
        }\r
 }\r
 \r
@@ -387,6 +409,12 @@ float CSQC_ConsoleCommand(string strMessage)
        } else if(strCmd == "-button3") { // secondary\r
                button_attack2 = 0;\r
                return false;\r
+       } else if(strCmd == "+button6") { // secondary\r
+               button_jetpack = 1;\r
+               return false;\r
+       } else if(strCmd == "-button6") { // secondary\r
+               button_jetpack = 0;\r
+               return false;\r
        } else if(strCmd == "+showscores") {\r
                sb_showscores = true;\r
                return true;\r
@@ -524,7 +552,7 @@ void GameCommand(string msg)
                cvar_clientsettemp(argv(1), argv(2));\r
        }\r
        else if(cmd == "radar") {\r
-               ons_showmap = !ons_showmap;\r
+               showmap = !showmap;\r
        }\r
        else if(cmd == "sbar_columns_set") {\r
                Cmd_Sbar_SetFields(argc);\r
@@ -634,17 +662,40 @@ float CSQC_InputEvent(float bInputType, float nPrimary, float nSecondary)
 \r
 // --------------------------------------------------------------------------\r
 // BEGIN OPTIONAL CSQC FUNCTIONS\r
+void Ent_RemoveEntCS()\r
+{\r
+       entcs_receiver[self.sv_entnum] = world;\r
+}\r
 void Ent_ReadEntCS()\r
 {\r
+       float sf;\r
        InterpolateOrigin_Undo();\r
 \r
        self.classname = "entcs_receiver";\r
-       self.sv_entnum = ReadByte() - 1;\r
-       self.origin_x = ReadShort();\r
-       self.origin_y = ReadShort();\r
-       self.origin_z = ReadShort();\r
-       self.angles_y = ReadByte() * 360.0 / 256;\r
-       self.origin_z = self.angles_x = self.angles_z = 0;\r
+       sf = ReadByte();\r
+\r
+       if(sf & 1)\r
+               self.sv_entnum = ReadByte();\r
+       if(sf & 2)\r
+       {\r
+               self.origin_x = ReadShort();\r
+               self.origin_y = ReadShort();\r
+               self.origin_z = ReadShort();\r
+       }\r
+       if(sf & 4)\r
+       {\r
+               self.angles_y = ReadByte() * 360.0 / 256;\r
+               self.angles_x = self.angles_z = 0;\r
+       }\r
+       if(sf & 8)\r
+               self.healthvalue = ReadShort();\r
+       if(sf & 16)\r
+               self.armorvalue = ReadShort();\r
+       if(sf & 32)\r
+               self.eaten = ReadByte();\r
+\r
+       entcs_receiver[self.sv_entnum] = self;\r
+       self.entremove = Ent_RemoveEntCS;\r
 \r
        InterpolateOrigin_Note();\r
 }\r
@@ -670,7 +721,7 @@ void Ent_ReadPlayerScore()
        float isNew;\r
        entity o;\r
 \r
-       // damnit -.- don't want to go change every single .sv_entnum in sbar.qc AGAIN\r
+       // damnit -.- don't want to go change every single .sv_entnum in hud.qc AGAIN\r
        // (no I've never heard of M-x replace-string, sed, or anything like that)\r
        isNew = !self.owner; // workaround for DP bug\r
        n = ReadByte()-1;\r
@@ -902,6 +953,7 @@ void(float bIsNewEntity) CSQC_Ent_Update =
                case ENT_CLIENT_WARPZONE: WarpZone_Read(bIsNewEntity); break;\r
                case ENT_CLIENT_WARPZONE_CAMERA: WarpZone_Camera_Read(bIsNewEntity); break;\r
                case ENT_CLIENT_TRIGGER_MUSIC: Ent_ReadTriggerMusic(); break;\r
+               case ENT_CLIENT_PORTRAIT: Ent_ReadPortrait(); break;\r
                default:\r
                        error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));\r
                        break;\r
@@ -933,22 +985,15 @@ void CSQC_Ent_Remove()
 \r
 void Gamemode_Init()\r
 {\r
-       if(gametype == GAME_ONSLAUGHT) {\r
+       if(gametype == GAME_ONSLAUGHT)\r
                print(strcat("Using ", minimapname, " as minimap.\n"));\r
-               precache_pic("gfx/ons-cp-neutral.tga");\r
-               precache_pic("gfx/ons-cp-red.tga");\r
-               precache_pic("gfx/ons-cp-blue.tga");\r
-               precache_pic("gfx/ons-frame.tga");\r
-               precache_pic("gfx/ons-frame-team.tga");\r
-       } else if(gametype == GAME_KEYHUNT) {\r
-               precache_pic("gfx/sb_key_carrying");\r
-               precache_pic("gfx/sb_key_carrying_outline");\r
-       }\r
 \r
        if not(isdemo())\r
        {\r
                localcmd("\n_cl_hook_gamestart ", GametypeNameFromType(gametype), ";");\r
-               calledgrabbers |= GRABBER_START;\r
+               if(g_campaign)\r
+                       localcmd("\n_cl_hook_campaign_gamestart ", GametypeNameFromType(gametype), ";");\r
+               calledhooks |= HOOK_START;\r
        }\r
 }\r
 // CSQC_Parse_StuffCmd : Provides the stuffcmd string in the first parameter that the server provided.  To execute standard behavior, simply execute localcmd with the string.\r
@@ -1010,12 +1055,23 @@ void Ent_Init()
                strunzone(forcefog);\r
        forcefog = strzone(ReadString());\r
 \r
+       g_campaign = ReadShort();\r
+\r
        armorblockpercent = ReadByte() / 255.0;\r
 \r
        g_weaponswitchdelay = ReadByte() / 255.0;\r
 \r
-       g_balance_vore_swallow_limit = ReadCoord();\r
-       g_vore_showpreyhealth = ReadCoord();\r
+       g_vore = ReadShort();\r
+       g_healthsize_center = ReadShort();\r
+       g_healthsize_min = ReadShort();\r
+       g_healthsize_max = ReadShort();\r
+\r
+       armor_max = ReadCoord();\r
+       teamheal_max = ReadCoord();\r
+\r
+       g_power = ReadShort();\r
+       g_power_reboot = ReadShort();\r
+       g_power_reboot_spawn = ReadByte();\r
 \r
        if(!postinit)\r
                PostInit();\r
@@ -1206,12 +1262,12 @@ void Net_ReadOtherPLReport()
 {\r
        float e, ph, pn;\r
        e = ReadByte();\r
-       ph = ReadByte();\r
+       ph = ReadShort(); // not ReadByte because we show minus health too\r
        pn = ReadByte();\r
        if not(playerslots[e])\r
                return;\r
        playerslots[e].plhealth = ph;\r
-       playerslots[e].pleater = pn;\r
+       playerslots[e].plpredator = pn;\r
 }\r
 \r
 void Net_VoteDialog(float highlight) {\r