/// <summary> /// Removes an item at a specific slot /// </summary> /// <param name="slot"> The slot to remove from </param> /// <param name="result"> Description of the result </param> /// <returns> The result </returns> public bool RemoveItemAt(int slot, out ActionbarOperationResult result) { result = ActionbarOperationResult.Success; // rules check if (!CanRemove) { result = ActionbarOperationResult.NotAllowed; return(false); } // actionbar is empty if (IsEmpty) { result = ActionbarOperationResult.ItemNotFound; return(false); } // range check if (slot < 0 || slot >= this.Size) { result = ActionbarOperationResult.ItemNotFound; return(false); } // slot is empty if (slots[slot].IsEmpty) { result = ActionbarOperationResult.ItemNotFound; return(false); } // remove the item at the slot this.slots[slot].IsEmpty = true; this.FilledSlots--; return(true); }
/// <summary> /// Removes a specific item /// </summary> /// <param name="itemType"> The type of the item </param> /// <param name="itemId"> The id of the item </param> /// <param name="result"> Description of the result </param> /// <returns> The result </returns> public bool RemoveItem(ActionItemType itemType, short itemId, out ActionbarOperationResult result) { result = ActionbarOperationResult.Success; // rules check if (!CanRemove) { result = ActionbarOperationResult.NotAllowed; return(false); } // actionbar is empty if (IsEmpty) { result = ActionbarOperationResult.ItemNotFound; return(false); } // searching for the item for (var i = 0; i < this.Size; i++) { // if the slot is empty skip it var slot = slots[i]; if (slot.IsEmpty) { continue; } // matching the item id and the type var item = slot.Item; if (item.Type != itemType || item.ItemId != itemId) { continue; } // remove the item this.slots[i].IsEmpty = true; this.FilledSlots--; return(true); } // this should not happen result = ActionbarOperationResult.Fail; return(false); }
/// <summary> /// Adds a(n) <see cref="ActionItem"/> at a specific slot. /// </summary> /// <param name="itemType"> The type of the item </param> /// <param name="itemId"> The id of the item </param> /// <param name="slot"> The slot to add to </param> /// <param name="result"> Description of the result </param> /// <returns> The result </returns> public bool AddItemAt(ActionItemType itemType, short itemId, int slot, out ActionbarOperationResult result) { result = ActionbarOperationResult.Success; // rules check if (!CanAdd) { result = ActionbarOperationResult.NotAllowed; return(false); } // range check if (slot < 0 || slot >= this.Size) { result = ActionbarOperationResult.Fail; return(false); } // add the item at that slot this.slots[slot] = new Slot { Item = new ActionItem { Type = itemType, ItemId = itemId }, IsEmpty = false }; this.FilledSlots++; return(true); }
/// <summary> /// Adds a(n) <see cref="ActionItem"/> to the next empty slot. /// </summary> /// <param name="itemType"> The type of the item </param> /// <param name="itemId"> The id of the item </param> /// <param name="result"> Description of the result </param> /// <returns> The result </returns> public bool AddItem(ActionItemType itemType, short itemId, out ActionbarOperationResult result) { result = ActionbarOperationResult.Success; // rules check if (!CanAdd) { result = ActionbarOperationResult.NotAllowed; return(false); } // if the actionbar is full just return if (IsFull) { result = ActionbarOperationResult.ActionbarFull; return(false); } // try to find an empty slot for (var i = 0; i < this.Size; i++) { // if the slot isnt empty skip if (!slots[i].IsEmpty) { continue; } // add the item at an empty slot this.slots[i] = new Slot { Item = new ActionItem { Type = itemType, ItemId = itemId }, IsEmpty = false }; this.FilledSlots++; return(true); } // this should not happen result = ActionbarOperationResult.Fail; return(false); }