Example #1
0
    void WeaponSlotSetting(CWeaponHook weaponHook, SlotIdx slotIdx)
    {
        if (weaponHook == null)
        {
            return;
        }

        CWeapon weapon = weaponHook.Weapon;

        if (weapon == null)
        {
            return;
        }

        weaponHook.transform.parent = m_Slots[(int)slotIdx];

        weaponHook.gameObject.transform.localPosition = weapon.Prefab.transform.localPosition;
        weaponHook.gameObject.transform.localRotation = weapon.Prefab.transform.localRotation;
        weaponHook.gameObject.transform.localScale    = weapon.Prefab.transform.localScale;
    }
Example #2
0
    IEnumerator ChangeMainSubCoroutine()
    {
        CWeapon tempWeapon = m_mainEquip;

        m_mainEquip = m_subEquip;
        m_subEquip  = tempWeapon;

        CWeaponHook tempHook = MainHook;

        m_MainHook = SubHook;
        m_subHook  = tempHook;

        m_actionCtrl.Anim.SetInteger("WeaponIdx", (int)m_mainEquip.WeaponType);

        yield return(new WaitForSeconds(0.5f));

        WeaponSlotSetting(m_MainHook, SlotIdx.Right);
        WeaponSlotSetting(m_subHook, m_subHook.Weapon.WaitSlot);

        yield return(null);
    }
Example #3
0
    public CWeapon EquipWeapon(CWeapon weapon, SlotIdx slotIdx = SlotIdx.Right, bool isSub = false)
    {
        CWeapon outWeapon = null;

        #region CheckNull

        if (weapon == null)
        {
            Debug.LogError("Don't Equip null Weapon");
            return(outWeapon);
        }

        GameObject weaponObj = Instantiate(weapon.Prefab);

        if (weaponObj == null)
        {
            Debug.LogError(weapon + ".prefab is null");
            return(outWeapon);
        }

        weaponObj.name = weapon.Prefab.name;

        CWeaponHook weaponHook = weaponObj.GetComponent <CWeaponHook>();

        if (weaponHook == null)
        {
            Debug.LogError(weapon + "is not Contained WeaponHook");
            return(outWeapon);
        }

        #endregion

        if (!isSub)
        {
            if (m_MainHook != null)
            {
                outWeapon = m_MainHook.Weapon;
                Destroy(m_MainHook.gameObject);
                m_mainEquip = null;
                m_MainHook  = null;
            }

            m_MainHook = weaponHook;
            m_MainHook.Init(m_unit, weapon);
            m_mainEquip = weapon;
            m_inventoryInfo.curWeaponIdx = m_mainEquip.ItemIdx;
        }
        else
        {
            if (m_subHook != null)
            {
                outWeapon = m_subHook.Weapon;
                Destroy(m_subHook.gameObject);
                m_subHook  = null;
                m_subEquip = null;
            }

            m_subHook = weaponHook;
            m_subHook.Init(m_unit, weapon);
            m_subEquip = weapon;
            m_inventoryInfo.subWeaponIdx = m_subEquip.ItemIdx;
        }

        WeaponSlotSetting(weaponHook, slotIdx);

        if (m_actionCtrl.Anim != null)
        {
            m_actionCtrl.Anim.SetInteger("WeaponIdx", (int)m_mainEquip.WeaponType);
        }

        //TODO: 방패 혹은 오브젝트를 두개를 껴야하는 경우의 관련 처리
        return(outWeapon);
    }