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));
    }
Beispiel #3
0
    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);
    }
Beispiel #9
0
 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);
     }
 }
Beispiel #12
0
 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);
        }
    }
Beispiel #16
0
    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);
        }
    }