public InventoryDisplay(SpriteBatch spriteBatch, EquipmentSystem equipmentSystem, InventoryComponent inventoryComponent, ToolbarComponent toolbarComponent) { _spriteBatch = spriteBatch; _equipmentSystem = equipmentSystem; _inventoryComponent = inventoryComponent; _toolbarComponent = toolbarComponent; _pixel = new Texture2D(_spriteBatch.GraphicsDevice, 1, 1); _pixel.SetData<Color>(new[] { Color.White }); }
// addInventoryItem public void addInventoryItem(InventoryComponent inventoryComponent, ItemComponent item) { for (int i = 0; i < inventoryComponent.slots; i++) { if (!inventoryComponent.inventory.ContainsKey(i)) { inventoryComponent.inventory.Add(i, item); return; } } }
// getInventorySlot public int getInventorySlot(InventoryComponent inventoryComponent, ItemComponent itemComponent) { foreach (KeyValuePair<int, ItemComponent> slotItemPair in inventoryComponent.inventory) { if (slotItemPair.Value == itemComponent) { return slotItemPair.Key; } } return -1; }
// getInventoryItem public ItemComponent getInventoryItem(InventoryComponent inventoryComponent, int i) { ItemComponent itemComponent; inventoryComponent.inventory.TryGetValue(i, out itemComponent); return itemComponent; }
// removeInventoryItem public void removeInventoryItem(InventoryComponent inventoryComponent, ItemComponent item) { int index = -1; foreach (KeyValuePair<int, ItemComponent> pair in inventoryComponent.inventory) { if (pair.Value == item) { index = pair.Key; break; } } if (index != -1) { inventoryComponent.inventory.Remove(index); } }
// Load player inventory public static void loadPlayerInventory() { XElement inventoryData = _playerData.Element("InventoryState"); InventoryComponent inventoryComponent = new InventoryComponent(int.Parse(inventoryData.Attribute("slots").Value)); EquipmentSystem equipmentSystem = _systemManager.getSystem(SystemType.Equipment) as EquipmentSystem; _entityManager.addComponent("global", PlayerSystem.PLAYER_ID, inventoryComponent); foreach (XElement itemStateData in inventoryData.Elements("ItemState")) { ItemDefinition itemDefinition = _itemManager.getItemDefinition(itemStateData.Attribute("item_uid").Value); ItemState itemState = new ItemState( int.Parse(itemStateData.Attribute("quantity").Value), float.Parse(itemStateData.Attribute("current_range_limit").Value), false); ItemComponent itemComponent = new ItemComponent(itemDefinition, itemState, ResourceManager.getTexture(itemDefinition.inventoryTextureUid)); equipmentSystem.addInventoryItem(inventoryComponent, itemComponent); } }