Example #1
0
 /// <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);
 }
Example #2
0
 /// <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);
 }
Example #3
0
 /// <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);
 }
Example #4
0
 /// <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);
 }