]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/Main.qc
Merge remote-tracking branch 'origin/master' into terencehill/hud_code_restructure
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / Main.qc
index 9abcea202bdb3840597d6bb75847e7ad994e0023..7a11300ea9f1487a177a00192964bfda94413a34 100644 (file)
@@ -149,14 +149,15 @@ void CSQC_Init(void)
        teams = Sort_Spawn();
        players = Sort_Spawn();
 
-       GetTeam(FL_SPECTATOR, true); // add specs first
+       GetTeam(NUM_SPECTATOR, true); // add specs first
 
        // needs to be done so early because of the constants they create
        CALL_ACCUMULATED_FUNCTION(RegisterWeapons);
        CALL_ACCUMULATED_FUNCTION(RegisterGametypes);
        CALL_ACCUMULATED_FUNCTION(RegisterNotifications);
        CALL_ACCUMULATED_FUNCTION(RegisterDeathtypes);
-       
+       CALL_ACCUMULATED_FUNCTION(RegisterHUD_Panels);
+
        WaypointSprite_Load();
 
        // precaches
@@ -179,7 +180,6 @@ void CSQC_Init(void)
        DamageInfo_Precache();
        Vehicles_Precache();
        turrets_precache();
-    Announcer_Precache();
        Tuba_Precache();
        CSQCPlayer_Precache();
        
@@ -209,8 +209,8 @@ void CSQC_Init(void)
 
        WarpZone_Init();
 
+       hud_skin_path = strzone(strcat("gfx/hud/", autocvar_hud_skin));
        hud_configure_prev = -1;
-       tab_panel = -1;
 
        draw_currentSkin = strzone(strcat("gfx/menu/", cvar_string("menu_skin")));
 }
@@ -262,16 +262,16 @@ float SetTeam(entity o, float Team)
                switch(Team)
                {
                        case -1:
-                       case FL_TEAM_1:
-                       case FL_TEAM_2:
-                       case FL_TEAM_3:
-                       case FL_TEAM_4:
+                       case NUM_TEAM_1:
+                       case NUM_TEAM_2:
+                       case NUM_TEAM_3:
+                       case NUM_TEAM_4:
                                break;
                        default:
                                if(GetTeam(Team, false) == world)
                                {
                                        print(sprintf(_("trying to switch to unsupported team %d\n"), Team));
-                                       Team = FL_SPECTATOR;
+                                       Team = NUM_SPECTATOR;
                                }
                                break;
                }
@@ -287,7 +287,7 @@ float SetTeam(entity o, float Team)
                                if(GetTeam(Team, false) == world)
                                {
                                        print(sprintf(_("trying to switch to unsupported team %d\n"), Team));
-                                       Team = FL_SPECTATOR;
+                                       Team = NUM_SPECTATOR;
                                }
                                break;
                }
@@ -432,6 +432,7 @@ void Ent_ReadEntCS()
                self.origin_x = ReadShort();
                self.origin_y = ReadShort();
                self.origin_z = ReadShort();
+               setorigin(self, self.origin);
        }
        if(sf & 4)
        {
@@ -445,6 +446,7 @@ void Ent_ReadEntCS()
 
        entcs_receiver[self.sv_entnum] = self;
        self.entremove = Ent_RemoveEntCS;
+       self.iflags |= IFLAG_ORIGIN;
 
        InterpolateOrigin_Note();
 }
@@ -778,7 +780,8 @@ void CSQC_Ent_Update(float bIsNewEntity)
                case ENT_CLIENT_TURRET: ent_turret(); break; 
                case ENT_CLIENT_MODEL: CSQCModel_Read(bIsNewEntity); break;
                case ENT_CLIENT_ITEM: ItemRead(bIsNewEntity); break;  
-               case ENT_CLIENT_BUMBLE_RAYGUN: bumble_raygun_read(bIsNewEntity); break;  
+               case ENT_CLIENT_BUMBLE_RAYGUN: bumble_raygun_read(bIsNewEntity); break;
+               case ENT_CLIENT_NOTIFICATION: Read_Notification(bIsNewEntity); 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));
@@ -1101,7 +1104,13 @@ void Net_ReadRace()
 void Net_ReadSpawn()
 {
        zoomin_effect = 1;
-       current_viewzoom = 0.6;
+       current_viewzoom = (1 / bound(1, autocvar_cl_spawnzoom_factor, 16));
+
+       if(autocvar_cl_unpress_zoom_on_spawn)
+       {
+               localcmd("-zoom\n");
+               button_zoom = FALSE;
+       }
 }
 
 void Net_TeamNagger()
@@ -1123,7 +1132,8 @@ void Net_ReadPingPLReport()
        playerslots[e].ping_movementloss = ml / 255.0;
 }
 
-void Net_WeaponComplain() {
+void Net_WeaponComplain()
+{
        complain_weapon = ReadByte();
 
        if(complain_weapon_name)
@@ -1134,6 +1144,13 @@ void Net_WeaponComplain() {
 
        complain_weapon_time = time;
        weapontime = time; // ping the weapon panel
+
+       switch(complain_weapon_type)
+       {
+               case 0: Local_Notification(MSG_MULTI, ITEM_WEAPON_NOAMMO, complain_weapon); break;
+               case 1: Local_Notification(MSG_MULTI, ITEM_WEAPON_DONTHAVE, complain_weapon); break;
+               default: Local_Notification(MSG_MULTI, ITEM_WEAPON_UNAVAILABLE, complain_weapon); break;
+       }
 }
 
 // CSQC_Parse_TempEntity : Handles all temporary entity network data in the CSQC layer.
@@ -1189,29 +1206,6 @@ float CSQC_Parse_TempEntity()
                        Net_ReadPingPLReport();
                        bHandled = true;
                        break;
-               case TE_CSQC_ANNOUNCE:
-                       Announcer_Play(ReadString());
-                       bHandled = true;
-                       break;
-               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:
                        Net_WeaponComplain();
                        bHandled = true;
@@ -1224,10 +1218,6 @@ float CSQC_Parse_TempEntity()
                        cl_notice_read();
                        bHandled = true;
                        break;
-               case TE_CSQC_NOTIFICATION:
-                       Read_Notification();
-                       bHandled = true;
-                       break;
                default:
                        // No special logic for this temporary entity; return 0 so the engine can handle it
                        bHandled = false;
@@ -1246,7 +1236,7 @@ string getcommandkey(string text, string command)
                return text;
 
        keys = db_get(binddb, command);
-       if (!keys)
+       if (keys == "")
        {
                n = tokenize(findkeysforcommand(command, 0)); // uses '...' strings
                for(j = 0; j < n; ++j)
@@ -1260,14 +1250,17 @@ string getcommandkey(string text, string command)
                                        keys = strcat(keys, ", ", keynumtostring(k));
 
                                ++l;
-                               if (autocvar_hud_showbinds_limit > 0 && autocvar_hud_showbinds_limit >= l) break;
+                               if (autocvar_hud_showbinds_limit > 0 && autocvar_hud_showbinds_limit <= l)
+                                       break;
                        }
 
                }
+               if (keys == "")
+                       keys = "NO_KEY";
                db_put(binddb, command, keys);
        }
 
-       if ("" == keys) {
+       if (keys == "NO_KEY") {
                if (autocvar_hud_showbinds > 1)
                        return sprintf(_("%s (not bound)"), text);
                else