Example #1
0
        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
                });
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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;
        }
Example #6
0
        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);
        }
Example #7
0
        // 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
     });
 }
Example #9
0
 private void EquipmentOnItemEvent(object sender, EntityContainerEventArgs <ContainedSlot> entityContainerEventArgs)
 {
     OnInventoryUpdated();
     OnNeedSave();
 }
Example #10
0
 void ContentItemsChanged(object sender, EntityContainerEventArgs <ContainedSlot> e)
 {
     NotifyParentContainerChange();
 }
Example #11
0
 void Content_ItemsChanged(object sender, EntityContainerEventArgs <ContainedSlot> e)
 {
     RecipesListOnSelectionChanged(null, null);
 }
Example #12
0
        // 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;
            }
        }