protected virtual void OnItemExchanged(EntityContainerEventArgs <T> e) { var handler = ItemExchanged; if (handler != null) { handler(this, e); } }
void CharacterEquipmentItemPut(object sender, EntityContainerEventArgs <ContainedSlot> e) { var actualItem = PeekSlot(e.Slot.GridPosition); if (actualItem.ItemsCount == e.Slot.ItemsCount) { OnItemEquipped(new CharacterEquipmentEventArgs { EquippedItem = actualItem, Slot = (EquipmentSlotType)e.Slot.GridPosition.Y }); } }
void CharacterEquipmentItemTaken(object sender, EntityContainerEventArgs <ContainedSlot> e) { var actualItem = PeekSlot(e.Slot.GridPosition); if (actualItem == null) { OnItemEquipped(new CharacterEquipmentEventArgs { EquippedItem = null, Slot = (EquipmentSlotType)e.Slot.GridPosition.Y }); } }
private void InventoryOnItemPut(object sender, EntityContainerEventArgs <ContainedSlot> e) { var inventory = _ioc.Get <InventoryComponent>(); if (inventory.IsToolbarSwitching) { return; } var iec = _ioc.Get <InventoryEventComponent>(); iec.Notify(e.Slot.Item, e.Slot.Item.Name + " added", true, e.Slot.ItemsCount); }
void InventoryItemExchanged(object sender, EntityContainerEventArgs <ContainedSlot> e) { if (!Enabled) { return; } if (!_pendingOperation) { throw new InvalidOperationException("Unable to exchange item without taking it first"); } var destContainer = (SlotContainer <ContainedSlot>)sender; var srcLink = _sourceContainer.Parent.GetLink(); var destLink = destContainer.Parent.GetLink(); var srcPosition = _tempSlot.GridPosition; var destPosition = e.Slot.GridPosition; if (_sourceContainer is CharacterEquipment) { srcPosition.X = -1; } if (destContainer is CharacterEquipment) { destPosition.X = -1; } var msg = new ItemTransferMessage { SourceContainerSlot = srcPosition, SourceContainerEntityLink = srcLink, ItemsCount = e.Slot.ItemsCount, DestinationContainerSlot = destPosition, DestinationContainerEntityLink = destLink, IsSwitch = true }; if (srcLink.IsEmpty) { msg.ItemEntityId = _tempSlot.Item.StaticId; } _server.ServerConnection.Send(msg); _tempSlot.Item = e.Exchanged.Item; _tempSlot.ItemsCount = e.Exchanged.ItemsCount; _pendingOperation = true; }
void Inventory_ItemPut(object sender, EntityContainerEventArgs <ContainedSlot> e) { // skip player own messages if (_dontSendInventoryEvents) { return; } // inform client about his inventory change from outside var msg = new ItemTransferMessage { DestinationContainerEntityLink = PlayerCharacter.GetLink(), DestinationContainerSlot = e.Slot.GridPosition, ItemsCount = e.Slot.ItemsCount, ItemEntityId = e.Slot.Item.BluePrintId, SourceEntityId = PlayerCharacter.DynamicId }; Connection.Send(msg); CurrentArea.OnCustomMessage(PlayerCharacter.DynamicId, msg); }
// handling player inventory requests private void InventoryItemTaken(object sender, EntityContainerEventArgs <ContainedSlot> e) { if (!Enabled) { return; } if (_skipInventoryEvents) { return; } // at this point we need to remember what was taken to create appropriate message if (_pendingOperation) { throw new InvalidOperationException("Unable to take another item, release first previous taken item"); } _tempSlot = e.Slot; _pendingOperation = true; _sourceContainer = (ISlotContainer <ContainedSlot>)sender; }
void CharacterEquipmentItemExchanged(object sender, EntityContainerEventArgs <ContainedSlot> e) { OnItemEquipped(new CharacterEquipmentEventArgs { EquippedItem = e.Slot, Slot = (EquipmentSlotType)e.Slot.GridPosition.Y, UnequippedItem = e.Exchanged }); }
private void EquipmentOnItemEvent(object sender, EntityContainerEventArgs <ContainedSlot> entityContainerEventArgs) { OnInventoryUpdated(); OnNeedSave(); }
void ContentItemsChanged(object sender, EntityContainerEventArgs <ContainedSlot> e) { NotifyParentContainerChange(); }
void Content_ItemsChanged(object sender, EntityContainerEventArgs <ContainedSlot> e) { RecipesListOnSelectionChanged(null, null); }
// handling player inventory requests private void InventoryItemPut(object sender, EntityContainerEventArgs <ContainedSlot> e) { if (!Enabled) { return; } if (_skipInventoryEvents) { return; } if (!_pendingOperation) { throw new InvalidOperationException("Unable to put item without taking it first"); } // check if no need to send anything if (_sourceContainer == sender && e.Slot.GridPosition == _tempSlot.GridPosition && e.Slot.ItemsCount == _tempSlot.ItemsCount) { _sourceContainer = null; _pendingOperation = false; return; } // special check, if user puts items at the place where it just take the stack, we decrease that amount and wait if (_sourceContainer == sender && e.Slot.GridPosition == _tempSlot.GridPosition) { _tempSlot.ItemsCount -= e.Slot.ItemsCount; return; } var destContainer = (SlotContainer <ContainedSlot>)sender; var srcLink = _sourceContainer.Parent.GetLink(); var destLink = destContainer.Parent.GetLink(); var srcPosition = _tempSlot.GridPosition; var destPosition = e.Slot.GridPosition; if (_sourceContainer is CharacterEquipment) { srcPosition.X = -1; } if (destContainer is CharacterEquipment) { destPosition.X = -1; } var msg = new ItemTransferMessage { SourceContainerSlot = srcPosition, SourceContainerEntityLink = srcLink, ItemsCount = e.Slot.ItemsCount, DestinationContainerSlot = destPosition, DestinationContainerEntityLink = destLink }; if (srcLink.IsEmpty) { msg.ItemEntityId = _tempSlot.Item.StaticId; } _server.ServerConnection.Send(msg); if (e.Slot.ItemsCount == _tempSlot.ItemsCount) { _sourceContainer = null; _pendingOperation = false; } else { _tempSlot.ItemsCount -= e.Slot.ItemsCount; } }