Ejemplo n.º 1
0
    //transSlot = null ,means weapon model to default node
    public void SwitchWeaponTo(Transform transSlot, FC_EQUIPMENTS_TYPE weaponTypeFlag)
    {
        bool ret = false;

        if (weaponTypeFlag == FC_EQUIPMENTS_TYPE.MAX ||
            weaponTypeFlag == _weaponType)
        {
            ret = true;
        }
        foreach (BladeInfo bi in _bladeInfos)
        {
            if (ret || weaponTypeFlag == bi._bladeType)
            {
                if (transSlot == null)
                {
                    Utils.SetParent(bi._bladeTransform, bi._originalTransform);
                    bi._currentTransform = null;
                }
                else
                {
                    Utils.SetParent(bi._bladeTransform, transSlot);
                    bi._currentTransform = transSlot;
                }
            }
        }
    }
Ejemplo n.º 2
0
    public void SwitchWeaponTo(EnumEquipSlot slot, FC_EQUIPMENTS_TYPE weaponTypeFlag)
    {
        //bool ret = false;
        Transform transSlot = null;

        if (slot != EnumEquipSlot.MAX)
        {
            transSlot = _owner._avatarController.GetSlotNode(slot);
        }
        SwitchWeaponTo(transSlot, weaponTypeFlag);
    }
Ejemplo n.º 3
0
 virtual public void OnAssembled(EnumEquipSlot slot, GameObject go, FC_EQUIPMENTS_TYPE equipmentType)
 {
 }
Ejemplo n.º 4
0
    public static void ReleaseBlade(FCWeapon ewn, bool openIt, FC_EQUIPMENTS_TYPE weaponTypeFlag, AttackBase ab)
    {
        ActionController ac = ewn._owner;

        int bladeLayer = FCConst.LAYER_DEFAULT;

        if (openIt)
        {
            if (ab._canHitAll)
            {
                bladeLayer = FCConst.LAYER_ENEMY_WEAPON;
            }
            else
            {
                bladeLayer = (int)ac.Faction + 1;
            }

            ewn._attackInfo._attackPoints = ac.TotalAttackPoints;
            ewn._attackInfo._isFromSkill  = ewn._owner.IsFromSkill;
            ewn._attackInfo._damageScale  = ab.DamageScale;
            ewn._attackInfo._pushStrength = ab._pushStrength;
            ewn._attackInfo._pushTime     = ab._pushTime;
            ewn._attackInfo._pushAngle    = ab._pushAngle;
            ewn._attackInfo._pushByPoint  = ab._pushByPoint;
            ewn._attackInfo._damageType   = ab.GetDamageType();
        }
        else
        {
            ewn._attackInfo._pushStrength = 0;
            ewn._attackInfo._pushTime     = 0;
            ewn._attackInfo._damageType   = FC_DAMAGE_TYPE.NONE;
        }
        int ewt = (int)ewn._weaponType;
        int wt  = (int)weaponTypeFlag;

        if (weaponTypeFlag == FC_EQUIPMENTS_TYPE.MAX ||
            ewn._weaponType == weaponTypeFlag ||
            ewt >= 1500 && ewt / 10 == wt / 10)
        {
            foreach (BladeInfo bi in ewn._bladeInfos)
            {
                if (ab != null)
                {
                    if (weaponTypeFlag != FC_EQUIPMENTS_TYPE.WEAPON_LIGHT &&
                        weaponTypeFlag != FC_EQUIPMENTS_TYPE.WEAPON_THIGH &&
                        weaponTypeFlag != FC_EQUIPMENTS_TYPE.MAX)
                    {
                        if (weaponTypeFlag != bi._bladeType)
                        {
                            continue;
                        }
                    }
                    ReleaseBlade(bi, bladeLayer, openIt, ab._weaponScaleX, ab._weaponScaleY, ab._weaponScaleZ, !ab._needNotHitID);
                }
                else
                {
                    ReleaseBlade(bi, bladeLayer, openIt, 1, 1, 1, true);
                }
            }
        }

        /*else
         * {
         *      foreach(BladeInfo bi in ewn._bladeInfos)
         *      {
         *              if(ab != null)
         *              {
         *                      ReleaseBlade(bi, bladeLayer, openIt, ab._weaponScaleX, ab._weaponScaleY, ab._weaponScaleZ);
         *              }
         *              else
         *              {
         *                      ReleaseBlade(bi, bladeLayer, openIt, 1, 1, 1);
         *              }
         *      }
         * }*/
    }
Ejemplo n.º 5
0
    public override void OnAssembled(EnumEquipSlot slot, GameObject go, FC_EQUIPMENTS_TYPE equipmentType)
    {
        //_bladeInfosIdx = 0;
        if (_bladeInfos != null && _bladeInfosIdx >= _bladeInfos.Length)
        {
            _bladeInfosIdx = 0;
        }
        Transform []           transforms = go.GetComponentsInChildren <Transform>();
        List <GameObject>      gl         = new List <GameObject>();
        List <MessageReciever> ml         = new List <MessageReciever>();
        List <BladeSlide>      bl         = new List <BladeSlide>();

        _bladeInfos[_bladeInfosIdx] = new BladeInfo();

        _bladeInfos[_bladeInfosIdx]._bladeType         = equipmentType;
        _bladeInfos[_bladeInfosIdx]._bladeTransform    = go.transform;
        _bladeInfos[_bladeInfosIdx]._originalTransform = go.transform.parent;
        _bladeInfos[_bladeInfosIdx]._currentTransform  = go.transform.parent;

        foreach (Transform t in transforms)
        {
            GameObject subgo = t.gameObject;
            Collider   c     = subgo.GetComponent <Collider>();
            if (c != null)
            {
                gl.Add(subgo);
            }

            MessageReciever mr = subgo.GetComponent <MessageReciever>();
            if (mr != null)
            {
                ml.Add(mr);
            }
            BladeSlide blade = subgo.GetComponent <BladeSlide>();
            if (blade != null)
            {
                bl.Add(blade);
            }
        }

        _bladeInfos[_bladeInfosIdx]._colliders        = gl.ToArray();
        _bladeInfos[_bladeInfosIdx]._messageReceivers = ml.ToArray();
        _bladeInfos[_bladeInfosIdx]._bladerCenter     = new Vector3[_bladeInfos[_bladeInfosIdx]._colliders.Length];
        _bladeInfos[_bladeInfosIdx]._bladerSize       = new Vector3[_bladeInfos[_bladeInfosIdx]._colliders.Length];
        _bladeInfos[_bladeInfosIdx]._bladeReal        = new BoxCollider[_bladeInfos[_bladeInfosIdx]._colliders.Length];
        _bladeInfos [_bladeInfosIdx].cubes            = new GameObject[_bladeInfos [_bladeInfosIdx]._colliders.Length];

        if (_bladeInfos[_bladeInfosIdx]._colliders.Length != 0)
        {
            for (int i = 0; i < _bladeInfos[_bladeInfosIdx]._colliders.Length; i++)
            {
                _bladeInfos[_bladeInfosIdx]._bladeReal[i]             = _bladeInfos[_bladeInfosIdx]._colliders[i].collider as BoxCollider;
                _bladeInfos[_bladeInfosIdx]._bladerCenter[i]          = _bladeInfos[_bladeInfosIdx]._bladeReal[i].center;
                _bladeInfos[_bladeInfosIdx]._bladerSize[i]            = _bladeInfos[_bladeInfosIdx]._bladeReal[i].size;
                _bladeInfos[_bladeInfosIdx].cubes[i]                  = GameObject.CreatePrimitive(PrimitiveType.Cube);
                _bladeInfos[_bladeInfosIdx].cubes[i].transform.parent = go.transform;
                _bladeInfos[_bladeInfosIdx].cubes[i].transform.gameObject.SetActive(false);
            }
        }

        _bladeInfos[_bladeInfosIdx]._bladeSlide = bl.ToArray();
        _bladeInfosIdx++;
    }