]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Implemented duel shared inventory
authorz411 <z411@omaera.org>
Fri, 2 Oct 2020 08:12:05 +0000 (05:12 -0300)
committerz411 <z411@omaera.org>
Fri, 2 Oct 2020 08:12:05 +0000 (05:12 -0300)
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/main.qh
qcsrc/common/items/inventory.qh

index e3451b3c7b280bd3e7ee97cd20bc61e0be4a2eb9..0cea8df91d3da6a8658b16f1b0467b7da7951e20 100644 (file)
@@ -13,6 +13,7 @@
 #include <common/scores.qh>
 #include <common/stats.qh>
 #include <common/teams.qh>
+#include <common/items/inventory.qh>
 
 // Scoreboard (#24)
 
@@ -1262,8 +1263,11 @@ void Scoreboard_Duel_DrawTable(vector pos, bool invert, entity pl, entity tm)
                "items", hud_fontsize, '0.5 0.5 1', panel_fg_alpha, DRAWFLAG_NORMAL);
        tmp.y += hud_fontsize.y * 1.25;
 
-       FOREACH(Items, it.m_id == ITEM_ArmorMega.m_id || it.m_id == ITEM_HealthMega.m_id, {
-               tmp = Scoreboard_Duel_DrawPickup(tmp, true, it.m_icon, icon_sz, 0, invert);
+       FOREACH(Items,
+               it.m_id == ITEM_ArmorMega.m_id ||
+               it.m_id == ITEM_HealthMega.m_id ||
+               it.m_id == ITEM_ArmorBig.m_id, {
+               tmp = Scoreboard_Duel_DrawPickup(tmp, true, it.m_icon, icon_sz, inventoryslots[pl.sv_entnum].inv_items[it.m_id], invert);
                
                if(it.m_id == REGISTRY_MAX(Items))
                break;
@@ -1989,7 +1993,7 @@ void Scoreboard_Draw()
                if (autocvar_hud_panel_scoreboard_team_size_position != 1) // team size not on left
                {
                        // put team score to the left of scoreboard (and team size to the right)
-                       team_score_baseoffset = eY * hud_fontsize.y - eX * hud_fontsize.x * 0.5;
+                       team_score_baseoffset = eY * hud_fontsize.y - eX * hud_fontsize.x * 1.5;
                        team_size_baseoffset = eY * hud_fontsize.y + eX * hud_fontsize.x * 0.5;
                        if(panel.current_panel_bg != "0")
                        {
@@ -2000,7 +2004,7 @@ void Scoreboard_Draw()
                else
                {
                        // put team score to the right of scoreboard (and team size to the left)
-                       team_score_baseoffset = eY * hud_fontsize.y + eX * hud_fontsize.x * 0.5;
+                       team_score_baseoffset = eY * hud_fontsize.y + eX * hud_fontsize.x * 1.5;
                        team_size_baseoffset = eY * hud_fontsize.y - eX * hud_fontsize.x * 0.5;
                        if(panel.current_panel_bg != "0")
                        {
index ae26b10917fd0d23a65c0d97086d6376c90f9bea..e46bb748a27fa61ef819a0bc18cb87fc52dfc7a3 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <common/constants.qh>
 #include <common/weapons/_all.qh>
+#include <common/items/inventory.qh>
 
 // z411
 string hostname_full;
index ca53f718d1ae2462f780dfd262f1d26b347e2989..f4abe5eb519cc14f67846e04cfa5eff233a9ae4d 100644 (file)
@@ -37,11 +37,16 @@ STATIC_INIT(Inventory)
 #endif
 
 #ifdef CSQC
-Inventory g_inventory;
+//Inventory g_inventory;
+Inventory inventoryslots[255];
 NET_HANDLE(ENT_CLIENT_INVENTORY, bool isnew)
 {
     make_pure(this);
-    g_inventory = this;
+    //g_inventory = this;
+       
+       float entnum = ReadByte();
+       inventoryslots[entnum-1] = this;
+       
     const int majorBits = Readbits(Inventory_groups_major);
     for (int i = 0; i < Inventory_groups_major; ++i) {
         if (!(majorBits & BIT(i))) {
@@ -116,7 +121,11 @@ bool Inventory_Send(Inventory this, Client to, int sf)
     TC(Inventory, this);
     WriteHeader(MSG_ENTITY, ENT_CLIENT_INVENTORY);
     TC(PlayerState, this.owner);
-    Inventory_Write(this);
+       
+       // z411 send entity number
+       WriteByte(MSG_ENTITY, etof(this.owner.m_client));
+    
+       Inventory_Write(this);
     return true;
 }
 
@@ -130,7 +139,8 @@ void Inventory_new(PlayerState this)
 {
     Inventory inv = NEW(Inventory), bak = NEW(Inventory);
     inv.inventory = bak;
-    setcefc(inv, Inventory_customize);
+       if(!g_duel)
+               setcefc(inv, Inventory_customize);
     Net_LinkEntity((inv.owner = this).inventory = inv, false, 0, Inventory_Send);
 }
 void Inventory_delete(entity e) { delete(e.inventory.inventory); delete(e.inventory); }