Fixed subinventory becoming active in the controlled character's inventory when the slot with the same index is highlighted in a grabbed character's inventory (or vice versa), fixed CPR & grab buttons being drawn on top of subinventories

This commit is contained in:
Joonas Rikkonen
2018-01-25 09:36:58 +02:00
parent 30e624e572
commit 43d48ceb13
3 changed files with 26 additions and 18 deletions
@@ -91,9 +91,11 @@ namespace Barotrauma
} }
if (healthBar != null) healthBar.Update(deltaTime); if (healthBar != null) healthBar.Update(deltaTime);
if (cprButton != null && cprButton.Visible) cprButton.Update(deltaTime); if (Inventory.SelectedSlot == null)
{
if (grabHoldButton != null && grabHoldButton.Visible) grabHoldButton.Update(deltaTime); if (cprButton != null && cprButton.Visible) cprButton.Update(deltaTime);
if (grabHoldButton != null && grabHoldButton.Visible) grabHoldButton.Update(deltaTime);
}
if (suicideButton != null && suicideButton.Visible) suicideButton.Update(deltaTime); if (suicideButton != null && suicideButton.Visible) suicideButton.Update(deltaTime);
@@ -166,17 +168,8 @@ namespace Barotrauma
if (!character.IsUnconscious && character.Stun <= 0.0f) if (!character.IsUnconscious && character.Stun <= 0.0f)
{ {
if (character.Inventory != null && !character.LockHands && character.Stun >= -0.1f)
{
character.Inventory.DrawOffset = Vector2.Zero;
character.Inventory.DrawOwn(spriteBatch);
}
if (character.IsHumanoid && character.SelectedCharacter != null && character.SelectedCharacter.Inventory != null) if (character.IsHumanoid && character.SelectedCharacter != null && character.SelectedCharacter.Inventory != null)
{ {
character.SelectedCharacter.Inventory.DrawOffset = new Vector2(320.0f, 0.0f);
character.SelectedCharacter.Inventory.DrawOwn(spriteBatch);
if (cprButton == null) if (cprButton == null)
{ {
cprButton = new GUIButton( cprButton = new GUIButton(
@@ -230,12 +223,18 @@ namespace Barotrauma
}; };
} }
//cprButton.Visible = character.GetSkillLevel("Medical") > 20.0f;
if (cprButton.Visible) cprButton.Draw(spriteBatch); if (cprButton.Visible) cprButton.Draw(spriteBatch);
if (grabHoldButton.Visible) grabHoldButton.Draw(spriteBatch); if (grabHoldButton.Visible) grabHoldButton.Draw(spriteBatch);
character.SelectedCharacter.Inventory.DrawOffset = new Vector2(320.0f, 0.0f);
character.SelectedCharacter.Inventory.DrawOwn(spriteBatch);
} }
if (character.Inventory != null && !character.LockHands && character.Stun >= -0.1f)
{
character.Inventory.DrawOffset = Vector2.Zero;
character.Inventory.DrawOwn(spriteBatch);
}
if (character.Inventory != null && !character.LockHands && character.Stun >= -0.1f) if (character.Inventory != null && !character.LockHands && character.Stun >= -0.1f)
{ {
Inventory.DrawDragging(spriteBatch); Inventory.DrawDragging(spriteBatch);
@@ -169,7 +169,11 @@ namespace Barotrauma
if (highlightedSubInventorySlot != null) if (highlightedSubInventorySlot != null)
{ {
UpdateSubInventory(deltaTime, highlightedSubInventorySlot.SlotIndex); if (highlightedSubInventorySlot.Inventory == this)
{
UpdateSubInventory(deltaTime, highlightedSubInventorySlot.SlotIndex);
}
if (highlightedSubInventory.slots == null || if (highlightedSubInventory.slots == null ||
(!highlightedSubInventorySlot.Slot.InteractRect.Contains(PlayerInput.MousePosition) && !highlightedSubInventory.slots.Any(s => s.InteractRect.Contains(PlayerInput.MousePosition)))) (!highlightedSubInventorySlot.Slot.InteractRect.Contains(PlayerInput.MousePosition) && !highlightedSubInventory.slots.Any(s => s.InteractRect.Contains(PlayerInput.MousePosition))))
{ {
@@ -186,6 +190,7 @@ namespace Barotrauma
{ {
highlightedSubInventory = subInventory; highlightedSubInventory = subInventory;
highlightedSubInventorySlot = selectedSlot; highlightedSubInventorySlot = selectedSlot;
UpdateSubInventory(deltaTime, highlightedSubInventorySlot.SlotIndex);
} }
} }
} }
@@ -68,7 +68,7 @@ namespace Barotrauma
partial class Inventory partial class Inventory
{ {
protected class SlotReference public class SlotReference
{ {
public readonly Inventory Inventory; public readonly Inventory Inventory;
public readonly InventorySlot Slot; public readonly InventorySlot Slot;
@@ -133,6 +133,10 @@ namespace Barotrauma
} }
} }
public static SlotReference SelectedSlot
{
get { return selectedSlot; }
}
protected virtual void CreateSlots() protected virtual void CreateSlots()
{ {