Barotrauma Client Doc
Barotrauma.CharacterInventory Class Reference
Inheritance diagram for Barotrauma.CharacterInventory:
Barotrauma.Inventory Barotrauma.Inventory

Public Types

enum class  Layout { Default , Left , Right , Center }
 

Public Member Functions

 CharacterInventory (ContentXElement element, Character character, bool spawnInitialItems)
 
Item FindEquippedItemByTag (Identifier tag)
 
int FindLimbSlot (InvSlotType limbSlot)
 
Item GetItemInLimbSlot (InvSlotType limbSlot)
 
bool IsInLimbSlot (Item item, InvSlotType limbSlot)
 
override bool CanBePutInSlot (Item item, int i, bool ignoreCondition=false)
 Can the item be put in the specified slot. More...
 
override bool CanBePutInSlot (ItemPrefab itemPrefab, int i, float? condition, int? quality=null)
 
override void RemoveItem (Item item)
 
void RemoveItem (Item item, bool tryEquipFromSameStack)
 
bool TryPutItemWithAutoEquipCheck (Item item, Character user, IEnumerable< InvSlotType > allowedSlots=null, bool createNetworkEvent=true)
 If there is no room in the generic inventory (InvSlotType.Any), check if the item can be auto-equipped into its respective limbslot More...
 
override bool TryPutItem (Item item, Character user, IEnumerable< InvSlotType > allowedSlots=null, bool createNetworkEvent=true, bool ignoreCondition=false)
 If there is room, puts the item in the inventory and returns true, otherwise returns false More...
 
bool IsAnySlotAvailable (Item item)
 
override bool TryPutItem (Item item, int index, bool allowSwapping, bool allowCombine, Character user, bool createNetworkEvent=true, bool ignoreCondition=false)
 
override void CreateSlots ()
 
override bool HideSlot (int i)
 
void RefreshSlotPositions ()
 
override void Update (float deltaTime, Camera cam, bool isSubInventory=false)
 
void UpdateSlotInput ()
 
void AssignQuickUseNumKeys ()
 
bool CanBeAutoMovedToCorrectSlots (Item item)
 
void FlashAllowedSlots (Item item, Color color)
 Flash the slots the item is allowed to go in (not taking into account whether there's already something in those slots) More...
 
void DrawOwn (SpriteBatch spriteBatch)
 
void ClientEventWrite (IWriteMessage msg, Character.InventoryStateEventData extraData)
 
- Public Member Functions inherited from Barotrauma.Inventory
 Inventory (Entity owner, int capacity, int slotsPerRow=5)
 
bool Contains (Item item)
 Is the item contained in this inventory. Does not recursively check items inside items. More...
 
Item FirstOrDefault ()
 Return the first item in the inventory, or null if the inventory is empty. More...
 
Item LastOrDefault ()
 Return the last item in the inventory, or null if the inventory is empty. More...
 
Item GetItemAt (int index)
 Get the item stored in the specified inventory slot. If the slot contains a stack of items, returns the first item in the stack. More...
 
IEnumerable< ItemGetItemsAt (int index)
 Get all the item stored in the specified inventory slot. Can return more than one item if the slot contains a stack of items. More...
 
int GetItemStackSlotIndex (Item item, int index)
 
int FindIndex (Item item)
 Find the index of the first slot the item is contained in. More...
 
List< int > FindIndices (Item item)
 Find the indices of all the slots the item is contained in (two-hand items for example can be in multiple slots). Note that this method instantiates a new list. More...
 
virtual bool ItemOwnsSelf (Item item)
 Returns true if the item owns any of the parent inventories. More...
 
virtual int FindAllowedSlot (Item item, bool ignoreCondition=false)
 
bool CanBePut (Item item)
 Can the item be put in the inventory (i.e. is there a suitable free slot or a stack the item can be put in). More...
 
bool CanBePut (ItemPrefab itemPrefab, float? condition=null, int? quality=null)
 
int HowManyCanBePut (ItemPrefab itemPrefab, float? condition=null)
 
virtual int HowManyCanBePut (ItemPrefab itemPrefab, int i, float? condition, bool ignoreItemsInSlot=false)
 
bool IsEmpty ()
 
virtual bool IsFull (bool takeStacksIntoAccount=false)
 Is there room to put more items in the inventory. Doesn't take stacking into account by default. More...
 
void CreateNetworkEvent ()
 
Item FindItem (Func< Item, bool > predicate, bool recursive)
 
List< ItemFindAllItems (Func< Item, bool > predicate=null, bool recursive=false, List< Item > list=null)
 
Item FindItemByTag (Identifier tag, bool recursive=false)
 
Item FindItemByIdentifier (Identifier identifier, bool recursive=false)
 
void ForceToSlot (Item item, int index)
 Forces an item to a specific slot. Doesn't remove the item from existing slots/inventories or do any other sanity checks, use with caution! More...
 
void ForceRemoveFromSlot (Item item, int index)
 Removes an item from a specific slot. Doesn't do any sanity checks, use with caution! More...
 
bool IsInSlot (Item item, int index)
 
void SharedRead (IReadMessage msg, List< ushort >[] receivedItemIds, out bool readyToApply)
 
void SharedWrite (IWriteMessage msg, Range slotRange)
 
void DeleteAllItems ()
 Deletes all items inside the inventory (and also recursively all items inside the items) More...
 
Inventory GetReplacementOrThiS ()
 
bool Movable ()
 
bool IsInventoryHoverAvailable (Character owner, ItemContainer container)
 
void UpdateSubInventory (float deltaTime, int slotIndex, Camera cam)
 
void ClearSubInventories ()
 
virtual void Draw (SpriteBatch spriteBatch, bool subInventory=false)
 
void DrawSubInventory (SpriteBatch spriteBatch, int slotIndex)
 
void ClientEventRead (IReadMessage msg)
 
void ApplyReceivedState ()
 

Static Public Member Functions

static bool IsHandSlotType (InvSlotType s)
 
- Static Public Member Functions inherited from Barotrauma.Inventory
static bool IsMouseOnSlot (VisualSlot slot)
 Check if the mouse is hovering on top of the slot More...
 
static void RefreshMouseOnInventory ()
 Refresh the value of IsMouseOnInventory More...
 
static CursorState GetInventoryMouseCursor ()
 
static void UpdateDragging ()
 
static void DrawFront (SpriteBatch spriteBatch)
 
static void DrawSlot (SpriteBatch spriteBatch, Inventory inventory, VisualSlot slot, Item item, int slotIndex, bool drawItem=true, InvSlotType type=InvSlotType.Any)
 

Public Attributes

Vector2[] SlotPositions
 
- Public Attributes inherited from Barotrauma.Inventory
readonly Entity Owner
 
bool Locked
 
bool AllowSwappingContainedItems = true
 
Inventory ReplacedBy
 
float HideTimer
 
VisualSlot[] visualSlots
 
RectTransform RectTransform
 If set, the inventory is automatically positioned inside the rect More...
 
bool DrawWhenEquipped
 Normally false - we don't draw the UI because it's drawn when the player hovers the cursor over the item in their inventory. Enabled in special cases like equippable fabricators where the inventory is a part of the fabricator UI. More...
 
float OpenState
 

Static Public Attributes

static readonly List< InvSlotTypeAnySlot = new List<InvSlotType>() { InvSlotType.Any }
 
const InvSlotType PersonalSlots = InvSlotType.Card | InvSlotType.Bag | InvSlotType.Headset | InvSlotType.InnerClothes | InvSlotType.OuterClothes | InvSlotType.Head
 
static Point SlotSize
 
- Static Public Attributes inherited from Barotrauma.Inventory
const int MaxPossibleStackSize = (1 << 6) - 1
 
const int MaxItemsPerNetworkEvent = 128
 
static Sprite DraggableIndicator
 
static Sprite UnequippedIndicator
 
static Inventory DraggingInventory
 
static VisualSlot DraggingSlot
 
static readonly List< ItemDraggingItems = new List<Item>()
 
static readonly List< ItemdoubleClickedItems = new List<Item>()
 

Protected Member Functions

override void PutItem (Item item, int i, Character user, bool removeItem=true, bool createNetworkEvent=true)
 
override void CreateNetworkEvent (Range slotRange)
 
override ItemInventory GetActiveEquippedSubInventory (int slotIndex)
 
override void CalculateBackgroundFrame ()
 
override void ControlInput (Camera cam)
 
- Protected Member Functions inherited from Barotrauma.Inventory
IEnumerable< ItemGetAllItems (bool checkForDuplicates)
 
bool TrySwapping (int index, Item item, Character user, bool createNetworkEvent, bool swapWholeStack)
 
void UpdateSlot (VisualSlot slot, int slotIndex, Item item, bool isSubSlot)
 
Inventory GetSubInventory (int slotIndex)
 

Protected Attributes

bool[] IsEquipped
 
- Protected Attributes inherited from Barotrauma.Inventory
readonly int capacity
 
readonly ItemSlot[] slots
 
float syncItemsDelay
 
float prevUIScale = UIScale
 
float prevHUDScale = GUI.Scale
 
Point prevScreenResolution
 
Vector4 padding
 

Properties

InvSlotType[] SlotTypes [get]
 
bool AccessibleWhenAlive [get]
 Can the inventory be accessed when the character is still alive More...
 
bool AccessibleByOwner [get]
 Can the inventory be accessed by the character itself when the character is still alive (only has an effect if AccessibleWhenAlive false) More...
 
static Dictionary< InvSlotType, Sprite >? LimbSlotIcons [get]
 
Layout CurrentLayout [get, set]
 
- Properties inherited from Barotrauma.Inventory
int ExtraStackSize [get, set]
 
virtual IEnumerable< ItemAllItems [get]
 All items contained in the inventory. Stacked items are returned as individual instances. DO NOT modify the contents of the inventory while enumerating this list. More...
 
IEnumerable< ItemAllItemsMod [get]
 All items contained in the inventory. Allows modifying the contents of the inventory while being enumerated. More...
 
int Capacity [get]
 
int EmptySlotCount [get]
 
static float UIScale [get]
 
static int ContainedIndicatorHeight [get]
 
static Sprite SlotSpriteSmall [get]
 
Rectangle BackgroundFrame [get, protected set]
 
static bool DraggingItemToWorld [get]
 
int SlotsPerRow [set]
 
static SlotReference?? SelectedSlot [get]
 
static bool IsMouseOnInventory [get]
 

Additional Inherited Members

- Static Protected Member Functions inherited from Barotrauma.Inventory
static void DrawToolTip (SpriteBatch spriteBatch, RichString toolTip, Rectangle highlightedSlot)
 
static Rectangle GetSubInventoryHoverArea (SlotReference subSlot)
 
- Static Protected Attributes inherited from Barotrauma.Inventory
static Sprite slotHotkeySprite
 
static HashSet< SlotReferencehighlightedSubInventorySlots = new HashSet<SlotReference>()
 
static SlotReference selectedSlot
 

Detailed Description

Member Enumeration Documentation

◆ Layout

Enumerator
Default 
Left 
Right 
Center 

Definition at line 16 of file BarotraumaClient/ClientSource/Items/CharacterInventory.cs.

Constructor & Destructor Documentation

◆ CharacterInventory()

Barotrauma.CharacterInventory.CharacterInventory ( ContentXElement  element,
Character  character,
bool  spawnInitialItems 
)

Member Function Documentation

◆ AssignQuickUseNumKeys()

void Barotrauma.CharacterInventory.AssignQuickUseNumKeys ( )

◆ CalculateBackgroundFrame()

override void Barotrauma.CharacterInventory.CalculateBackgroundFrame ( )
protectedvirtual

◆ CanBeAutoMovedToCorrectSlots()

bool Barotrauma.CharacterInventory.CanBeAutoMovedToCorrectSlots ( Item  item)

◆ CanBePutInSlot() [1/2]

override bool Barotrauma.CharacterInventory.CanBePutInSlot ( Item  item,
int  i,
bool  ignoreCondition = false 
)
virtual

Can the item be put in the specified slot.

Reimplemented from Barotrauma.Inventory.

Definition at line 206 of file BarotraumaShared/SharedSource/Items/CharacterInventory.cs.

◆ CanBePutInSlot() [2/2]

override bool Barotrauma.CharacterInventory.CanBePutInSlot ( ItemPrefab  itemPrefab,
int  i,
float?  condition,
int?  quality = null 
)
virtual

◆ ClientEventWrite()

void Barotrauma.CharacterInventory.ClientEventWrite ( IWriteMessage  msg,
Character.InventoryStateEventData  extraData 
)

◆ ControlInput()

override void Barotrauma.CharacterInventory.ControlInput ( Camera  cam)
protectedvirtual

◆ CreateNetworkEvent()

override void Barotrauma.CharacterInventory.CreateNetworkEvent ( Range  slotRange)
protectedvirtual

◆ CreateSlots()

override void Barotrauma.CharacterInventory.CreateSlots ( )
virtual

◆ DrawOwn()

void Barotrauma.CharacterInventory.DrawOwn ( SpriteBatch  spriteBatch)

◆ FindEquippedItemByTag()

Item Barotrauma.CharacterInventory.FindEquippedItemByTag ( Identifier  tag)

◆ FindLimbSlot()

int Barotrauma.CharacterInventory.FindLimbSlot ( InvSlotType  limbSlot)

◆ FlashAllowedSlots()

void Barotrauma.CharacterInventory.FlashAllowedSlots ( Item  item,
Color  color 
)

Flash the slots the item is allowed to go in (not taking into account whether there's already something in those slots)

Definition at line 1102 of file BarotraumaClient/ClientSource/Items/CharacterInventory.cs.

◆ GetActiveEquippedSubInventory()

override ItemInventory Barotrauma.CharacterInventory.GetActiveEquippedSubInventory ( int  slotIndex)
protectedvirtual

◆ GetItemInLimbSlot()

Item Barotrauma.CharacterInventory.GetItemInLimbSlot ( InvSlotType  limbSlot)

◆ HideSlot()

override bool Barotrauma.CharacterInventory.HideSlot ( int  i)
virtual

◆ IsAnySlotAvailable()

bool Barotrauma.CharacterInventory.IsAnySlotAvailable ( Item  item)

◆ IsHandSlotType()

static bool Barotrauma.CharacterInventory.IsHandSlotType ( InvSlotType  s)
static

◆ IsInLimbSlot()

bool Barotrauma.CharacterInventory.IsInLimbSlot ( Item  item,
InvSlotType  limbSlot 
)

◆ PutItem()

override void Barotrauma.CharacterInventory.PutItem ( Item  item,
int  i,
Character  user,
bool  removeItem = true,
bool  createNetworkEvent = true 
)
protectedvirtual

◆ RefreshSlotPositions()

void Barotrauma.CharacterInventory.RefreshSlotPositions ( )

◆ RemoveItem() [1/2]

override void Barotrauma.CharacterInventory.RemoveItem ( Item  item)
virtual

◆ RemoveItem() [2/2]

void Barotrauma.CharacterInventory.RemoveItem ( Item  item,
bool  tryEquipFromSameStack 
)

◆ TryPutItem() [1/2]

override bool Barotrauma.CharacterInventory.TryPutItem ( Item  item,
Character  user,
IEnumerable< InvSlotType allowedSlots = null,
bool  createNetworkEvent = true,
bool  ignoreCondition = false 
)
virtual

If there is room, puts the item in the inventory and returns true, otherwise returns false

Reimplemented from Barotrauma.Inventory.

Definition at line 325 of file BarotraumaShared/SharedSource/Items/CharacterInventory.cs.

◆ TryPutItem() [2/2]

override bool Barotrauma.CharacterInventory.TryPutItem ( Item  item,
int  index,
bool  allowSwapping,
bool  allowCombine,
Character  user,
bool  createNetworkEvent = true,
bool  ignoreCondition = false 
)
virtual

◆ TryPutItemWithAutoEquipCheck()

bool Barotrauma.CharacterInventory.TryPutItemWithAutoEquipCheck ( Item  item,
Character  user,
IEnumerable< InvSlotType allowedSlots = null,
bool  createNetworkEvent = true 
)

If there is no room in the generic inventory (InvSlotType.Any), check if the item can be auto-equipped into its respective limbslot

Definition at line 266 of file BarotraumaShared/SharedSource/Items/CharacterInventory.cs.

◆ Update()

override void Barotrauma.CharacterInventory.Update ( float  deltaTime,
Camera  cam,
bool  isSubInventory = false 
)
virtual

◆ UpdateSlotInput()

void Barotrauma.CharacterInventory.UpdateSlotInput ( )

Member Data Documentation

◆ AnySlot

readonly List<InvSlotType> Barotrauma.CharacterInventory.AnySlot = new List<InvSlotType>() { InvSlotType.Any }
static

◆ IsEquipped

bool [] Barotrauma.CharacterInventory.IsEquipped
protected

◆ PersonalSlots

◆ SlotPositions

Vector2 [] Barotrauma.CharacterInventory.SlotPositions

◆ SlotSize

Point Barotrauma.CharacterInventory.SlotSize
static

Property Documentation

◆ AccessibleByOwner

bool Barotrauma.CharacterInventory.AccessibleByOwner
get

Can the inventory be accessed by the character itself when the character is still alive (only has an effect if AccessibleWhenAlive false)

Definition at line 45 of file BarotraumaShared/SharedSource/Items/CharacterInventory.cs.

◆ AccessibleWhenAlive

bool Barotrauma.CharacterInventory.AccessibleWhenAlive
get

Can the inventory be accessed when the character is still alive

Definition at line 36 of file BarotraumaShared/SharedSource/Items/CharacterInventory.cs.

◆ CurrentLayout

Layout Barotrauma.CharacterInventory.CurrentLayout
getset

◆ LimbSlotIcons

Dictionary<InvSlotType, Sprite>? Barotrauma.CharacterInventory.LimbSlotIcons
staticget

◆ SlotTypes

InvSlotType [] Barotrauma.CharacterInventory.SlotTypes
get