Files
LuaCsForBarotraumaEP/Subsurface/Source/Items/ItemInventory.cs
Regalis 40714c1102 - converting NetworkEvent sending time to local time before doing any comparisons
- using mersenne twister for random number generation due to differences in Mono and .NET implementations of the Random library
- password prompt for password-protected private servers
- fixed deconstructor, fabricator and railgun connection panels closing immediately after opening
- fixed editor saving newly created subs to the root folder instead of the Submarines folder
- keeping items in the same inventory slots between clients instead of just syncing which items are in the inventory
- fixed crashing when swapping items between different limbslots
2016-03-03 21:11:54 +02:00

68 lines
1.9 KiB
C#

using Microsoft.Xna.Framework;
using Barotrauma.Items.Components;
namespace Barotrauma
{
class ItemInventory : Inventory
{
ItemContainer container;
public ItemInventory(Item owner, ItemContainer container, int capacity, Vector2? centerPos = null, int slotsPerRow = 5)
: base(owner, capacity, centerPos, slotsPerRow)
{
this.container = container;
}
protected override void DropItem(Item item)
{
item.Drop();
if (item.body != null) item.body.Enabled = true;
item.SetTransform(container.Item.SimPosition, 0.0f);
}
public override int FindAllowedSlot(Item item)
{
for (int i = 0; i < capacity; i++)
{
//item is already in the inventory!
if (Items[i] == item) return -1;
}
if (!container.CanBeContained(item)) return -1;
for (int i = 0; i < capacity; i++)
{
if (Items[i] == null) return i;
}
return -1;
}
public override bool CanBePut(Item item, int i)
{
if (i < 0 || i >= Items.Length) return false;
return (item!=null && Items[i]==null && container.CanBeContained(item));
}
public override bool TryPutItem(Item item, int i, bool allowSwapping, bool createNetworkEvent)
{
bool wasPut = base.TryPutItem(item, i, allowSwapping, createNetworkEvent);
if (wasPut)
{
foreach (Character c in Character.CharacterList)
{
if (!c.HasSelectedItem(item)) continue;
item.Unequip(c);
break;
}
//item.Container = container.Item;
container.IsActive = true;
}
return wasPut;
}
}
}