public static TestContainerRules ( Container, cn, int SlotIndex ) : bool | ||
cn | Container, | |
SlotIndex | int | |
Результат | bool |
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; } } } } } }
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 = ""; } } } } }
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; } } } } } }
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); } } }