Example #1
0
 private void SwitchStacks(ItemStack HoldingStack)
 {
     ItemStack TmpStack = HoldingStack;
     World.GetCurrentPlayer().HoldingStack = ItemStack;
     ItemStack = TmpStack;
 }
Example #2
0
 private void MergeStacks(ItemStack HoldingStack)
 {
     switch(State)
     {
         case SlotState.Normal:
         case SlotState.OutputLocked:
             if (HoldingStack.Count + ItemStack.Count <= ItemStack.MAX_STACK)
             {
                 ItemStack.Count = HoldingStack.Count + ItemStack.Count;
                 World.GetCurrentPlayer().HoldingStack = null;
             }
             else
             {
                 World.GetCurrentPlayer().HoldingStack.Count = HoldingStack.Count + ItemStack.Count - ItemStack.MAX_STACK;
                 ItemStack.Count = ItemStack.MAX_STACK;
             }
             break;
         case SlotState.InputLocked:
             if (HoldingStack.Count + ItemStack.Count <= ItemStack.MAX_STACK)
             {
                 World.GetCurrentPlayer().HoldingStack.Count = HoldingStack.Count + ItemStack.Count;
                 ItemStack = null;
             }
             else
             {
                 ItemStack.Count = HoldingStack.Count + ItemStack.Count - ItemStack.MAX_STACK;
                 World.GetCurrentPlayer().HoldingStack.Count = ItemStack.MAX_STACK;
             }
             break;
         case SlotState.IOLocked:
             //nothing
             break;
     }
 }
Example #3
0
        private bool HandleLMBClick()
        {
            ItemStack HoldingStack = World.GetCurrentPlayer().HoldingStack;
            if (ItemStack == null && State == SlotState.Normal || State == SlotState.OutputLocked)
            {
                InsetHoldingToSlot(HoldingStack);
            }
            else if (ItemStack != null)// if there is something in slot
            {
                if (HoldingStack == null)
                {
                    World.GetCurrentPlayer().HoldingStack = this.ItemStack;
                    this.ItemStack = null;
                }
                else
                {
                    if (HoldingStack.Item == ItemStack.Item)
                    {
                        MergeStacks(HoldingStack);
                    }
                    else // Switch
                    {
                        SwitchStacks(HoldingStack);
                    }
                }
            }

            //Call OnStackModified delegate

            if (OnStackModified != null)
            {
                OnStackModified();
            }
            return true;
        }
Example #4
0
 private void InsetHoldingToSlot(ItemStack HoldingStack)
 {
     if (HoldingStack != null)
     {
         ItemStack = World.GetCurrentPlayer().HoldingStack;
         World.GetCurrentPlayer().HoldingStack = null;
     }
 }
Example #5
0
        public void AddToInv(ItemStack AddStack)
        {
            foreach (ItemSlot S in PlayerHotbar)
            {
                if (S.ItemStack == null)
                {
                    S.ItemStack = AddStack;
                    AddStack = null;
                }
                else // if there is something in slot
                {

                    if (AddStack.Item == S.ItemStack.Item)
                    {
                        if (AddStack.Count + S.ItemStack.Count <= ItemStack.MAX_STACK)
                        {
                            S.ItemStack.Count = AddStack.Count + S.ItemStack.Count;
                            AddStack = null;
                        }
                        else
                        {
                            AddStack.Count = AddStack.Count + S.ItemStack.Count - ItemStack.MAX_STACK;
                            S.ItemStack.Count = ItemStack.MAX_STACK;
                        }
                    }
                }

                if (AddStack == null || AddStack.Count == 0) break;
            }

            if (AddStack == null || AddStack.Count == 0) return;

            foreach (ItemSlot S in PlayerInv)
            {
                if (S.ItemStack == null)
                {
                    S.ItemStack = AddStack;
                    AddStack = null;
                    break;
                }
                else // if there is something in slot
                {

                    if (AddStack.Item == S.ItemStack.Item)
                    {
                        if (AddStack.Count + S.ItemStack.Count <= ItemStack.MAX_STACK)
                        {
                            S.ItemStack.Count = AddStack.Count + S.ItemStack.Count;
                            AddStack = null;
                        }
                        else
                        {
                            AddStack.Count = AddStack.Count + S.ItemStack.Count - ItemStack.MAX_STACK;
                            S.ItemStack.Count = ItemStack.MAX_STACK;
                        }
                    }
                }

                if (AddStack == null || AddStack.Count == 0) break;
            }
        }