From f40d244deb0c3a96a441708e271cc720f0e1aab5 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Thu, 10 Aug 2017 20:30:29 +0300 Subject: [PATCH] Moved inventory UI update logic to the client project, sound effects for picking up and dropping items --- Barotrauma/BarotraumaClient/Source/GUI/GUI.cs | 8 +- .../Source/Items/CharacterInventory.cs | 121 +++++++++- .../Source/Items/Inventory.cs | 211 ++++++++++++++++- .../BarotraumaShared.projitems | 6 + .../Content/Sounds/dropItem.ogg | Bin 0 -> 10967 bytes .../Content/Sounds/pickItem.ogg | Bin 13795 -> 10343 bytes .../Content/Sounds/pickItemFail.ogg | Bin 0 -> 9687 bytes .../Source/Items/CharacterInventory.cs | 113 --------- .../Items/Components/Holdable/Pickable.cs | 10 +- .../Source/Items/Inventory.cs | 219 +----------------- .../Source/Screens/GameScreen.cs | 3 +- 11 files changed, 352 insertions(+), 339 deletions(-) create mode 100644 Barotrauma/BarotraumaShared/Content/Sounds/dropItem.ogg create mode 100644 Barotrauma/BarotraumaShared/Content/Sounds/pickItemFail.ogg diff --git a/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs b/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs index 8625ad4b5..c9100cea6 100644 --- a/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs +++ b/Barotrauma/BarotraumaClient/Source/GUI/GUI.cs @@ -12,7 +12,9 @@ namespace Barotrauma RadioMessage, DeadMessage, Click, - Inventory, + PickItem, + PickItemFail, + DropItem } public class GUI @@ -98,7 +100,9 @@ namespace Barotrauma sounds[(int)GUISoundType.DeadMessage] = Sound.Load("Content/Sounds/UI/deadmsg.ogg", false); sounds[(int)GUISoundType.Click] = Sound.Load("Content/Sounds/UI/beep-shinymetal.ogg", false); - sounds[(int)GUISoundType.Inventory] = Sound.Load("Content/Sounds/pickItem.ogg", false); + sounds[(int)GUISoundType.PickItem] = Sound.Load("Content/Sounds/pickItem.ogg", false); + sounds[(int)GUISoundType.PickItemFail] = Sound.Load("Content/Sounds/pickItemFail.ogg", false); + sounds[(int)GUISoundType.DropItem] = Sound.Load("Content/Sounds/dropItem.ogg", false); } diff --git a/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs b/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs index 1464ced80..e63b4b749 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs @@ -1,5 +1,7 @@ -using Microsoft.Xna.Framework; +using Barotrauma.Items.Components; +using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using System.Collections.Generic; namespace Barotrauma { @@ -74,6 +76,19 @@ namespace Barotrauma return UseItemOnSelf(slotIndex); } + + protected override void PutItem(Item item, int i, Character user, bool removeItem = true, bool createNetworkEvent = true) + { + base.PutItem(item, i, user, removeItem, createNetworkEvent); + CreateSlots(); + } + + public override void RemoveItem(Item item) + { + base.RemoveItem(item); + CreateSlots(); + } + protected override void CreateSlots() { if (slots == null) slots = new InventorySlot[capacity]; @@ -98,6 +113,110 @@ namespace Barotrauma MergeSlots(); } + + public override void Update(float deltaTime, bool subInventory = false) + { + base.Update(deltaTime); + + if (doubleClickedItem != null) + { + bool wasPut = false; + + if (doubleClickedItem.ParentInventory != this) + { + wasPut = TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots, true); + } + else + { + var selectedContainer = character.SelectedConstruction?.GetComponent(); + if (selectedContainer != null && selectedContainer.Inventory != null) + { + wasPut = selectedContainer.Inventory.TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots, true); + } + else if (character.SelectedCharacter != null && character.SelectedCharacter.Inventory != null) + { + wasPut = character.SelectedCharacter.Inventory.TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots, true); + } + else //doubleclicked and no other inventory is selected + { + //not equipped -> attempt to equip + if (IsInLimbSlot(doubleClickedItem, InvSlotType.Any)) + { + wasPut = TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots.FindAll(i => i != InvSlotType.Any), true); + } + //equipped -> attempt to unequip + else if (doubleClickedItem.AllowedSlots.Contains(InvSlotType.Any)) + { + wasPut = TryPutItem(doubleClickedItem, Character.Controlled, new List() { InvSlotType.Any }, true); + } + } + } + + GUI.PlayUISound(wasPut ? GUISoundType.PickItem : GUISoundType.PickItemFail); + } + + if (selectedSlot > -1) + { + UpdateSubInventory(deltaTime, selectedSlot); + } + + if (character == Character.Controlled) + { + for (int i = 0; i < capacity; i++) + { + if (selectedSlot != i && + Items[i] != null && Items[i].CanUseOnSelf && character.HasSelectedItem(Items[i])) + { + //-3 because selected items are in slots 3 and 4 (hands) + useOnSelfButton[i - 3].Update(deltaTime); + } + } + } + + //cancel dragging if too far away from the container of the dragged item + if (draggingItem != null) + { + var rootContainer = draggingItem.GetRootContainer(); + var rootInventory = draggingItem.ParentInventory; + + if (rootContainer != null) + { + rootInventory = rootContainer.ParentInventory != null ? + rootContainer.ParentInventory : rootContainer.GetComponent().Inventory; + } + + if (rootInventory != null && + rootInventory.Owner != Character.Controlled && + rootInventory.Owner != Character.Controlled.SelectedConstruction && + rootInventory.Owner != Character.Controlled.SelectedCharacter) + { + draggingItem = null; + } + } + + + doubleClickedItem = null; + } + + private void MergeSlots() + { + for (int i = 0; i < capacity - 1; i++) + { + if (slots[i].Disabled || Items[i] == null) continue; + + for (int n = i + 1; n < capacity; n++) + { + if (Items[n] == Items[i]) + { + slots[i].Rect = Rectangle.Union(slots[i].Rect, slots[n].Rect); + slots[n].Disabled = true; + } + } + } + + selectedSlot = -1; + } + public void DrawOwn(SpriteBatch spriteBatch) { if (slots == null) CreateSlots(); diff --git a/Barotrauma/BarotraumaClient/Source/Items/Inventory.cs b/Barotrauma/BarotraumaClient/Source/Items/Inventory.cs index e0ce8f5be..41779cf36 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Inventory.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Inventory.cs @@ -1,13 +1,23 @@ using Barotrauma.Items.Components; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using System; using System.Collections.Generic; namespace Barotrauma { - partial class InventorySlot + class InventorySlot { + public Rectangle Rect; + + public bool Disabled; + public GUIComponent.ComponentState State; + + public Color Color; + + public Color BorderHighlightColor; + private CoroutineHandle BorderHighlightCoroutine; public bool IsHighlighted { @@ -17,10 +27,12 @@ namespace Barotrauma } } - public Color Color; - - public Color BorderHighlightColor; - private CoroutineHandle BorderHighlightCoroutine; + public InventorySlot(Rectangle rect) + { + Rect = rect; + State = GUIComponent.ComponentState.None; + Color = Color.White * 0.4f; + } public void ShowBorderHighlight(Color color, float fadeInDuration, float fadeOutDuration) { @@ -52,6 +64,195 @@ namespace Barotrauma partial class Inventory { + + public static InventorySlot draggingSlot; + public static Item draggingItem; + + public static Item doubleClickedItem; + + private int slotsPerRow; + public int SlotsPerRow + { + set { slotsPerRow = Math.Max(1, value); } + } + + protected int selectedSlot = -1; + + protected InventorySlot[] slots; + + private Vector2 centerPos; + + public Vector2 CenterPos + { + get { return centerPos; } + set + { + centerPos = value; + centerPos.X *= GameMain.GraphicsWidth; + centerPos.Y *= GameMain.GraphicsHeight; + } + } + + private Vector2 drawOffset; + public Vector2 DrawOffset + { + get + { + return drawOffset; + } + + set + { + if (value == drawOffset) return; + + drawOffset = value; + CreateSlots(); + } + } + + + protected virtual void CreateSlots() + { + slots = new InventorySlot[capacity]; + + int rectWidth = 40, rectHeight = 40; + int spacing = 10; + + int rows = (int)Math.Ceiling((double)capacity / slotsPerRow); + + int startX = (int)centerPos.X - (rectWidth * slotsPerRow + spacing * (slotsPerRow - 1)) / 2; + int startY = (int)centerPos.Y - rows * (spacing + rectHeight); + + Rectangle slotRect = new Rectangle(startX, startY, rectWidth, rectHeight); + for (int i = 0; i < capacity; i++) + { + slotRect.X = startX + (rectWidth + spacing) * (i % slotsPerRow) + (int)DrawOffset.X; + slotRect.Y = startY + (rectHeight + spacing) * ((int)Math.Floor((double)i / slotsPerRow)) + (int)DrawOffset.Y; + + slots[i] = new InventorySlot(slotRect); + } + } + + public virtual void Update(float deltaTime, bool subInventory = false) + { + syncItemsDelay = Math.Max(syncItemsDelay - deltaTime, 0.0f); + + if (slots == null || isSubInventory != subInventory) + { + CreateSlots(); + isSubInventory = subInventory; + } + + for (int i = 0; i < capacity; i++) + { + if (slots[i].Disabled) continue; + UpdateSlot(slots[i], i, Items[i], false); + } + + + if (draggingItem != null && + (draggingSlot == null || (!draggingSlot.Rect.Contains(PlayerInput.MousePosition) && draggingItem.ParentInventory == this))) + { + if (!PlayerInput.LeftButtonHeld()) + { + CreateNetworkEvent(); + draggingItem.Drop(); + + GUI.PlayUISound(GUISoundType.DropItem); + } + } + + } + + protected void UpdateSlot(InventorySlot slot, int slotIndex, Item item, bool isSubSlot) + { + bool mouseOn = slot.Rect.Contains(PlayerInput.MousePosition) && !Locked; + + slot.State = GUIComponent.ComponentState.None; + + if (!(this is CharacterInventory) && !mouseOn && selectedSlot == slotIndex) + { + selectedSlot = -1; + } + + if (mouseOn && + (draggingItem != null || selectedSlot == slotIndex || selectedSlot == -1)) + { + slot.State = GUIComponent.ComponentState.Hover; + + if (!isSubSlot && selectedSlot == -1) + { + selectedSlot = slotIndex; + } + + if (draggingItem == null) + { + if (PlayerInput.LeftButtonHeld()) + { + draggingItem = Items[slotIndex]; + draggingSlot = slot; + } + } + else if (PlayerInput.LeftButtonReleased()) + { + if (PlayerInput.DoubleClicked()) + { + doubleClickedItem = item; + } + + if (draggingItem != Items[slotIndex]) + { + //selectedSlot = slotIndex; + if (TryPutItem(draggingItem, slotIndex, true, Character.Controlled)) + { + if (slots != null) slots[slotIndex].ShowBorderHighlight(Color.White, 0.1f, 0.4f); + GUI.PlayUISound(GUISoundType.PickItem); + } + else + { + if (slots != null) slots[slotIndex].ShowBorderHighlight(Color.Red, 0.1f, 0.9f); + GUI.PlayUISound(GUISoundType.PickItemFail); + } + draggingItem = null; + draggingSlot = null; + } + } + } + } + + public void UpdateSubInventory(float deltaTime, int slotIndex) + { + var item = Items[slotIndex]; + if (item == null) return; + + var container = item.GetComponent(); + if (container == null) return; + + if (container.Inventory.slots == null) container.Inventory.CreateSlots(); + + int itemCapacity = container.Capacity; + + var slot = slots[slotIndex]; + new Rectangle(slot.Rect.X - 5, slot.Rect.Y - (40 + 10) * itemCapacity - 5, + slot.Rect.Width + 10, slot.Rect.Height + (40 + 10) * itemCapacity + 10); + + Rectangle subRect = slot.Rect; + subRect.Height = 40; + + for (int i = 0; i < itemCapacity; i++) + { + subRect.Y = subRect.Y - subRect.Height - 10; + container.Inventory.slots[i].Rect = subRect; + } + + container.Inventory.isSubInventory = true; + + slots[slotIndex].State = GUIComponent.ComponentState.Hover; + + container.Inventory.Update(deltaTime, true); + } + + public virtual void Draw(SpriteBatch spriteBatch, bool subInventory = false) { if (slots == null || isSubInventory != subInventory) return; diff --git a/Barotrauma/BarotraumaShared/BarotraumaShared.projitems b/Barotrauma/BarotraumaShared/BarotraumaShared.projitems index face8784d..845907934 100644 --- a/Barotrauma/BarotraumaShared/BarotraumaShared.projitems +++ b/Barotrauma/BarotraumaShared/BarotraumaShared.projitems @@ -1156,6 +1156,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1198,6 +1201,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Barotrauma/BarotraumaShared/Content/Sounds/dropItem.ogg b/Barotrauma/BarotraumaShared/Content/Sounds/dropItem.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cb888b8ea4b14f36f7286a37bb08741a2fbd944f GIT binary patch literal 10967 zcmai41z1#1*S~ZlC?f4HQcFpxgrp#_q)W-t9ZN5QNJy7}v~-6Es5FSAN;d)m3KFtN z3P?$Pcj5nk-~ac1&+~rw8RnTg=ggTo@tZkw7Y!R5EdUqz>sh;W(SR`zzrkU_@o;uC zw?kvQaOBG_DBoExnCo#gup|HVU`OJBZ|ETe&{j_FFsyJKg1?5!-P6SZh`}B~Rmdm*p;#RN zpaK9>HW+1swKA+QF_+6LB~c06`XmsMk{I!c<>%D@W%~g! z8#>Myw;VA$bR_5W*P&%** zV{+?)7H7DTa=*+8Bo*p{1gQ%BEJ#on|M@aMMtp^V5U=Lkzxz8109c(S`n14t!_#vE^KK2o8{Q zLo9g#mdDDFH!qfl7aUrK3s_=J0wIZKg~jJ97g^iCwo9+IEvo>kBtK^Xor;fL z4Ul7(R`h?0wSKbI|6gQmySM=v(3YL9Or5T53JA7NH(sK13wHsaPh}9ipWH+g(ITDb zyI@gtm+wwg?f2D`s-3|aUf=r)WnYux1AoxbzZt0;VC(vpWpee8x`R`A_dAxv% zKr^kA?fr>`W6jRZ;tz_Y%O$=?elZis5T3gTNgGPr=@+9+`;k*ZlRnxOp`FgzP?C~< z?m>qE`UTLJu%6UUIjKWw=mBN&w8D#)*X4Ag@{$p-j~m?9FvLWQG%TrLF#fO7Y_a#Ij%IFaZKHD zY$}y(Y9qY;+aek}BEwe{9*C%ET{RlM`e>BaO6#`K=q;;J9jh@9tI1j`gF0XR+P?sE z0h`&0NB=+$79y--F$+rZ`2R*u4p+>)Xv_`ecsBib4zFaJh_sT_te+)$r2l~&+sNXS z$l~xwOn3}eM6z8(+N*{8Z3{g>3H#%IYge(xSZrOu) zdzct8xb5Ks4?wudg$sV9Gw+k_g2+b+5;F&f3lc(uVr7ZhL$rm6p-GyEk96Q`7bI9) z4#pfDi%=>A0Dpi8{3FX9ioJ>>lK}uhvFLCZahy4oI5F%I6(SNGA;!s$R)=#H)@Z`* zsV%64ItwfZlu6jDY2bF{K|_dh0;;42sbyc`L4_bKtfqzA@zu~+*q4uo3lgWI5ki=P zU<8t^upn8CvoI(YK?E&~M?7OMq~*aBxDP$}2`SJDDznlD1)Lt%PN(CqLg8^nsC$w0TkuP z*TDcT_nZKVdJVox5W_;StEwJHmI~JBqW(R3)U7%?6y?7rf5taKYtauXXb@FXONTD6 z88=34NP;6k1wleZhcT+W$@AZu>tZ$k$K>e$n7o{?!%z!#3lybR{t1a*7wcf~z7WM% zYlteBoM7_i1CQTU901Z9ETn1M1qUFc;NeUN?SP1Maebl-?tm211yR91rJxbqg>;}9 zI#SS7h;BMGrJOP}7=f^Z1yjM{CE&5F`5ipVO@oR)&I2K#W%z&`E{F8azUz%A~guc9asVGl|% zFRK^_J4?W^Q5EB9NEBb~c^^^>RbE4D0rnwLVE#iy38pOfhm`LpDSWYQ49OT>~Lh$RAAAz)}kiG`h;A>$q~>=PY$5*5-}fR;)`Lln{gqE-?io7(zhNV#I|a z;48RjcnMY@=mZ4zbx2u>9i$RLK~G>`Wx3c3L1xe$aCjz~N{$P3mK-t24B9`03It`M zHj=v#WCqQr3x|Oz8q&TT0Dj>U0Xevgx{9JO1~T4r9dQ7EEc%I|LDu)GXL_PzZina$4hwg8{BqFgsMsE-R5D`(ppZUvM@pk3mho-qu9vuI> z06+)@jUFY4^#+(?g42WcRy|KP#fr}}&J-*m1wDZ61ARbeaqfe^odXg;=U@pLXmv3B z1MmPD|7h0qD^d7Yu{shH0YH>lpIB#3LM%K#5q(*Xi#*yAJiHo@iP+C))3r0Ko&5Lk@sNOm@U6G zfkZ^|)gn>lw=fq5LBEzP9yc$o=`chO$ey!c($ExyK+0WFK!*K`=m+?S{+zALxgEX& zz}4zg@z><+=Q+tgMj+rM=X}^G1o1Y7l^x4>k;Q<0 z*eTCNVXJ=6NS5r&FtSo(?{klY_Zf-}yb2b%V0uqOr*y@6%fY^r&P+5r2|n_y*LhLwzM zc{^8(PoW2~t<9!71{5gof`ts|igp2H3;Tuxj5}>_Cw~Yh2XK`bF9`_x&i|jQ|W@0F@EU~#OK*09>doW|x;}2JyTmsb} zlwjupZ#;lMnD|)Yg@;>P$K-!lz+;oQ3@-S%h|jLTe$L$(dCWgY;wZpJ`UwzgzCO zTY6c3dO7Y9pPta^BvCWEvFqoxy`d`^XG*=kn5QqC=JB+`Ed|GK+WT@SWGh^eOwwj<5 z3t|}$2>uzaPS3cGyEC_$@X*lr>qmp;d9As_ALuKax+AVL$G;90>P8k$ji*%L3mAi$ zfkPfZ!b$T--o_fgZCnKY*n8eRTKJoiOPH^ojEbCA>@DTgHAE^NwMA&kdycytq`=}F z8*cC%!N$tY&Ta8&m2cA;)n`jvHEpXs^alDS(KiWiBIzWiM#ewCH#|an)|NKnq~x9H zHOtZ4lsOq+_gwsC2K^1!Yw}D@U#00$t3G_jvgLY@e41K@uZo3t33q{cIM-(_owHxm zxZHD+adgJ$`IG=B=g8fu4~UlC^p?%bp5%O0J~NK+d78Pa4s4wTCaq(bR)N3 z|B7=$Nxd!jY_`HZ-JDpXkYOCw*e~Uu#^H}M{R@syK8}A$Ahaf8jYC>J0iQCkLGWo8 zj?A8~`O`%X^h04zJcH7gCh3{Z&qKrhY!5m(mnDzV$stuIaF2h|y=q9T^4Bpu!>o-~ zxfXsiANE%DbwGzr_t;*4?A_Q@-v70dM~C;`kKRQqgY_pbr6VbF?j$W0(i_`)Y<3h4 zzZE%~tPM*&KKyp=n#0Ph=*}p=nqxK-h|@h0LT-Kbva>C}hRyNSFJ9tjKZb{gujku+ zwV(a-CicX`VE^WnxHIj~c*(ojD%bg~vT-Emm;a=uMk9K}SE@Puc-q`lTG*TsJx@|x zt9}nUEe4dHXxzl{$Bnv-7xyl{b^K-1wdaRZ+g{7h-F7y1mEq&4#;@DEUa6#yCY!S| zy_+Y+3|gLTHa0{?Ed-Z(fE72hmi-+#jo<&=)|O`GxCVMTjEYTiuiOPJ0XOlPlT#@wanp?}6bJdEC`x7^{!sb6h0 z{_tR%po%PPZC;it_5FUOC{f{3Z$SL``>>s+C>uLxpCgmaD;z|C1L+NXrJ{yIqfPzz z?8)~^A=SJ6Q@iHZw5nFJq{BTj-+PKtGIug*oF?1&9C!4tFHV6R0JbNp@6ph!yr;V!8`PrtHU7=x*$wfP znEsGoTDKY@ZS0Yd=I82{-pEyqTki?o`8Fv#%=XPl^7>-odP| ztQZzZ_oyy!<*F6W?1on+Cy(T_pBNj+OXW-3$n4g{C*Y->c=xfXk_=5t$j*=M0sWpYqbwMwt7u|1S}=j=xKZId(b*fukM)MwSWcj{Vp z#eReC+t;&4L`KX@+i{vcUB_#z5{0En?Ny%ZRUy|;FeXknoJU}n>L2pEyM)xS5C?g+ zme^;R_%t@qZ%NMZm{yx)_r`qV_%@+6`Q}BY>c(~(@rq4x2}5e1nN~WC{`OSeS6%%O zU#St&ocl9ss4~B5dAHFy{r!S8$SdUp!{Of&>fPJb95ZXab!)%xI0fKy>c&$ITI_2` zkojlF`8Tlw+uMpvql&=CN0XMWPd}<1rX-K92JUA!LWn;fPY-9*?s_|@0@YF#xba8C z1RA1AC@+R9Ak)r05df%wN zr?{CgN+_Y~o=|Sr*zNtjDPx-nZ_Aq+<`PsqKlh7!jiS+U^*iNP$@J6|y)6p7(L1ji z`}3~@ot3|vw;_IaeKz9P20vslP(9cd@ikOVoj&%qybOMf_y|Yg^N&$- zHu_GkHzgXoH$HNn74~X=mgvhp_+tGlb8l?Z`e#_S{bGm-zfUS4TI?a!>$capEpx)s zORSaPlO{7<$11{$p8gPqO1BfAvTnJ-HBWNT1PYV6RQ2h%t{*qH6- z@;>Fa@Z02%eY)?HdfkxbxKqVU#D*1HxId07f3eK0T-!W3Fq%uo3rXbc<`mSh(HgpG zb2mTK_f22_cv*i1(N|ujlE!OwIo|oB)Q`Qq@FB@Rs%h6M)T)utbgR?}huKPoKrVo) zw9)jY4i{zR%9ci#-mO~_UW%xOROE9?O6lLXYc_czV>HwneBme_m4M(sJ~B^t1}z=B z7uB?0CQogj&D;923h7s?xVd81C=%+PQ^^7Q770g#DkDkk9R%@PXA>k=a9OGu8@T&x z=V#H&`L{S7Q`=vR$v-h>>}Tg#FP~gnzO!qxHscoD!e#12u-|R%QFqr*uf+ozus`cl z{wLv}@9;a{=Mi3sdy?Y68Uxc$4-#YP(N!jx@<)Tjzi*W-^^*LVO$B(~!nZbwe2?9~AH&m5hrE2|3ai7~x^vX+W`Pt5zOyeLc`0;tN>bgX=h`Z&P$Ti%e z(r{xx@zsK1ok(AIotMX%bNl|#j?hAp7}}!y-Ngvfq9Xn336{WIyqPj55zbX(TQkDxQhC;zB_KlSUees_ITuvh3>$Fz0ht0{+GAuV9#6Kp?q zvoOYpu+e>NyYnvP7lWi|6Y&g_kKMZnJ;K&3?Kkn~JKKN(LrZdwrfJ+GE&f6;uS%-b! z4+Yk`e)d*HU+$?Qmno_7eYdh;%?bPp11PV1AHfzMI1sNDBhN1lAAJ+7aBy1L6!mZb z^{nx7pLyO=?v7K%q#qg#_gg6G0sr-A8|SB_+N_{`dT#@eb@>2U*(i^>HiE3ZULL7y zb1uF1tH;??lV|F$EQJ_7zrVZVa;f4cJiQ5D*q@_dcm3Gn57`zYJuYVNY*y;NUDe~I z$3DNm?HDW6RaXf0Cg}PabT^&l9v?hra(*f`AT)DYUIZy2RLRrJzMdA~0n2{qAQbHq zCHpO1{h7X%&r!Yf-t*n(V+2BsDk(ur?82Xj%9u0Cs^fpy!B)Sy%`41#QS6B{mX;IU zAOnBvoWXk{EpejHfAzara`yqWxWT<;3_d0h-YzF9xzu z(-jG)YbhYy-a^5f*p7X`KJeXy+0c2Pr8)$cyzHt>bKq0Y2S8UZo9$KL`yzM)wkM~< zb6xqd$k`QUVxP@}lP*Z0CC z8>>G&x8GKMMXfClkHziLEuQ9&dK=wG4lE`#d2i14&hoL_qnN@N{kg`Tm5go?3JAzI zglO3GBshq?t$X$B{a|ZxM8o2afVsnj0Y-JG1=)6@FWPpz-|jp4`^`c{HPV1geCi%b zU{Lj8?XOFrtX^u8AD;bTx9$6yXSNxJvxocUN9zyWr7_X2XUofVs++!!5ZQ*N=d_kZ zFIaGaoL%U)2Nn@~HSiPDZ|RF~Z2M;jh7fXktgYSffuFZW@X0R4H?Xq;5Rj?bB73_Q z598d!*+IywP4L(~K?e+F061>W@1VdT252DcxLnH_Sd{+t9C;jxlKFDwBiT=VP*HeR zuOIL3I(wgWdTITsHrQr7y?afp?zEYNrujGH{L+p+J#kfC&y#>Pz4nvPtylP|<X(^Y})1`f>I&eKRLNgV%D%jDmP3zf29wH@-@T z0>KBbuZwfFLJatfyQp);T+ajy%lhga-*^nq-cD>UN=W8Zqqr%gtMkIagg#35jbXdA z$}@v8mb24aH?#K0vVKPgEq#+JMDDO4{8`vr*;JMu)DaZ*!U_Ee((zwyXua7?F0OCK zYo%Z9M2!S!M@bh&Ec+??n>GlVQvhj>T+-to*gQ4@cKeob-vCP==;m48-*Ex}cfb^? z^rns6HM{r=ZtRKk9Rl#XGtin{vC2tA!7gSEY=myv!<*&zEN@ zBgpz)B`ne)=;NZ><;I!FSbD=OU&1lPoNhM1=8ydJE4C3hZeQzC%OBwu*2%^Ck$K= zwr=cb8Mn}8mcB~zE03^oHUEBjp`L_r&G`kHr8O>)Mp$b+$>GJ=Ipe+XPWV?dA2FFJ z>D17ud}pA6hobW;uVfbBkF%Z49*@^4#^44X)UDcpTTFS(ATJ&e{#7qo0Oz;6NrMfC zANXVPtfVFYypFs}^j5d#52k4}ZiIDB`P(ejs>(uLXx~S97yR?DB=|Dg7tx3PN`ePA zZ~A$Oke~6){aRc9Hak5r=V83NAd03K2o4!hJmw2hp!F0|>4ZP+#s~BE={x_S{eMxGY2N?K=7I!XHbgy_hoAU(K_g(5a(4&aN}Ml^q|f4mQ_r zkP4`0*ZJ@_&Nz8*J~4T%y0O=~);(CU!>NH%UsWe|6TQ}d>1j=6xt)h+-=*u^PnikK zq;Jr8R9Maqti4dA2lhIjFHFCherIdUk8Uzf5OaDi<u*n9Uo$O_{7MDn z1UGct*j2rKsnp)Syywfty zrm1OyPTWi1bv%V?R_C`CvdEZ2J{=U^7SihWQYo|V-KBVD#FF*GrjT}}2%d4XhhHv% zj^Y80Ot87k_y>RqCiSONvpx2SQ2c#I8hNaO2;&uC22`+}&2>bF-k*I*r41YCR*P&q?o<^vi^+| zzOT)SIO~0`_m8~q+x)I*&0~MQwV|Xt$iS@HliAxme63of;%5*0DtvhCtEB zDzxM-VHHd3lYC#V^7R#Qd^TtpO-6e|!^DOw9WZv4B2X?0>b5JK!?y)LN7`&%;-RFa zS*4h|k)?)*(A&{QTC^;TGiIdKhbwnTXgPD=-cMAI)#ci5Wp)m7ja%iHOpUx85W%j- zWPLzj0buo&Gqxx4F}re^EcLOrjxvsa#B5Z6C_Wu6Yj|B( zyeh2tO4ym5xbCs?HJ>4B6+OPq7xO4$?LHA6=UA(A0F1X})1 zr;9#^i$a5EH*+L<2P`}a?J*m7ECv96+?&AS_IZnIXen}ibxD9U*n}@__T^~`;hCW zirMAAbw!b$ga6#ILdNqrU*A^JShD69a0>&2W>KECg3W##6mu(_h6)|eUES6`a4M+q z%*>Fz{C$@vD}yCnR_3HmLV3A8P%h``K&iKD1()))%e%U)b*5-J`;*^MS9GTa%^UjT z=i6LUG=v#m$#Oi3Z;Eq zjQQtONAF>s{D6Fpa8_B46ifS|+pA_a>YVsnuGUgpY~GKHM?3Wj(1B&p zn7W~#W~2WW?A3TslX6~4gJXNJSYF6r8&ilcHRhv=YK+BZkZ;G98(lrY)gF#w|JYfwLz^e+`TlN11umXj&`_wpc20gn!I><;!c>M=n z<{8nfpoF6&yxO9b+bZl<-gw=(v+m;Hi*6Ym;+4qdKGkg#HC85I0rwkHr+J*aX4Y3N zS-&Y??E{7=p1)Yxs1Pse>N~vFhHOjG(|WQQ8(mdTB0FaOlT)T}&r1CBGLJ@G|5N&J zTeO>19D6ZatR>}E?aB`b2bBIO4~Q_OnQwkI=#_kG6B(cEF_PPnp3r~2qFXu8AXLMl z67zamLE3ku_#RDp(v83;6NmSq+)uqj2%HN<`rnla3b#*)UFopzUi+f%J`6$_x5!tO;2d#S9U~bG)?Q;Tz$&mJ1u&UJ-!}T>yDN{?*GyZNcUtTbv57poN~wovI@TmjEuJ7h_-js;;Nax&mrkL&&rwo3 z79?b6Ce2@VJ$`A8^)a|mk^{wD*KsrA*qJ^bj;Q%mG15R zCcJF_Hs#C{0Z9_P&)>%|cQ;LJaR3(~1F6luhZZL5Vm^LdZ4n0_E-@buwOulk^dsi% gX30pF literal 0 HcmV?d00001 diff --git a/Barotrauma/BarotraumaShared/Content/Sounds/pickItem.ogg b/Barotrauma/BarotraumaShared/Content/Sounds/pickItem.ogg index caf85aa842674ed5551702eec063598618c2947e..57fe084efa8605fc1122eda0a3109d04d301846a 100644 GIT binary patch delta 8977 zcmZ`;1yoee_kV=2N=hsXk}BvDQi6bhfTFUbO9%^!gmf=mivprF2+|0`(%m5;t&|c= zcPxs4N{8@&3*TS-|L6SQo-=1=Zq3}!y?5rlU9iS$VARdcH34GapC<@?*3mcOLlChO zx!OA!Tb@o4-77ew%w9fYt|2;={Ffj=kR$>}3MUfqi?>hy_hU$Mril+^(6w~1xS{T3 z&S_(5tYaVL3n$_$&G9>j!L~!V0%)oIHH@hhbSdEvWcE0PO=E^Q1F#InbY8TH#-Wlt zwbit|fshXd)}gdlIvi<5Opx%;@_W%%a7l>5T^&;35n%zZh1+1pJ@Q?g_d8N!W)^5HX`zhWMJ z=gibXzA4OPFadQ%BSX2dF#V9yDws7DwnFEO5M0;+H7O)m$Ddk1GXgFP)YT`i1WG6? z37GXMfvSe&ALfFpl;Bkw2FxUzlDqpx#$NE3k zL&d6L*3|#D9wIOTHR%Pns2^Hc1w$8B;+|Ts%YYK#7C}O3$5ZRV2Dkt0U5Bvu|FVw$ zKh_HcIt(W?=LG-& z0qx+t*>$}g7SO?oh56IM+vCwlUMviBL`OWD7Wo;5rdCkm3P2();Q_P=L@px$Xv_it z?KA(Zws|1%RRJlWKn%c4VvKtv@tK)1NdHI-GE|a0JthWa4ZInfn+pnumf{jo)&f21r zI#vbokUJ9!?$;S90_VbNAbGemwNP*X_z61rC#G59`b|@AAd(zt<^JGkX0TfZ@C;0r;_vmPoZIebarG&c#RMCk+5(T%g}Wg$aNNcfdgVpvzSV zO{ioxfzT0u+MxRgb07>blT#S}g-<*I5LN;q8Lb8;!3z>V&M)k85`8EsBVm&easUW5 z>XGbB!@P||WW=E96s~i}>abvw-_j|74g^aTH&zQ}C6Lu435UlLHscDW10kgIOW#H! zPopx7EkFwu4DQJKCuhtM3f!*&SVTY;Fqlzy;e@~~6dOSyg9WNk)`epDGnb%?WU_I_ z`IQ|8=sx*MCWN7JxDN+Ij`|<82$>1y-Whn8 z!OW+YI)jnR^uGuSU8m7?iZ55d*Z)W$&SME-cS_)np+k_f1z0n@iLGv$NU|=c0 z{}HAm5Rm^^=LRDVjwM+CM*@jBf67M)MUamURUW|nrXEQ%$e{tmkGtXI?5e`Ex!Wv(I4c9$F zLs0bpG?-J06h0YfUZEgwUO9j1CO4G)tRz6e)M$-2QIqFki;Y2A#lO@5ca#~8KnRP4 zf;j{hNU+=uiL6}5YJml^5{C*)@Q+6Fa)bGoFMy*~09QJMvaQ7>T7%~ln3DovtQJ)I zM(L{nok3B4VZ*M>|G7;IoTdG$8zrYa)@Iug-+wfI!8 zKJY-Z4y|3DMEA+;4xm7j)9Aj2-D$$N{n@Oj7_|VGe+tflzd$RCme1>r3j*v@gI?Z~=Ht1i)T$UWal3K>X=3 za;{!PIbS?DN$PWmEW}&kfzAC_28ebQHBuSmT>+h!Y^YCEPXQ<)!8pN$;{-R}D=G3t z$yy9g%e;8CeOlQJVjOAA&n0?a(o!r-gDW$67!!}^j4?)Sd^Z zTYyzsPCPXLWrF=7;=F5eWo@3gj?zJ%$&C%d1(AmsI|Apf&dvs0N_B6gw{v)@_6U

dLB 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 RqMWkID}diHh9sQ`_#c51Z2JHJ delta 12457 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 diff --git a/Barotrauma/BarotraumaShared/Content/Sounds/pickItemFail.ogg b/Barotrauma/BarotraumaShared/Content/Sounds/pickItemFail.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cc887e75f7e37cbae4f21bc2b0f70582c2c3c85e GIT binary patch literal 9687 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 J;+L8D{~sfM>=Xb1 literal 0 HcmV?d00001 diff --git a/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs b/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs index 51f4a1dd0..b25a8e34a 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/CharacterInventory.cs @@ -226,118 +226,5 @@ namespace Barotrauma return TryPutItem(item, user, new List() { placeToSlots }, createNetworkEvent); } - - protected override void PutItem(Item item, int i, Character user, bool removeItem = true, bool createNetworkEvent = true) - { - base.PutItem(item, i, user, removeItem, createNetworkEvent); - CreateSlots(); - } - - public override void RemoveItem(Item item) - { - base.RemoveItem(item); - CreateSlots(); - } - - public override void Update(float deltaTime, bool subInventory = false) - { - base.Update(deltaTime); - - if (doubleClickedItem != null) - { - if (doubleClickedItem.ParentInventory != this) - { - TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots, true); - } - else - { - var selectedContainer = character.SelectedConstruction?.GetComponent(); - if (selectedContainer != null && selectedContainer.Inventory != null) - { - selectedContainer.Inventory.TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots, true); - } - else if (character.SelectedCharacter != null && character.SelectedCharacter.Inventory != null) - { - character.SelectedCharacter.Inventory.TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots, true); - } - else //doubleclicked and no other inventory is selected - { - //not equipped -> attempt to equip - if (IsInLimbSlot(doubleClickedItem, InvSlotType.Any)) - { - TryPutItem(doubleClickedItem, Character.Controlled, doubleClickedItem.AllowedSlots.FindAll(i => i != InvSlotType.Any), true); - } - //equipped -> attempt to unequip - else if (doubleClickedItem.AllowedSlots.Contains(InvSlotType.Any)) - { - TryPutItem(doubleClickedItem, Character.Controlled, new List() { InvSlotType.Any }, true); - } - } - } - } - - if (selectedSlot > -1) - { - UpdateSubInventory(deltaTime, selectedSlot); - } - -#if CLIENT - if (character == Character.Controlled) - { - for (int i = 0; i < capacity; i++) - { - if (selectedSlot != i && - Items[i] != null && Items[i].CanUseOnSelf && character.HasSelectedItem(Items[i])) - { - //-3 because selected items are in slots 3 and 4 (hands) - useOnSelfButton[i - 3].Update(deltaTime); - } - } - } -#endif - - //cancel dragging if too far away from the container of the dragged item - if (draggingItem != null) - { - var rootContainer = draggingItem.GetRootContainer(); - var rootInventory = draggingItem.ParentInventory; - - if (rootContainer != null) - { - rootInventory = rootContainer.ParentInventory != null ? - rootContainer.ParentInventory : rootContainer.GetComponent().Inventory; - } - - if (rootInventory != null && - rootInventory.Owner != Character.Controlled && - rootInventory.Owner != Character.Controlled.SelectedConstruction && - rootInventory.Owner != Character.Controlled.SelectedCharacter) - { - draggingItem = null; - } - } - - - doubleClickedItem = null; - } - - private void MergeSlots() - { - for (int i = 0; i < capacity-1; i++) - { - if (slots[i].Disabled || Items[i] == null) continue; - - for (int n = i+1; n < capacity; n++) - { - if (Items[n] == Items[i]) - { - slots[i].Rect = Rectangle.Union(slots[i].Rect, slots[n].Rect); - slots[n].Disabled = true; - } - } - } - - selectedSlot = -1; - } } } diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs index e689dfb70..2f1e0a9ed 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/Pickable.cs @@ -86,10 +86,18 @@ namespace Barotrauma.Items.Components DropConnectedWires(picker); ApplyStatusEffects(ActionType.OnPicked, 1.0f, picker); - + +#if CLIENT + GUI.PlayUISound(GUISoundType.PickItem); +#endif + return true; } +#if CLIENT + GUI.PlayUISound(GUISoundType.PickItemFail); +#endif + return false; } diff --git a/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs b/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs index dd0bab863..ed782dd53 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs @@ -2,52 +2,17 @@ using Barotrauma.Networking; using Lidgren.Network; using Microsoft.Xna.Framework; -using System; using System.Collections.Generic; using System.Linq; namespace Barotrauma { - partial class InventorySlot - { - public Rectangle Rect; - - public bool Disabled; - - public InventorySlot(Rectangle rect) - { - Rect = rect; - -#if CLIENT - State = GUIComponent.ComponentState.None; - - Color = Color.White * 0.4f; -#endif - } - - } - partial class Inventory : IServerSerializable, IClientSerializable { - public static InventorySlot draggingSlot; - public static Item draggingItem; - - public static Item doubleClickedItem; - public readonly Entity Owner; - - private int slotsPerRow; - - public int SlotsPerRow - { - set { slotsPerRow = Math.Max(1, value); } - } protected int capacity; - protected int selectedSlot = -1; - - protected InventorySlot[] slots; public Item[] Items; private bool isSubInventory; @@ -58,49 +23,19 @@ namespace Barotrauma private float syncItemsDelay; private CoroutineHandle syncItemsCoroutine; - private Vector2 centerPos; - - public Vector2 CenterPos - { - get { return centerPos; } - set - { - centerPos = value; -#if CLIENT - centerPos.X *= GameMain.GraphicsWidth; - centerPos.Y *= GameMain.GraphicsHeight; -#endif - } - } - - private Vector2 drawOffset; - public Vector2 DrawOffset - { - get - { - return drawOffset; - } - - set - { - if (value == drawOffset) return; - - drawOffset = value; - CreateSlots(); - } - } - public Inventory(Entity owner, int capacity, Vector2? centerPos = null, int slotsPerRow=5) { this.capacity = capacity; this.Owner = owner; - this.slotsPerRow = slotsPerRow; Items = new Item[capacity]; +#if CLIENT + this.slotsPerRow = slotsPerRow; CenterPos = (centerPos==null) ? new Vector2(0.5f, 0.5f) : (Vector2)centerPos; +#endif } public int FindIndex(Item item) @@ -225,155 +160,7 @@ namespace Barotrauma item.ParentInventory = null; } } - - protected virtual void CreateSlots() - { - slots = new InventorySlot[capacity]; - - int rectWidth = 40, rectHeight = 40; - int spacing = 10; - - int rows = (int)Math.Ceiling((double)capacity / slotsPerRow); - - int startX = (int)centerPos.X - (rectWidth * slotsPerRow + spacing * (slotsPerRow - 1)) / 2; - int startY = (int)centerPos.Y - rows * (spacing + rectHeight); - - Rectangle slotRect = new Rectangle(startX, startY, rectWidth, rectHeight); - for (int i = 0; i < capacity; i++) - { - slotRect.X = startX + (rectWidth + spacing) * (i % slotsPerRow) + (int)DrawOffset.X; - slotRect.Y = startY + (rectHeight + spacing) * ((int)Math.Floor((double)i / slotsPerRow)) + (int)DrawOffset.Y; - - slots[i] = new InventorySlot(slotRect); - } - } - - public virtual void Update(float deltaTime, bool subInventory = false) - { - syncItemsDelay = Math.Max(syncItemsDelay - deltaTime, 0.0f); - - if (slots == null || isSubInventory != subInventory) - { - CreateSlots(); - isSubInventory = subInventory; - } - - for (int i = 0; i < capacity; i++) - { - if (slots[i].Disabled) continue; - UpdateSlot(slots[i], i, Items[i], false); - } - - - if (draggingItem != null && - (draggingSlot == null || (!draggingSlot.Rect.Contains(PlayerInput.MousePosition) && draggingItem.ParentInventory == this))) - { - if (!PlayerInput.LeftButtonHeld()) - { - CreateNetworkEvent(); - - draggingItem.Drop(); - } - } - - } - - protected void UpdateSlot(InventorySlot slot, int slotIndex, Item item, bool isSubSlot) - { - bool mouseOn = slot.Rect.Contains(PlayerInput.MousePosition) && !Locked; - -#if CLIENT - slot.State = GUIComponent.ComponentState.None; -#endif - - if (!(this is CharacterInventory) && !mouseOn && selectedSlot==slotIndex) - { - selectedSlot = -1; - } - - if (mouseOn && - (draggingItem!=null || selectedSlot==slotIndex || selectedSlot==-1)) - { -#if CLIENT - slot.State = GUIComponent.ComponentState.Hover; -#endif - - if (!isSubSlot && selectedSlot == -1) - { - selectedSlot = slotIndex; - } - - if (draggingItem == null) - { - if (PlayerInput.LeftButtonHeld()) - { - draggingItem = Items[slotIndex]; - draggingSlot = slot; - } - } - else if (PlayerInput.LeftButtonReleased()) - { - if (PlayerInput.DoubleClicked()) - { - doubleClickedItem = item; - } - - if (draggingItem != Items[slotIndex]) - { - //selectedSlot = slotIndex; - if (TryPutItem(draggingItem, slotIndex, true, Character.Controlled)) - { -#if CLIENT - if (slots != null) slots[slotIndex].ShowBorderHighlight(Color.White, 0.1f, 0.4f); -#endif - } - else - { -#if CLIENT - if (slots != null) slots[slotIndex].ShowBorderHighlight(Color.Red, 0.1f, 0.9f); -#endif - } - draggingItem = null; - draggingSlot = null; - } - } - } - } - - public void UpdateSubInventory(float deltaTime, int slotIndex) - { - var item = Items[slotIndex]; - if (item == null) return; - - var container = item.GetComponent(); - if (container == null) return; - - if (container.Inventory.slots == null) container.Inventory.CreateSlots(); - - int itemCapacity = container.Capacity; - - var slot = slots[slotIndex]; - new Rectangle(slot.Rect.X - 5, slot.Rect.Y - (40 + 10) * itemCapacity - 5, - slot.Rect.Width + 10, slot.Rect.Height + (40 + 10) * itemCapacity + 10); - - Rectangle subRect = slot.Rect; - subRect.Height = 40; - - for (int i = 0; i < itemCapacity; i++) - { - subRect.Y = subRect.Y - subRect.Height - 10; - container.Inventory.slots[i].Rect = subRect; - } - container.Inventory.isSubInventory = true; - -#if CLIENT - slots[slotIndex].State = GUIComponent.ComponentState.Hover; -#endif - - container.Inventory.Update(deltaTime, true); - } - public void ClientWrite(NetBuffer msg, object[] extraData = null) { ServerWrite(msg, null); diff --git a/Barotrauma/BarotraumaShared/Source/Screens/GameScreen.cs b/Barotrauma/BarotraumaShared/Source/Screens/GameScreen.cs index b57800cf0..06296036d 100644 --- a/Barotrauma/BarotraumaShared/Source/Screens/GameScreen.cs +++ b/Barotrauma/BarotraumaShared/Source/Screens/GameScreen.cs @@ -132,12 +132,13 @@ namespace Barotrauma } GameMain.World.Step((float)deltaTime); - +#if CLIENT if (!PlayerInput.LeftButtonHeld()) { Inventory.draggingSlot = null; Inventory.draggingItem = null; } +#endif } } }