private void UpdateInventorySlots(ItemSlot itemSlot, ItemSlotNetworkedData networkedItemSlot) { if (networkedItemSlot != null) { if (itemSlot is EquipmentSlot) { if (itemSlot.Item != null) { (itemSlot.Item as EquippableItem).Unequip(_stats); } SetItemFromDatabase(itemSlot, networkedItemSlot); (itemSlot.Item as EquippableItem).Equip(_stats); } else { SetItemFromDatabase(itemSlot, networkedItemSlot); } } else { if (itemSlot is EquipmentSlot) { if (itemSlot.Item != null) { (itemSlot.Item as EquippableItem).Unequip(_stats); } } itemSlot.Item = null; } _statsPanel.UpdateStatValues(); UpdateInventoryMaxSlots(); }
public void Init(PlayerStats stats, PlayerInputGrabber input) { _stats = stats; _input = input; // Create static class to handle custom class serialization and call methods from him ItemSlotNetworkedData.RegisterSerialization(); _statsPanel.SetStats(_stats.Strength, _stats.Armour, _stats.FreezeResistance, _stats.HeatResistance); _statsPanel.UpdateStatValues(); Subscribe(); _inventory.Init(); _equipment.Init(); UpdateInventoryMaxSlots(); _networkedInventoryData.OnListChanged += changeEvent => OnNetworkedListChange(changeEvent.index, changeEvent.value, _inventory.itemSlots); _networkedEquipmentData.OnListChanged += changeEvent => OnNetworkedListChange(changeEvent.index, changeEvent.value, _equipment.equipmentSlots); }
private void SetItemFromDatabase(ItemSlot itemSlot, ItemSlotNetworkedData networkedItemSlot) { //Debug.Log("Setting item from database"); itemSlot.Item = _itemDatabase.GetItemCopy(networkedItemSlot.itemId); itemSlot.Amount = networkedItemSlot.itemAmount; }
private void OnNetworkedListChange(int index, ItemSlotNetworkedData networkedItemSlot, IList <ItemSlot> list) { ItemSlot itemSlot = list[index]; UpdateInventorySlots(itemSlot, networkedItemSlot); }