private IEnumerator WaitToUnsheath(LoadedEquiptmentPlacement slot) { yield return(new WaitForSeconds(LoadedHumanoidAnimatorManager.GRAB_SHEATHED_WEAPON_ANI_TIME)); EquiptObjects[LoadedEquiptmentPlacement.weaponHand] = EquiptObjects[slot]; EquiptObjects[slot] = null; }
public void UnsheathWeapon(LoadedEquiptmentPlacement slot) { GameObject sheathed = GetObjectInSlot(slot); LoadedEntity.AnimationManager.HumanoidCast().DrawFromSheath(HAND_R, sheathed); StartCoroutine(WaitToUnsheath(slot)); }
public bool EquiptSpell(Spells id, LoadedEquiptmentPlacement slot) { if (AllSpells.TryGetValue(id, out Spell spell)) { Item item = (Entity as HumanoidEntity).EquiptmentManager.UnequiptItem(slot); if (item != null) { Entity.Inventory.AddItem(item); } if (slot == LoadedEquiptmentPlacement.weaponHand) { EquiptSpells[0] = spell; } else if (slot == LoadedEquiptmentPlacement.offHand) { EquiptSpells[1] = spell; } return(true); } return(false); }
/// <summary> /// Returns the equipt item from the given slot /// </summary> /// <param name="slot"></param> /// <returns></returns> public EquiptableItem GetEquiptItem(LoadedEquiptmentPlacement slot) { EquiptableItem equipt; EquiptItems.TryGetValue(slot, out equipt); return(equipt); }
public EquiptableItem EquiptItem(Item item_, bool unsheathed = false) { if (!(item_ is EquiptableItem)) { return(null); } EquiptableItem item = item_ as EquiptableItem; LoadedEquiptmentPlacement toPut = (LoadedEquiptmentPlacement)item.EquiptableSlot; Debug.Log("[EquiptmentManager] " + item.EquiptableSlot + "_" + toPut); if (item is Weapon) { if (unsheathed) { toPut = LoadedEquiptmentPlacement.weaponHand; } else if (item is RangeWeapon) { toPut = LoadedEquiptmentPlacement.backSheath; } else { toPut = LoadedEquiptmentPlacement.weaponSheath; } } return(EquiptItem(toPut, item)); }
public EquiptableItem GetDefaultItem(LoadedEquiptmentPlacement lep) { EquiptableItem item; DefaultItems.TryGetValue(lep, out item); return(item); }
public GameObject GetObjectInSlot(LoadedEquiptmentPlacement place) { if (EquiptObjects.ContainsKey(place)) { return(EquiptObjects[place]); } return(null); }
public void SwapObjectSlots(LoadedEquiptmentPlacement a, LoadedEquiptmentPlacement b) { GameObject A = GetObjectInSlot(a); GameObject B = GetObjectInSlot(b); AddObjectInSlot(a, B); AddObjectInSlot(b, A); }
public void SetButton(EquiptmentGUI2 parent, LoadedEquiptmentPlacement slot, Item item) { EquiptmentGUI = parent; Slot = slot; Item = item; if (item != null) { ItemImage.sprite = Item.GetItemImage(); } }
public void UnsheathWeapon(LoadedEquiptmentPlacement sheathedPosition) { if (EquiptItems.ContainsKey(sheathedPosition)) { Debug.Log(LoadedEquiptmentManager.HAND_R + "_" + LoadedEquiptmentManager.GetObjectInSlot(sheathedPosition)); LoadedEquiptmentManager.UnsheathWeapon(sheathedPosition); EquiptItems[LoadedEquiptmentPlacement.weaponHand] = EquiptItems[sheathedPosition]; EquiptItems[sheathedPosition] = null; Entity.CombatManager.SetEquiptWeapon(EquiptItems[LoadedEquiptmentPlacement.weaponHand] as Weapon); } }
public void AddObjectInSlot(LoadedEquiptmentPlacement place, GameObject obj) { if (EquiptObjects.ContainsKey(place)) { EquiptObjects[place] = obj; } else { EquiptObjects.Add(place, obj); } }
public bool HasEquiptSpell(LoadedEquiptmentPlacement slot) { if (slot == LoadedEquiptmentPlacement.weaponHand) { return(EquiptSpells[0] != null); } if (slot == LoadedEquiptmentPlacement.offHand) { return(EquiptSpells[1] != null); } return(false); }
/// <summary> /// Equipts the specified item to the specified slot /// Returns the item in the slot previous /// </summary> /// <param name="slot"></param> /// <returns></returns> public EquiptableItem EquiptItem(LoadedEquiptmentPlacement slot, EquiptableItem item) { EquiptableItem removed = UnequiptItem(slot); EquiptItems.Add(slot, item); Debug.Log("Item " + item + " added to slot " + slot); LoadedEquiptmentManager?.SetEquiptmentItem(slot, item); if (slot == LoadedEquiptmentPlacement.weaponHand) { Entity.CombatManager.SetEquiptWeapon(item as Weapon); } return(removed); }
/// <summary> /// Removes an item from the specified slot /// returns the item to user /// </summary> /// <param name="slot"></param> /// <returns></returns> public EquiptableItem UnequiptItem(LoadedEquiptmentPlacement slot) { EquiptableItem remove; if (EquiptItems.TryGetValue(slot, out remove)) { Debug.Log("[EquiptmentManager] Entity " + Entity + " Unequipt " + remove + " from slot " + slot); EquiptItems.Remove(slot); } //If entity is loaded, remove equiptment object LoadedEquiptmentManager?.SetEquiptmentItem(slot, null); //Check if a default item exists for this slot if (DefaultItems.ContainsKey(slot)) { LoadedEquiptmentManager?.SetEquiptmentItem(slot, DefaultItems[slot]); } return(remove); }
/// <summary> /// Adds a new default item to its relevent slot /// </summary> /// <param name="item"></param> public void AddDefaultItem(EquiptableItem item) { //item must be of type default if (!item.IsDefault) { Debug.LogError("Default items must be of type default"); return; } LoadedEquiptmentPlacement slot = (LoadedEquiptmentPlacement)item.EquiptableSlot; //Check if we have a default item in this slot already if (DefaultItems.ContainsKey(slot)) { Debug.LogError("Entity " + Entity + " already has a default item in slot " + slot.ToString()); return; } //If valid, we add the item DefaultItems.Add(slot, item); //If there is currently no item equipt in this slot, we equipt it if (GetEquiptItem(slot) == null) { LoadedEquiptmentManager?.SetEquiptmentItem(slot, item); } }
public void UnEquipt(LoadedEquiptmentPlacement slot) { Item itst = Player.EquiptmentManager.UnequiptItem(slot); Player.Inventory.AddItem(itst); }
public void SetEquiptmentItem(LoadedEquiptmentPlacement slot, Item item) { Debug.Log("[LoadedEquiptmentManager] Adding item " + item + " to slot " + slot); //Check if an item exists in this slot, if so we destroy it GameObject remove; EquiptObjects.TryGetValue(slot, out remove); if (remove != null) { DestroyImmediate(remove); EquiptObjects.Remove(slot); //If the equipt slot required a blendShape, we reset it now if (slot == LoadedEquiptmentPlacement.legs) { SMR.SetBlendShapeWeight(0, 0); } else if (slot == LoadedEquiptmentPlacement.chest) { SMR.SetBlendShapeWeight(1, 0); } } //If the item is null, we don't need to add an object if (item == null) { //But if the slot is the hand, we need to activate the unarmed melee attack if (slot == LoadedEquiptmentPlacement.weaponHand) { LoadedEntity.Entity.CombatManager.SetLoadedMeleeWeapon(HAND_R.GetComponent <LoadedMeleeWeapon>()); //Ensure it is enabled so we can deal unarmed attacks } else if (slot == LoadedEquiptmentPlacement.legs) { SMR.SetBlendShapeWeight(0, 0); } else if (slot == LoadedEquiptmentPlacement.chest) { SMR.SetBlendShapeWeight(1, 0); } return; } //We create the object GameObject obj = Instantiate((item as EquiptableItem).GetEquiptItem()); //Non weapons will have a LoadedEquiptment le = obj.GetComponent <LoadedEquiptment>(); switch (slot) { case LoadedEquiptmentPlacement.weaponSheath: obj.transform.parent = WEAPONSHEATH.transform; break; case LoadedEquiptmentPlacement.weaponHand: obj.transform.parent = HAND_R.transform; break; case LoadedEquiptmentPlacement.offHand: obj.transform.parent = HAND_L.transform; break; case LoadedEquiptmentPlacement.legs: le.transform.parent = SMR.transform; le.SMR.bones = SMR.bones; le.SMR.rootBone = SMR.rootBone; Debug.Log("[LoadedEquiptmentManager] Equipting to legs - setting blend shape to 100"); SMR.SetBlendShapeWeight(0, 100); break; case LoadedEquiptmentPlacement.chest: le.transform.parent = SMR.transform; le.SMR.bones = SMR.bones; le.SMR.rootBone = SMR.rootBone; Debug.Log("[LoadedEquiptmentManager] Equipting to chest - setting blend shape to 100"); SMR.SetBlendShapeWeight(1, 100); break; } if (item.HasMetaData) { Color c = item.MetaData.Color; if (c != null) { if (le != null) { le.SMR.material.SetColor("MainColour", c); } else if (obj.GetComponent <MeshRenderer>() != null) { obj.GetComponent <MeshRenderer>().material.SetColor("MainColour", c); } else if (obj.GetComponent <SkinnedMeshRenderer>() != null) { obj.GetComponent <SkinnedMeshRenderer>().material.SetColor("MainColour", c); } else if (obj.GetComponentInChildren <MeshRenderer>() != null) { obj.GetComponentInChildren <MeshRenderer>().material.SetColor("MainColour", c); } else if (obj.GetComponentInChildren <SkinnedMeshRenderer>() != null) { obj.GetComponentInChildren <SkinnedMeshRenderer>().material.SetColor("MainColour", c); } } } if (item is Weapon && !(item is RangeWeapon)) { LoadedMeleeWeapon lmw = obj.GetComponent <LoadedMeleeWeapon>(); if (lmw == null) { lmw = obj.GetComponentInChildren <LoadedMeleeWeapon>(); } lmw.SetWeaponDetails(LoadedEntity.Entity, item as Weapon); LoadedEntity.Entity.CombatManager.SetLoadedMeleeWeapon(lmw); } obj.transform.localPosition = Vector3.zero; obj.transform.localRotation = Quaternion.identity; if (EquiptObjects.ContainsKey(slot)) { EquiptObjects[slot] = obj; } else { EquiptObjects.Add(slot, obj); } }