Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaClient/ClientSource/Items/ItemInventory.cs
Joonas Rikkonen 694cdfee7b v0.12.0.2
2021-02-10 17:08:21 +02:00

89 lines
3.4 KiB
C#

using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Linq;
namespace Barotrauma
{
partial class ItemInventory : Inventory
{
protected override void ControlInput(Camera cam)
{
base.ControlInput(cam);
cam.OffsetAmount = 0;
//if this is used, we need to implement syncing this inventory with the server
/*Character.DisableControls = true;
if (Character.Controlled != null)
{
if (PlayerInput.KeyHit(InputType.Select))
{
Character.Controlled.SelectedConstruction = null;
}
}*/
}
protected override void CalculateBackgroundFrame()
{
var firstSlot = visualSlots.FirstOrDefault();
if (firstSlot == null) { return; }
Rectangle frame = firstSlot.Rect;
frame.Location += firstSlot.DrawOffset.ToPoint();
for (int i = 1; i < capacity; i++)
{
Rectangle slotRect = visualSlots[i].Rect;
slotRect.Location += visualSlots[i].DrawOffset.ToPoint();
frame = Rectangle.Union(frame, slotRect);
}
BackgroundFrame = new Rectangle(
frame.X - (int)padding.X,
frame.Y - (int)padding.Y,
frame.Width + (int)(padding.X + padding.Z),
frame.Height + (int)(padding.Y + padding.W));
}
public override void Draw(SpriteBatch spriteBatch, bool subInventory = false)
{
if (visualSlots != null && visualSlots.Length > 0)
{
CalculateBackgroundFrame();
if (container.InventoryBackSprite == null)
{
//draw a black baground for item inventories that don't have a RectTransform
//(= ItemContainers that have no GUIFrame or aren't a part of another component's UI)
if (RectTransform == null)
{
GUI.DrawRectangle(spriteBatch, BackgroundFrame, Color.Black * 0.8f, true);
}
}
else
{
container.InventoryBackSprite.Draw(
spriteBatch, BackgroundFrame.Location.ToVector2(),
Color.White, Vector2.Zero, 0,
new Vector2(
BackgroundFrame.Width / container.InventoryBackSprite.size.X,
BackgroundFrame.Height / container.InventoryBackSprite.size.Y));
}
base.Draw(spriteBatch, subInventory);
if (container.InventoryBottomSprite != null && !subInventory)
{
container.InventoryBottomSprite.Draw(spriteBatch,
new Vector2(BackgroundFrame.Center.X, BackgroundFrame.Bottom) + visualSlots[0].DrawOffset,
0.0f, UIScale);
}
if (container.InventoryTopSprite != null && !subInventory)
{
container.InventoryTopSprite.Draw(spriteBatch, new Vector2(BackgroundFrame.Center.X, BackgroundFrame.Y), 0.0f, UIScale);
}
}
else
{
base.Draw(spriteBatch, subInventory);
}
}
}
}