public virtual float GetWeight() { //Return the weight of the object stack if (objInt == null) { return(0.0f); } else { return((float)(objInt.GetQty()) * ObjectInteraction.Weight[objInt.item_id] * 0.1f); } }
void DisplayGameObject(ObjectInteraction obj, RawImage Label, Text qtyDisplay, bool isEquipped, ref bool hasChanged) { if (hasChanged == true) { if (obj == null) { Label.texture = Blank; if (qtyDisplay != null) { qtyDisplay.text = ""; } hasChanged = false; return; } hasChanged = false; if (obj != null) { if (isEquipped == true) { Label.texture = obj.GetEquipDisplay().texture; } else { Label.texture = obj.GetInventoryDisplay().texture; if (qtyDisplay != null) { int qty = obj.GetQty(); if (qty <= 1) { qtyDisplay.text = ""; } else { qtyDisplay.text = qty.ToString(); } } } } else { Label.texture = Blank; if (qtyDisplay != null) { qtyDisplay.text = ""; } } } }
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; } } } } } }
/// <summary> /// Launchs the ammo. /// </summary> /// <returns><c>true</c>, if ammo was launched, <c>false</c> otherwise.</returns> bool LaunchAmmo(float charge) { if (currentAmmo != null) { Ray ray; if (UWCharacter.Instance.MouseLookEnabled == true) { ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f)); } else { ray = Camera.main.ScreenPointToRay(Input.mousePosition); } RaycastHit hit = new RaycastHit(); float dropRange = 0.5f; if (!Physics.Raycast(ray, out hit, dropRange)) {///Checks No object interferes with the launch float force = 1000.0f * (charge / 100.0f); GameObject launchedItem; if (currentAmmo.GetQty() == 1) { launchedItem = currentAmmo.gameObject; UWCharacter.Instance.playerInventory.RemoveItem(currentAmmo); //launchedItem.transform.parent=GameWorldController.instance.DynamicObjectMarker(); GameWorldController.MoveToWorld(launchedItem); launchedItem.transform.position = ray.GetPoint(dropRange - 0.1f); } else {//reduce this quantity by one and create a copy in the world ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(currWeaponRanged.AmmoType(), 40, 0, 1, 256); launchedItem = ObjectInteraction.CreateNewObject(CurrentTileMap(), newobjt, CurrentObjectList().objInfo, GameWorldController.instance.DynamicObjectMarker().gameObject, ray.GetPoint(dropRange - 0.1f)).gameObject; currentAmmo.consumeObject(); } launchedItem.GetComponent <ObjectInteraction>().isquant = 1; UnFreezeMovement(launchedItem); Vector3 ThrowDir = ray.GetPoint(dropRange) - ray.origin; ///Apply the force along the direction of the ray that the player has targetted along. launchedItem.GetComponent <Rigidbody>().AddForce(ThrowDir * force); GameObject myObjChild = new GameObject(launchedItem.name + "_damage"); myObjChild.transform.position = launchedItem.transform.position; myObjChild.transform.parent = launchedItem.transform; ///Appends ProjectileDamage to the projectile to act as the damage delivery method. ProjectileDamage pd = myObjChild.AddComponent <ProjectileDamage>(); pd.Source = UWCharacter.Instance.gameObject; pd.Damage = (short)currWeaponRanged.Damage(); // (short)(10.0f*(Charge/100.0f)); pd.AttackCharge = charge; pd.AttackScore = UWCharacter.Instance.PlayerSkills.GetSkill(Skills.SkillAttack) / 2 + UWCharacter.Instance.PlayerSkills.GetSkill(Skills.SkillMissile); return(true); } else { return(false); } } else {//No ammo?? Should not happen return(false); } }
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; } } } } } }