TestContainerRules() public static method

public static TestContainerRules ( Container, cn, int SlotIndex ) : bool
cn Container,
SlotIndex int
return bool
Example #1
0
    public override bool use()
    {
        GameObject ObjectInHand = playerUW.playerInventory.GetGameObjectInHand();

        //TODO:add object to container or open container.
        //Container cn = this.gameObject.GetComponent<Container>();
        if (ObjectInHand == null)
        {        //Open the container
            OpenContainer();
            return(true);
        }
        else
        {        //Put the item in the container.
            bool Valid = true;
            if (ObjectInHand.GetComponent <Container>() != null)
            {
                if (this.gameObject.name == ObjectInHand.GetComponent <Container>().name)
                {
                    Valid = false;
                    Debug.Log("Attempt to add a container to itself");
                }
            }
            //TODO:Do a test for Container capacity  here.
            //TODO:Do a test for item types accepted.
            if (Container.TestContainerRules(this, 11) == false)
            {
                Valid = false;
                return(true);
            }


            if (Valid)
            {
                if ((ObjectInHand.GetComponent <ObjectInteraction>().isQuant == false) || (ObjectInHand.GetComponent <ObjectInteraction>().isEnchanted))
                {
                    AddItemToContainer(playerUW.playerInventory.ObjectInHand);
                }
                else
                {
                    AddItemMergedItemToContainer(ObjectInHand.gameObject);
                }

                if (isOpenOnPanel == true)
                {                //Container is open for display force a refresh.
                    OpenContainer();
                }
                playerUW.playerInventory.ObjectInHand = "";
                playerUW.CursorIcon = playerUW.CursorIconDefault;

                return(true);
            }
            else
            {
                return(false);
            }
        }
    }
 public void OnClick()
 {
     if (Dragging == true)
     {
         return;
     }
     if ((UWCharacter.Instance.isRoaming == true) || (Quest.instance.InDreamWorld))
     {//No inventory use while using wizard eye.
         return;
     }
     if (UWCharacter.Instance.playerInventory.currentContainer == UWCharacter.Instance.playerInventory.playerContainer) // UWCharacter.Instance.name)
     {                                                                                                                  //Don't do anything on the top level
         UWCharacter.Instance.playerInventory.ContainerOffset = 0;
         BackpackBg.SetActive(false);
         return;
     }
     if (CurrentObjectInHand == null)
     {//Player has no object in their hand. We close up the container.
         ScrollButtonInventory.ScrollValue = 0;
         UWCharacter.Instance.playerInventory.ContainerOffset = 0;
         Container currentContainerObj = UWCharacter.Instance.playerInventory.currentContainer;
         UWCharacter.Instance.playerInventory.currentContainer = currentContainerObj.ContainerParent;
         currentContainerObj.isOpenOnPanel = false;
         //Close child containers as well
         CloseChildContainer(currentContainerObj);
         Container DestinationContainer = UWCharacter.Instance.playerInventory.currentContainer;
         if (UWCharacter.Instance.playerInventory.currentContainer == UWCharacter.Instance.playerInventory.playerContainer)
         {
             GetComponent <RawImage>().texture = UWCharacter.Instance.playerInventory.Blank;
             BackpackBg.SetActive(false);
             if ((DestinationContainer.CountItems() >= 8) && (DestinationContainer != UWCharacter.Instance.playerInventory.playerContainer))
             {
                 InvUp.SetActive(true);
                 InvDown.SetActive(true);
             }
             else
             {
                 InvUp.SetActive(false);
                 InvDown.SetActive(false);
             }
         }
         else
         {
             GetComponent <RawImage>().texture = DestinationContainer.transform.GetComponent <ObjectInteraction>().GetEquipDisplay().texture;
             BackpackBg.SetActive(true);
             if ((DestinationContainer.CountItems() >= 8) && (DestinationContainer != UWCharacter.Instance.playerInventory.playerContainer))
             {
                 InvUp.SetActive(true);
                 InvDown.SetActive(true);
             }
             else
             {
                 InvUp.SetActive(false);
                 InvDown.SetActive(false);
             }
         }
         for (short i = 0; i < 8; i++)
         {
             UWCharacter.Instance.playerInventory.SetObjectAtSlot((short)(i + 11), DestinationContainer.GetItemAt(i));
         }
     }
     else
     {
         if (UWCharacter.InteractionMode != UWCharacter.InteractionModePickup)
         {//Only allow this to happen when in pickup mode.
             return;
         }
         //Move the contents out of the container into the parent.
         //Container CurrentContainer = UWCharacter.Instance.playerInventory.currentContainer; //GameObject.Find(UWCharacter.Instance.playerInventory.currentContainer).GetComponent<Container>();
         Container DestinationContainer = UWCharacter.Instance.playerInventory.currentContainer.ContainerParent; //GameObject.Find(CurrentContainer.ContainerParent).GetComponent<Container>();
         if (Container.TestContainerRules(DestinationContainer, 11, false))
         {
             if (!CurrentObjectInHand.IsStackable())
             {
                 if (DestinationContainer.AddItemToContainer(CurrentObjectInHand))
                 {//Object has moved
                     CurrentObjectInHand = null;
                 }
             }
             else
             {
                 if (DestinationContainer.AddItemMergedItemToContainer(CurrentObjectInHand))
                 {//Object has moved
                     CurrentObjectInHand = null;
                 }
             }
         }
     }
 }
    public override bool use()
    {
        GameObject ObjectInHand = UWCharacter.Instance.playerInventory.GetGameObjectInHand();

        //TODO:add object to container or open container.
        //Container cn = this.gameObject.GetComponent<Container>();
        if (ObjectInHand == null)
        {        //Open the container
            OpenContainer();
            return(true);
        }
        else
        {        //Put the item in the container.
            bool Valid = true;
            if (ObjectInHand.GetComponent <Container>() != null)
            {
                if (this.gameObject.name == ObjectInHand.GetComponent <Container>().name)
                {
                    Valid = false;
                    Debug.Log("Attempt to add a container to itself");
                }
            }

            if (Container.TestContainerRules(this, 11, false) == false)
            {
                Valid = false;
                return(true);
            }

            if (Valid)
            {
                if ((ObjectInHand.GetComponent <ObjectInteraction>().isQuant() == false) || (ObjectInHand.GetComponent <ObjectInteraction>().isEnchanted()))
                {
                    AddItemToContainer(UWCharacter.Instance.playerInventory.ObjectInHand);
                }
                else
                {
                    AddItemMergedItemToContainer(ObjectInHand.gameObject);
                }
                //If the item is already in the current player container then remove it's reference
                //if(UWCharacter.Instance.playerInventory.GetCurrentContainer())
                //	{}

                if (isOpenOnPanel == true)
                {                //Container is open for display force a refresh.
                    OpenContainer();
                }
                else
                {
                    //Remove to prevent item duplication
                    removeFromContainer(UWCharacter.Instance.playerInventory.GetCurrentContainer(), UWCharacter.Instance.playerInventory.ObjectInHand);
                }
                UWCharacter.Instance.playerInventory.ObjectInHand = "";
                UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;

                return(true);
            }
            else
            {
                return(false);
            }
        }
    }
    void RightClickPickup()
    {
        //pInv = player.GetComponent<PlayerInventory>();
        GameObject ObjectUsedOn = null;      //The object at the clicked slot
        bool       DoNotPickup  = false;

        if (UWCharacter.Instance.playerInventory.ObjectInHand != "")
        {
            ObjectInteraction objInt = UWCharacter.Instance.playerInventory.GetGameObjectInHand().GetComponent <ObjectInteraction>();
            if ((SlotCategory != objInt.GetItemType()) && (SlotCategory != -1))
            {            //Slot is not a general use on andThis item type does not go in this slot.
                         //	Debug.Log ("cannot pickup an " + objInt.GetItemType() + " in a " + SlotCategory);
                DoNotPickup = true;
            }
            //Eating food dropped in helm slot
            if (SlotCategory == HELM)
            {
                if (objInt.GetItemType() == ObjectInteraction.FOOD)
                {
                    objInt.Use();
                    DoNotPickup = true;
                    return;
                }
            }

            //if ((objInt.isQuant()==true) && (objInt.isEnchanted()==false))
            if (objInt.IsStackable())
            {
                ObjectUsedOn = UWCharacter.Instance.playerInventory.GetGameObjectAtSlot(slotIndex);                //GameObject.Find (pInv.GetObjectAtSlot(slotIndex));
                if (ObjectUsedOn != null)
                {
                    if (ObjectInteraction.CanMerge(ObjectUsedOn.GetComponent <ObjectInteraction>(), objInt))
                    //	if ((objInt.item_id==ObjectUsedOn.GetComponent<ObjectInteraction>().item_id) && (objInt.quality==ObjectUsedOn.GetComponent<ObjectInteraction>().quality))
                    {
                        //merge the items
                        ObjectInteraction.Merge(ObjectUsedOn.GetComponent <ObjectInteraction>(), objInt);
                        //ObjectUsedOn.GetComponent<ObjectInteraction>().link=ObjectUsedOn.GetComponent<ObjectInteraction>().link+objInt.link;
                        UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                        UWCharacter.Instance.playerInventory.ObjectInHand = "";
                        UWCharacter.Instance.playerInventory.Refresh(slotIndex);
                        //Destroy(objInt.gameObject);
                        return;
                    }
                }
            }
        }
        //Code for when I right click in pickup mode.
        if (UWCharacter.Instance.playerInventory.GetObjectAtSlot(slotIndex) != "")
        {                //Special case for opening containers in pickup mode.
            ObjectUsedOn = UWCharacter.Instance.playerInventory.GetGameObjectAtSlot(slotIndex);
            if ((UWCharacter.Instance.playerInventory.ObjectInHand == ""))
            {
                if (ObjectUsedOn.GetComponent <Container>() != null)
                {
                    if (ObjectUsedOn.GetComponent <Container>().isOpenOnPanel == true)
                    {
                        return;
                    }
                    UWCharacter.Instance.playerInventory.ObjectInHand = ObjectUsedOn.name;
                    UWHUD.instance.CursorIcon = ObjectUsedOn.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
                    if (this.slotIndex >= 11)
                    {
                        //Container cn = //;GameObject.Find(pInv.currentContainer).GetComponent<Container>();
                        UWCharacter.Instance.playerInventory.GetCurrentContainer().RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                    }
                    UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
                    return;
                }
            }
        }

        if (UWCharacter.Instance.playerInventory.GetObjectAtSlot(slotIndex) == "")      //No object in slot
        {
            if (DoNotPickup == false)
            {
                if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.GetCurrentContainer(), slotIndex, false))
                {
                    UWCharacter.Instance.playerInventory.SetObjectAtSlot(slotIndex, UWCharacter.Instance.playerInventory.ObjectInHand);
                    UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                    UWCharacter.Instance.playerInventory.SetObjectInHand("");                            // .ObjectInHand="";
                }
            }
        }
        else
        {
            bool ObjectActivated = false;
            //Get the object at the slot and test it's activation.
            ObjectUsedOn = UWCharacter.Instance.playerInventory.GetGameObjectAtSlot(slotIndex);            //GameObject.Find (pInv.GetObjectAtSlot(slotIndex));
            //When right clicking only try to activate when an object in in the hand
            if (UWCharacter.Instance.playerInventory.GetObjectInHand() != "")
            {
                ObjectActivated = ObjectUsedOn.GetComponent <ObjectInteraction>().Use();
            }
            if (ObjectActivated == false)
            {                    //if nothing happened when I clicked on the object at the slot with something in hand.
                if (UWCharacter.Instance.playerInventory.GetObjectInHand() != "")
                {
                    if (DoNotPickup == false)
                    {
                        //TODO: Make sure this works with Equipment slots
                        //No effect occurred. Swap the two objects.
                        if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.GetCurrentContainer(), slotIndex, true))
                        {
                            UWCharacter.Instance.playerInventory.SwapObjects(ObjectUsedOn, slotIndex, UWCharacter.Instance.playerInventory.ObjectInHand);
                            UWCharacter.Instance.playerInventory.Refresh();
                        }
                    }
                }
                else
                {                        //Pick up the item at that slot.
                    //TODO: Make this work with Equipment slots
                    if (DoNotPickup == false)
                    {
                        ObjectInteraction objIntUsedOn = ObjectUsedOn.GetComponent <ObjectInteraction>();
                        //if ((ObjectUsedOn.GetComponent<ObjectInteraction>().isQuant() ==false) || ((ObjectUsedOn.GetComponent<ObjectInteraction>().isQuant())&&(ObjectUsedOn.GetComponent<ObjectInteraction>().link==1)) || (ObjectUsedOn.GetComponent<ObjectInteraction>().isEnchanted() ==true))
                        if ((!objIntUsedOn.IsStackable()) || ((objIntUsedOn.IsStackable()) && (objIntUsedOn.GetQty() <= 1)))
                        {                                //Is either not a quant or is a quantity of 1
                            UWCharacter.Instance.playerInventory.ObjectInHand = ObjectUsedOn.name;
                            //UWHUD.instance.CursorIcon= ObjectUsedOn.GetComponent<ObjectInteraction>().GetInventoryDisplay().texture;
                            UWHUD.instance.CursorIcon = objIntUsedOn.GetInventoryDisplay().texture;
                            if (this.slotIndex >= 11)
                            {
                                UWCharacter.Instance.playerInventory.GetCurrentContainer().RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                            }
                            UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
                        }
                        else
                        {
                            //Debug.Log("attempting to pick up a quantity");
                            if (ConversationVM.InConversation == true)
                            {
                                //UWHUD.instance.MessageScroll.SetAnchorX(1.0f);//Move off screen.
                                //UWHUD.instance.MessageScrollTemp.SetAnchorX(0.06f);
                                InventorySlot.TempLookAt = UWHUD.instance.MessageScroll.NewUIOUt.text;
                                UWHUD.instance.MessageScroll.Set("Move how many?");

                                ConversationVM.EnteringQty = true;
                            }
                            else
                            {
                                UWHUD.instance.MessageScroll.Set("Move how many?");
                            }
                            InputField inputctrl = UWHUD.instance.InputControl;

                            inputctrl.gameObject.SetActive(true);
                            inputctrl.text = objIntUsedOn.GetQty().ToString();                          //"1";


                            inputctrl.gameObject.GetComponent <InputHandler>().target           = this.gameObject;
                            inputctrl.gameObject.GetComponent <InputHandler>().currentInputMode = InputHandler.InputInventoryQty;

                            inputctrl.contentType = InputField.ContentType.IntegerNumber;
                            inputctrl.Select();

                            WindowDetect.WaitingForInput = true;
                            Time.timeScale = 0.0f;
                            QuantityObj    = ObjectUsedOn;
                        }
                    }
                }
            }
        }
    }
    void LeftClickPickup()
    {    //Code for when I left click in pickup mode
        GameObject ObjectUsedOn = null;
        bool       DoNotPickup  = false;

        if (UWCharacter.Instance.playerInventory.ObjectInHand != "")
        {
            ObjectInteraction objInt = UWCharacter.Instance.playerInventory.GetObjIntInHand();
            //Eating food dropped in helm slot
            if (SlotCategory == HELM)
            {
                if (objInt.GetItemType() == ObjectInteraction.FOOD)
                {
                    objInt.Use();
                    DoNotPickup = true;
                    return;
                }
            }

            if ((SlotCategory != objInt.GetItemType()) && (SlotCategory != -1))
            {                    //Slot is not a general use one andThis item type does not go in this slot.
                //Debug.Log ("cannot pickup an " + objInt.GetItemType() + " in a " + SlotCategory + " at " + this.name);
                DoNotPickup = true;
            }

            if (objInt.IsStackable())
            {
                ObjectUsedOn = GameObject.Find(UWCharacter.Instance.playerInventory.GetObjectAtSlot(slotIndex));
                if (ObjectUsedOn != null)
                {
                    if (ObjectInteraction.CanMerge(ObjectUsedOn.GetComponent <ObjectInteraction>(), objInt))
                    {
                        ObjectInteraction.Merge(ObjectUsedOn.GetComponent <ObjectInteraction>(), objInt);
                        UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                        UWCharacter.Instance.playerInventory.ObjectInHand = "";
                        UWCharacter.Instance.playerInventory.Refresh(slotIndex);
                        return;
                    }
                }
            }
        }

        if (UWCharacter.Instance.playerInventory.GetObjectAtSlot(slotIndex) == "")      //No object in slot
        {
            if (DoNotPickup == false)
            {
                if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.GetCurrentContainer(), slotIndex, false))
                {
                    UWCharacter.Instance.playerInventory.SetObjectAtSlot(slotIndex, UWCharacter.Instance.playerInventory.ObjectInHand);
                    UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                    UWCharacter.Instance.playerInventory.SetObjectInHand("");
                }
            }
        }
        else
        {
            //Get the object at the slot and test it's activation.
            ObjectUsedOn = UWCharacter.Instance.playerInventory.GetGameObjectAtSlot(slotIndex); //GameObject.Find (pInv.GetObjectAtSlot(slotIndex));
            if (ObjectUsedOn.GetComponent <ObjectInteraction>().Use() == false)
            {                                                                                   //if nothing happened when I clicked on the object at the slot.
                if (UWCharacter.Instance.playerInventory.ObjectInHand != "")
                {
                    //TODO: Make sure this works with Equipment slots
                    //No effect occurred. Swap the two objects.
                    if (DoNotPickup == false)
                    {
                        if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.GetCurrentContainer(), slotIndex, true))
                        {
                            UWCharacter.Instance.playerInventory.SwapObjects(ObjectUsedOn, slotIndex, UWCharacter.Instance.playerInventory.ObjectInHand);
                        }
                    }
                }
                else
                {                                //Pick up the item at that slot.
                    //TODO: Make this work with Equipment slots
                    UWCharacter.Instance.playerInventory.ObjectInHand = ObjectUsedOn.name;
                    UWHUD.instance.CursorIcon = ObjectUsedOn.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
                    //UWCharacter.Instance.CurrObjectSprite = ObjectUsedOn.GetComponent<ObjectInteraction>().InventoryString;
                    if (this.slotIndex >= 11)
                    {
                        Container cn = GameObject.Find(UWCharacter.Instance.playerInventory.currentContainer).GetComponent <Container>();
                        cn.RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                    }
                    UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
                }
            }
        }
    }
    void RightClickPickup()
    {
        ObjectInteraction ObjectUsedOn = UWCharacter.Instance.playerInventory.GetObjectIntAtSlot(slotIndex);//The object at the clicked slot
        bool DoNotPickup = false;

        if (CurrentObjectInHand != null)
        {
            if ((SlotCategory != CurrentObjectInHand.GetItemType()) && (SlotCategory != -1))
            {//Slot is not a general use on and This item type does not go in this slot.
                DoNotPickup = true;
            }
            //Eating food dropped in helm slot
            if (SlotCategory == HELM)
            {
                if (CurrentObjectInHand.GetItemType() == ObjectInteraction.FOOD)
                {
                    CurrentObjectInHand.Use();
                    DoNotPickup = true;
                    return;
                }
            }

            if (CurrentObjectInHand.IsStackable())
            {
                if (ObjectUsedOn != null)
                {
                    if (ObjectInteraction.CanMerge(ObjectUsedOn, CurrentObjectInHand))
                    {
                        //merge the items
                        ObjectInteraction.Merge(ObjectUsedOn, CurrentObjectInHand);
                        CurrentObjectInHand = null;
                        UWCharacter.Instance.playerInventory.Refresh();
                        return;
                    }
                }
            }
        }

        //Code for when I right click in pickup mode.
        if (UWCharacter.Instance.playerInventory.GetObjectAtSlot(slotIndex) != null)
        {//Special case for opening containers in pickup mode.
            if ((CurrentObjectInHand == null))
            {
                if (ObjectUsedOn.GetComponent <Container>() != null)
                {
                    if (ObjectUsedOn.GetComponent <Container>().isOpenOnPanel == true)
                    {
                        return;
                    }
                    CurrentObjectInHand = ObjectUsedOn.GetComponent <ObjectInteraction>();
                    if (this.slotIndex >= 11)
                    {
                        UWCharacter.Instance.playerInventory.currentContainer.RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                    }
                    UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
                    return;
                }
            }
        }

        if (UWCharacter.Instance.playerInventory.GetObjectAtSlot(slotIndex) == null)//No object in slot
        {
            if (DoNotPickup == false)
            {
                if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.currentContainer, slotIndex, false))
                {
                    UWCharacter.Instance.playerInventory.SetObjectAtSlot(slotIndex, CurrentObjectInHand);
                    CurrentObjectInHand = null;
                }
            }
        }
        else
        {
            bool ObjectActivated = false;
            //Get the object at the slot and test it's activation.

            //When right clicking only try to activate when an object in in the hand
            if (CurrentObjectInHand != null)
            {
                ObjectActivated = ObjectUsedOn.GetComponent <ObjectInteraction>().Use();
            }
            if (ObjectActivated == false)
            {//if nothing happened when I clicked on the object at the slot with something in hand.
                if (CurrentObjectInHand != null)
                {
                    if (DoNotPickup == false)
                    {
                        //TODO: Make sure this works with Equipment slots
                        //No effect occurred. Swap the two objects.
                        if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.currentContainer, slotIndex, true))
                        {
                            UWCharacter.Instance.playerInventory.SwapObjects(ObjectUsedOn, slotIndex, CurrentObjectInHand);
                            UWCharacter.Instance.playerInventory.Refresh();
                        }
                    }
                }
                else
                {//Pick up the item at that slot.
                 //TODO: Make this work with Equipment slots
                    if (DoNotPickup == false)
                    {
                        ObjectInteraction objIntUsedOn = ObjectUsedOn.GetComponent <ObjectInteraction>();
                        if ((!objIntUsedOn.IsStackable()) || ((objIntUsedOn.IsStackable()) && (objIntUsedOn.GetQty() <= 1)))
                        {//Is either not a quant or is a quantity of 1
                            CurrentObjectInHand = ObjectUsedOn;
                            if (this.slotIndex >= 11)
                            {
                                UWCharacter.Instance.playerInventory.currentContainer.RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                            }
                            UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
                        }
                        else
                        {
                            if (ConversationVM.InConversation == true)
                            {
                                //InventorySlot.TempLookAt = UWHUD.instance.MessageScroll.NewUIOUt.text;
                                //UWHUD.instance.MessageScroll.NewUIOUt.text = "";
                                UWHUD.instance.ConversationButtonParent.SetActive(false);
                                UWHUD.instance.MessageScroll.Set("Move how many?");
                                ConversationVM.EnteringQty = true;
                            }
                            else
                            {
                                UWHUD.instance.MessageScroll.Set("Move how many?");
                            }
                            InputField inputctrl = UWHUD.instance.InputControl;

                            inputctrl.gameObject.SetActive(true);
                            inputctrl.text = objIntUsedOn.GetQty().ToString();//"1";
                            inputctrl.gameObject.GetComponent <InputHandler>().target           = this.gameObject;
                            inputctrl.gameObject.GetComponent <InputHandler>().currentInputMode = InputHandler.InputInventoryQty;
                            inputctrl.contentType = InputField.ContentType.IntegerNumber;
                            inputctrl.Select();

                            WindowDetect.WaitingForInput = true;
                            Time.timeScale = 0.0f;
                            QuantityObj    = ObjectUsedOn;
                        }
                    }
                }
            }
        }
    }
Example #7
0
 void OnClick()
 {
     if (playerUW.playerInventory.currentContainer == playerUW.name)
     {        //Don't do anything on the top level
         playerUW.playerInventory.ContainerOffset = 0;
         return;
     }
     if (playerUW.playerInventory.ObjectInHand == "")
     {        //Player has no object in their hand. We close up the container.
         ScrollButtonInventory.ScrollValue        = 0;
         playerUW.playerInventory.ContainerOffset = 0;
         Container currentContainerObj = playerUW.playerInventory.GetCurrentContainer();
         playerUW.playerInventory.currentContainer = currentContainerObj.ContainerParent;
         currentContainerObj.isOpenOnPanel         = false;
         //Close child containers as well
         CloseChildContainer(currentContainerObj);
         Container DestinationContainer = playerUW.playerInventory.GetCurrentContainer();
         if (playerUW.playerInventory.currentContainer == "Gronk")
         {
             GetComponent <UITexture>().mainTexture = playerUW.playerInventory.Blank;
         }
         else
         {
             GetComponent <UITexture>().mainTexture = DestinationContainer.transform.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
         }
         for (int i = 0; i < 8; i++)
         {
             string sItem = DestinationContainer.GetItemAt(i);
             playerUW.playerInventory.SetObjectAtSlot(i + 11, sItem);
         }
     }
     else
     {
         if (UWCharacter.InteractionMode != UWCharacter.InteractionModePickup)
         {            //Only allow this to happen when in pickup mode.
             return;
         }
         //Move the contents out of the container into the parent.
         Container         CurrentContainer     = GameObject.Find(playerUW.playerInventory.currentContainer).GetComponent <Container>();
         Container         DestinationContainer = GameObject.Find(CurrentContainer.ContainerParent).GetComponent <Container>();
         ObjectInteraction item = GameObject.Find(playerUW.playerInventory.ObjectInHand).GetComponent <ObjectInteraction>();
         if (Container.TestContainerRules(DestinationContainer, 11))
         {
             if ((item.isQuant == false) || (item.isEnchanted))
             {
                 if (DestinationContainer.AddItemToContainer(playerUW.playerInventory.ObjectInHand))
                 {                    //Object has moved
                     playerUW.CursorIcon = playerUW.CursorIconDefault;
                     playerUW.playerInventory.ObjectInHand = "";
                 }
             }
             else
             {
                 if (DestinationContainer.AddItemMergedItemToContainer(item.gameObject))
                 {                    //Object has moved
                     playerUW.CursorIcon = playerUW.CursorIconDefault;
                     playerUW.playerInventory.ObjectInHand = "";
                 }
             }
         }
     }
 }
    /// <summary>
    /// Code for when left clicking in pickup mode
    /// </summary>
    void LeftClickPickup()
    {
        ObjectInteraction ObjectUsedOn = UWCharacter.Instance.playerInventory.GetObjectIntAtSlot(slotIndex);
        bool DoNotPickup = false;

        if (CurrentObjectInHand != null)
        {
            //Special case Eating food dropped on helm slot
            if (SlotCategory == HELM)
            {
                if (CurrentObjectInHand.Eat())
                {//True is returned if some eating action has taken place.
                    DoNotPickup = true;
                    return;
                }
            }

            if ((SlotCategory != CurrentObjectInHand.GetItemType()) && (SlotCategory != -1))
            {//Slot is not a general use one and this item type does not go in this slot. Eg putting a sword on a ring slot
                DoNotPickup = true;
            }

            if (CurrentObjectInHand.IsStackable())
            {//Check if object is stackable and if so try and merge them together if the object being added is of the same type.
                if (ObjectUsedOn != null)
                {
                    if (ObjectInteraction.CanMerge(ObjectUsedOn, CurrentObjectInHand))
                    {
                        ObjectInteraction.Merge(ObjectUsedOn, CurrentObjectInHand);
                        CurrentObjectInHand = null;
                        UWCharacter.Instance.playerInventory.Refresh();
                        return;
                    }
                }
            }
        }


        if (ObjectUsedOn == null)//No object in slot -> add to the slot
        {
            if (DoNotPickup == false)
            {
                if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.currentContainer, slotIndex, false))
                {
                    UWCharacter.Instance.playerInventory.SetObjectAtSlot(slotIndex, CurrentObjectInHand);
                    CurrentObjectInHand = null;
                }
            }
        }
        else
        {
            //Get the object at the slot and test if it is activated or effected by the object in the players hand
            if (ObjectUsedOn.Use() == false)
            {//if nothing happened when I clicked on the object at the slot.
                if (CurrentObjectInHand != null)
                {
                    //TODO: Make sure this works with Equipment slots
                    //No effect occurred. Swap the two objects.
                    if (DoNotPickup == false)
                    {
                        if (Container.TestContainerRules(UWCharacter.Instance.playerInventory.currentContainer, slotIndex, true))
                        {
                            UWCharacter.Instance.playerInventory.SwapObjects(ObjectUsedOn, slotIndex, CurrentObjectInHand);
                        }
                    }
                }
                else
                {//Pick up the item at that slot.
                 //TODO: Make this work with Equipment slots
                    CurrentObjectInHand = ObjectUsedOn;
                    if (this.slotIndex >= 11)
                    {
                        UWCharacter.Instance.playerInventory.currentContainer.RemoveItemFromContainer(UWCharacter.Instance.playerInventory.ContainerOffset + this.slotIndex - 11);
                    }
                    UWCharacter.Instance.playerInventory.ClearSlot(this.slotIndex);
                }
            }
        }
    }
 public void OnClick()
 {
     if (Dragging == true)
     {
         return;
     }
     if (UWCharacter.Instance.playerInventory.currentContainer == UWCharacter.Instance.name)
     {                        //Don't do anything on the top level
         UWCharacter.Instance.playerInventory.ContainerOffset = 0;
         BackpackBg.SetActive(false);
         return;
     }
     if (UWCharacter.Instance.playerInventory.ObjectInHand == "")
     {                        //Player has no object in their hand. We close up the container.
         ScrollButtonInventory.ScrollValue = 0;
         UWCharacter.Instance.playerInventory.ContainerOffset = 0;
         Container currentContainerObj = UWCharacter.Instance.playerInventory.GetCurrentContainer();
         UWCharacter.Instance.playerInventory.currentContainer = currentContainerObj.ContainerParent;
         currentContainerObj.isOpenOnPanel = false;
         //Close child containers as well
         CloseChildContainer(currentContainerObj);
         Container DestinationContainer = UWCharacter.Instance.playerInventory.GetCurrentContainer();
         if (UWCharacter.Instance.playerInventory.currentContainer == UWCharacter.Instance.name)
         {
             GetComponent <RawImage>().texture = UWCharacter.Instance.playerInventory.Blank;
             BackpackBg.SetActive(false);
             if ((DestinationContainer.CountItems() >= 8) && (DestinationContainer != UWCharacter.Instance.playerInventory.playerContainer))
             {
                 InvUp.SetActive(true);
                 InvDown.SetActive(true);
             }
             else
             {
                 InvUp.SetActive(false);
                 InvDown.SetActive(false);
             }
         }
         else
         {
             GetComponent <RawImage>().texture = DestinationContainer.transform.GetComponent <ObjectInteraction>().GetEquipDisplay().texture;
             BackpackBg.SetActive(true);
             if ((DestinationContainer.CountItems() >= 8) && (DestinationContainer != UWCharacter.Instance.playerInventory.playerContainer))
             {
                 InvUp.SetActive(true);
                 InvDown.SetActive(true);
             }
             else
             {
                 InvUp.SetActive(false);
                 InvDown.SetActive(false);
             }
         }
         for (short i = 0; i < 8; i++)
         {
             string sItem = DestinationContainer.GetItemAt(i);
             UWCharacter.Instance.playerInventory.SetObjectAtSlot((short)(i + 11), sItem);
         }
     }
     else
     {
         if (UWCharacter.InteractionMode != UWCharacter.InteractionModePickup)
         {                                    //Only allow this to happen when in pickup mode.
             return;
         }
         //Move the contents out of the container into the parent.
         Container         CurrentContainer     = GameObject.Find(UWCharacter.Instance.playerInventory.currentContainer).GetComponent <Container>();
         Container         DestinationContainer = GameObject.Find(CurrentContainer.ContainerParent).GetComponent <Container>();
         ObjectInteraction item = GameObject.Find(UWCharacter.Instance.playerInventory.ObjectInHand).GetComponent <ObjectInteraction>();
         if (Container.TestContainerRules(DestinationContainer, 11, false))
         {
             //if ((item.isQuant()==false) || (item.isEnchanted()))
             if (!item.IsStackable())
             {
                 if (DestinationContainer.AddItemToContainer(UWCharacter.Instance.playerInventory.ObjectInHand))
                 {                                                            //Object has moved
                     UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                     UWCharacter.Instance.playerInventory.ObjectInHand = "";
                 }
             }
             else
             {
                 if (DestinationContainer.AddItemMergedItemToContainer(item.gameObject))
                 {                                                            //Object has moved
                     UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                     UWCharacter.Instance.playerInventory.ObjectInHand = "";
                 }
             }
         }
     }
 }
Example #10
0
    void RightClickPickup()
    {
        //pInv = player.GetComponent<PlayerInventory>();
        GameObject ObjectUsedOn = null;      //The object at the clicked slot
        bool       DoNotPickup  = false;

        if (playerUW.playerInventory.ObjectInHand != "")
        {
            ObjectInteraction objInt = playerUW.playerInventory.GetGameObjectInHand().GetComponent <ObjectInteraction>();
            if ((SlotCategory != objInt.ItemType) && (SlotCategory != -1))
            {            //Slot is not a general use on andThis item type does not go in this slot.
                         //	Debug.Log ("cannot pickup an " + objInt.ItemType + " in a " + SlotCategory);
                DoNotPickup = true;
            }
            if ((objInt.isQuant == true) && (objInt.isEnchanted == false))
            {
                ObjectUsedOn = playerUW.playerInventory.GetGameObjectAtSlot(slotIndex);                //GameObject.Find (pInv.GetObjectAtSlot(slotIndex));
                if (ObjectUsedOn != null)
                {
                    if ((objInt.item_id == ObjectUsedOn.GetComponent <ObjectInteraction>().item_id) && (objInt.Quality == ObjectUsedOn.GetComponent <ObjectInteraction>().Quality))
                    {
                        //merge the items
                        ObjectUsedOn.GetComponent <ObjectInteraction>().Link = ObjectUsedOn.GetComponent <ObjectInteraction>().Link + objInt.Link;
                        playerUW.CursorIcon = playerUW.CursorIconDefault;
                        playerUW.playerInventory.ObjectInHand = "";
                        Destroy(objInt.gameObject);
                        return;
                    }
                }
            }
        }
        //Code for when I right click in pickup mode.
        if (playerUW.playerInventory.GetObjectAtSlot(slotIndex) != "")
        {                //Special case for opening containers in pickup mode.
            ObjectUsedOn = playerUW.playerInventory.GetGameObjectAtSlot(slotIndex);
            if ((playerUW.playerInventory.ObjectInHand == ""))
            {
                if (ObjectUsedOn.GetComponent <Container>() != null)
                {
                    if (ObjectUsedOn.GetComponent <Container>().isOpenOnPanel == true)
                    {
                        return;
                    }
                    playerUW.playerInventory.ObjectInHand = ObjectUsedOn.name;
                    playerUW.CursorIcon = ObjectUsedOn.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
                    if (this.slotIndex >= 11)
                    {
                        //Container cn = //;GameObject.Find(pInv.currentContainer).GetComponent<Container>();
                        playerUW.playerInventory.GetCurrentContainer().RemoveItemFromContainer(playerUW.playerInventory.ContainerOffset + this.slotIndex - 11);
                    }
                    playerUW.playerInventory.ClearSlot(this.slotIndex);
                    return;
                }
            }
        }

        if (playerUW.playerInventory.GetObjectAtSlot(slotIndex) == "")      //No object in slot
        {
            if (DoNotPickup == false)
            {
                if (Container.TestContainerRules(playerUW.playerInventory.GetCurrentContainer(), slotIndex))
                {
                    playerUW.playerInventory.SetObjectAtSlot(slotIndex, playerUW.playerInventory.ObjectInHand);
                    playerUW.CursorIcon = playerUW.CursorIconDefault;
                    playerUW.playerInventory.SetObjectInHand("");                            // .ObjectInHand="";
                }
            }
        }
        else
        {
            bool ObjectActivated = false;
            //Get the object at the slot and test it's activation.
            ObjectUsedOn = playerUW.playerInventory.GetGameObjectAtSlot(slotIndex);            //GameObject.Find (pInv.GetObjectAtSlot(slotIndex));
            //When right clicking only try to activate when an object in in the hand
            if (playerUW.playerInventory.GetObjectInHand() != "")
            {
                ObjectActivated = ObjectUsedOn.GetComponent <ObjectInteraction>().Use();
            }
            if (ObjectActivated == false)
            {                    //if nothing happened when I clicked on the object at the slot with something in hand.
                if (playerUW.playerInventory.GetObjectInHand() != "")
                {
                    if (DoNotPickup == false)
                    {
                        //TODO: Make sure this works with Equipment slots
                        //No effect occurred. Swap the two objects.
                        if (Container.TestContainerRules(playerUW.playerInventory.GetCurrentContainer(), slotIndex))
                        {
                            playerUW.playerInventory.SwapObjects(ObjectUsedOn, slotIndex, playerUW.playerInventory.ObjectInHand);
                            playerUW.playerInventory.Refresh();
                        }
                    }
                }
                else
                {                        //Pick up the item at that slot.
                    //TODO: Make this work with Equipment slots
                    if (DoNotPickup == false)
                    {
                        if ((ObjectUsedOn.GetComponent <ObjectInteraction>().isQuant == false) || ((ObjectUsedOn.GetComponent <ObjectInteraction>().isQuant) && (ObjectUsedOn.GetComponent <ObjectInteraction>().Link == 1)) || (ObjectUsedOn.GetComponent <ObjectInteraction>().isEnchanted == true))
                        {                                //Is either not a quant or is a quantity of 1
                            playerUW.playerInventory.ObjectInHand = ObjectUsedOn.name;
                            playerUW.CursorIcon = ObjectUsedOn.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
                            if (this.slotIndex >= 11)
                            {
                                playerUW.playerInventory.GetCurrentContainer().RemoveItemFromContainer(playerUW.playerInventory.ContainerOffset + this.slotIndex - 11);
                            }
                            playerUW.playerInventory.ClearSlot(this.slotIndex);
                        }
                        else
                        {
                            //Debug.Log("attempting to pick up a quantity");
                            if (Conversation.InConversation == true)
                            {
                                playerUW.playerHud.MessageScroll.SetAnchorX(1.0f);                                //Move off screen.
                                playerUW.playerHud.MessageScrollTemp.SetAnchorX(0.06f);
                                playerUW.playerHud.MessageScrollTemp.Set("Move how many?");
                                Conversation.EnteringQty = true;
                            }
                            else
                            {
                                playerUW.playerHud.MessageScroll.Set("Move how many?");
                            }
                            //playerUW.playerHud.MessageScroll.Set ("Move how many?");
                            UIInput inputctrl = playerUW.playerHud.InputControl;                           //playerHud.MessageScroll.GetComponent<UIInput>();
                            inputctrl.GetComponent <GuiBase>().SetAnchorX(0.3f);
                            //	UIInput inputctrl =playerUW.playerHud.InputControl;
                            inputctrl.text               = "1";
                            inputctrl.label.text         = "1";
                            inputctrl.eventReceiver      = this.gameObject;
                            inputctrl.type               = UIInput.KeyboardType.NumberPad;
                            inputctrl.selected           = true;
                            WindowDetect.WaitingForInput = true;
                            Time.timeScale               = 0.0f;
                            QuantityObj = ObjectUsedOn;
                        }
                    }
                }
            }
        }
    }
Example #11
0
    void LeftClickPickup()
    {    //Code for when I left click in pickup mode
        GameObject ObjectUsedOn = null;
        bool       DoNotPickup  = false;

        if (playerUW.playerInventory.ObjectInHand != "")
        {
            ObjectInteraction objInt = playerUW.playerInventory.GetGameObjectInHand().GetComponent <ObjectInteraction>();
            if ((SlotCategory != objInt.ItemType) && (SlotCategory != -1))
            {                    //Slot is not a general use one andThis item type does not go in this slot.
                Debug.Log("cannot pickup an " + objInt.ItemType + " in a " + SlotCategory);
                DoNotPickup = true;
            }

            if ((objInt.isQuant == true) && (objInt.isEnchanted == false))
            {
                ObjectUsedOn = GameObject.Find(playerUW.playerInventory.GetObjectAtSlot(slotIndex));
                if (ObjectUsedOn != null)
                {
                    if ((objInt.item_id == ObjectUsedOn.GetComponent <ObjectInteraction>().item_id) && (objInt.Quality == ObjectUsedOn.GetComponent <ObjectInteraction>().Quality))
                    {
                        //merge the items
                        ObjectUsedOn.GetComponent <ObjectInteraction>().Link = ObjectUsedOn.GetComponent <ObjectInteraction>().Link + objInt.Link;
                        playerUW.CursorIcon = playerUW.CursorIconDefault;
                        playerUW.playerInventory.ObjectInHand = "";
                        Destroy(objInt.gameObject);
                        return;
                    }
                }
            }
        }

        if (playerUW.playerInventory.GetObjectAtSlot(slotIndex) == "")      //No object in slot
        {
            if (DoNotPickup == false)
            {
                if (Container.TestContainerRules(playerUW.playerInventory.GetCurrentContainer(), slotIndex))
                {
                    playerUW.playerInventory.SetObjectAtSlot(slotIndex, playerUW.playerInventory.ObjectInHand);
                    playerUW.CursorIcon = playerUW.CursorIconDefault;
                    playerUW.playerInventory.SetObjectInHand("");
                }
            }
            //PickupFromSlot();
        }
        else
        {
            //Get the object at the slot and test it's activation.
            ObjectUsedOn = playerUW.playerInventory.GetGameObjectAtSlot(slotIndex); //GameObject.Find (pInv.GetObjectAtSlot(slotIndex));
            if (ObjectUsedOn.GetComponent <ObjectInteraction>().Use() == false)
            {                                                                       //if nothing happened when I clicked on the object at the slot.
                if (playerUW.playerInventory.ObjectInHand != "")
                {
                    //TODO: Make sure this works with Equipment slots
                    //No effect occurred. Swap the two objects.
                    if (DoNotPickup == false)
                    {
                        if (Container.TestContainerRules(playerUW.playerInventory.GetCurrentContainer(), slotIndex))
                        {
                            playerUW.playerInventory.SwapObjects(ObjectUsedOn, slotIndex, playerUW.playerInventory.ObjectInHand);
                        }
                    }
                }
                else
                {                                //Pick up the item at that slot.
                    //TODO: Make this work with Equipment slots
                    playerUW.playerInventory.ObjectInHand = ObjectUsedOn.name;
                    playerUW.CursorIcon = ObjectUsedOn.GetComponent <ObjectInteraction>().GetInventoryDisplay().texture;
                    //playerUW.CurrObjectSprite = ObjectUsedOn.GetComponent<ObjectInteraction>().InventoryString;
                    if (this.slotIndex >= 11)
                    {
                        Container cn = GameObject.Find(playerUW.playerInventory.currentContainer).GetComponent <Container>();
                        cn.RemoveItemFromContainer(playerUW.playerInventory.ContainerOffset + this.slotIndex - 11);
                    }
                    playerUW.playerInventory.ClearSlot(this.slotIndex);
                }
            }
        }
    }
    public bool use()
    {
        //GameObject ObjectInHand=UWCharacter.Instance.playerInventory.GetGameObjectInHand();
        //TODO:add object to container or open container.
        //Container cn = this.gameObject.GetComponent<Container>();
        if (CurrentObjectInHand == null)
        {//Open the container
            OpenContainer();
            return(true);
        }
        else
        {//Put the item in the container.
            bool Valid = true;
            if (CurrentObjectInHand.GetComponent <Container>() != null)
            {
                if (this.gameObject.name == CurrentObjectInHand.name)
                {
                    Valid = false;
                    Debug.Log("Attempt to add a container to itself");
                }
            }

            //Special item cases
            switch (CurrentObjectInHand.GetItemType())
            {
            case ObjectInteraction.ANVIL:    //Fix to stop in use anvils from being added to inventory.
                CurrentObjectInHand.FailMessage();
                UWHUD.instance.CursorIcon = UWHUD.instance.CursorIconDefault;
                CurrentObjectInHand       = null;
                return(true);
            }

            if (Container.TestContainerRules(this, 11, false) == false)
            {
                Valid = false;
                return(true);
            }

            if (Valid)
            {
                if ((CurrentObjectInHand.isQuantityBln == false) || (CurrentObjectInHand.isEnchanted))
                {
                    AddItemToContainer(CurrentObjectInHand);
                }
                else
                {
                    AddItemMergedItemToContainer(CurrentObjectInHand);
                }
                //If the item is already in the current player container then remove it's reference
                //if(UWCharacter.Instance.playerInventory.GetCurrentContainer())
                //	{}

                if (isOpenOnPanel == true)
                {//Container is open for display force a refresh.
                    OpenContainer();
                }
                else
                {
                    //Remove to prevent item duplication
                    removeFromContainer(UWCharacter.Instance.playerInventory.currentContainer, CurrentObjectInHand);
                }
                CurrentObjectInHand = null;
                //UWHUD.instance.CursorIcon= UWHUD.instance.CursorIconDefault;

                return(true);
            }
            else
            {
                return(false);
            }
        }
    }