Пример #1
0
    public FlyingItemInfo LookUp(int id)
    {
        FlyingItemInfo info = null;

        m_list.TryGetValue(id, out info);
        return(info);
    }
Пример #2
0
 public Info(FlyingItemInfo itemInfo)
 {
     m_itemInfo        = itemInfo;
     m_duration        = m_itemInfo.Item_ExistTime;
     m_isLaunchSuspend = m_itemInfo.IsLaunchSuspend;
     m_bouncyCount     = m_itemInfo.Item_BouncyCount;
 }
    //远程攻击-激发飞行特效
    void RemoteAttack(AnimationEvent animEvent)
    {
        GameObject actorObj  = gameObject.transform.parent.gameObject;
        ActorProp  actorProp = actorObj.GetComponent <ActorProp>();

        if (actorProp == null)
        {
            return;
        }
        Actor        actor  = actorProp.ActorLogicObj;
        AttackAction action = actor.ActionControl.LookupAction(ActorAction.ENType.enAttackAction) as AttackAction;

        if (null == action)
        {
            Debug.LogWarning("Remote Attack is error, attack action is null");
            return;
        }
        ++action.m_skillResultIDIndex;
        if (null == action.m_skillInfo)
        {//技能为空
            Debug.LogWarning("remote attack,skill info is null,skillID:" + action.m_skillID);
            return;
        }
        int skillID = action.m_skillID;
        //飞行道具的id和SkillResultID是一样的
        FlyingItemInfo itemInfo = GameTable.FlyingItemTableAsset.LookUp(action.SkillResultID);

        if (itemInfo == null)
        {
            Debug.LogWarning("flying item info is null, id is " + action.SkillResultID.ToString());
            return;
        }
        Vector3 targetPos   = Vector3.zero;
        Actor   skillTarget = action.m_skillTarget;

        if (skillTarget != null)
        {
            if (skillTarget.Type == ActorType.enMain && skillTarget.IsActorExit)
            {
                skillTarget            = ActorManager.Singleton.MainActor;
                action.m_skillTargetID = skillTarget.ID;
            }
            targetPos = skillTarget.RealPos;
        }
        if (skillTarget != null)
        {
            actor.Forward(skillTarget.RealPos);
        }
        RemoteAttackManager.Info info = new RemoteAttackManager.Info(itemInfo);
        info.m_srcActor  = actor;
        info.m_dstActor  = skillTarget;
        info.m_targetPos = targetPos;
        info.m_skillID   = skillID;
        RemoteAttackManager.Singleton.Add(info);
        if (animEvent.intParameter != 0)
        {//隐藏武器
            actor.ShowWeaponModelWithTable(false);
        }
    }
Пример #4
0
    public void Load(byte[] bytes)
    {
        m_list = new Dictionary <int, FlyingItemInfo>();
        BinaryHelper helper = new BinaryHelper(bytes);
        int          length = helper.ReadInt();

        for (int index = 0; index < length; ++index)
        {
            FlyingItemInfo info = new FlyingItemInfo();
            info.Load(helper);
            m_list.Add(info.ID, info);
        }
    }
Пример #5
0
    //  加载 远程相关资源
    static void LoadRemoteObj(int id)
    {
        if (id <= 0)
        {
            return;
        }

        FlyingItemInfo flyingItemInfo = m_flyingItemTable.LookUp(id);

        if (null == flyingItemInfo)
        {
            return;
        }


        // 飞行道具预设
        if (!string.IsNullOrEmpty(flyingItemInfo.Item_Name) && !m_hadResourceList.Contains(flyingItemInfo.Item_Name))
        {
            m_resourceList.Add(flyingItemInfo.Item_Name, (int)Type.enEffect);
            m_hadResourceList.Add(flyingItemInfo.Item_Name);
            Debug.Log("m_resourceList 添加 flyingItemInfo.Item_Name " + flyingItemInfo.Item_Name);
        }


        // 预警特效

        if (!string.IsNullOrEmpty(flyingItemInfo.WarningEffectName) && !m_hadResourceList.Contains(flyingItemInfo.WarningEffectName))
        {
            m_resourceList.Add(flyingItemInfo.WarningEffectName, (int)Type.enEffect);
            m_hadResourceList.Add(flyingItemInfo.WarningEffectName);
            Debug.Log("m_resourceList 添加 flyingItemInfo.WarningEffectName" + flyingItemInfo.WarningEffectName);
        }

        // 移除后特效

        if (!string.IsNullOrEmpty(flyingItemInfo.EffectNameForRemove) && !m_hadResourceList.Contains(flyingItemInfo.EffectNameForRemove))
        {
            m_resourceList.Add(flyingItemInfo.EffectNameForRemove, (int)Type.enEffect);
            m_hadResourceList.Add(flyingItemInfo.EffectNameForRemove);
            Debug.Log("m_resourceList 添加 flyingItemInfo.EffectNameForRemove" + flyingItemInfo.EffectNameForRemove);
        }


        //飞行道具技能Result
        LoadEffect(flyingItemInfo.Item_ResultID);


        //移除后效果的resultid
        LoadEffect(flyingItemInfo.ResultIDForRemove);
    }
    //远程攻击-多个目标
    void RemoteAttackMultiTarget(AnimationEvent animEvent)
    {
        GameObject actorObj  = gameObject.transform.parent.gameObject;
        ActorProp  actorProp = actorObj.GetComponent <ActorProp>();

        if (actorProp == null)
        {
            return;
        }
        m_self = actorProp.ActorLogicObj;
        AttackAction action = m_self.ActionControl.LookupAction(ActorAction.ENType.enAttackAction) as AttackAction;

        if (null == action)
        {
            Debug.LogWarning("RemoteAttackMultiTarget is error, attack action is null");
            return;
        }
        ++action.m_skillResultIDIndex;
        int skillID = action.m_skillID;

        //animEvent.intParameter;//目标个数
        //animEvent.floatParameter;//范围
        m_multiTargetNumber = animEvent.intParameter;
        m_multiTargetRange  = animEvent.floatParameter;
        if (m_multiTargetNumber == 0)
        {//不填写,只指定技能目标
            m_multiTargetNumber = 1;
        }
        //find target
        m_multiTargetList = new List <Actor>(m_multiTargetNumber);
        if (action.m_skillTarget != null)
        {
            m_self.Forward(action.m_skillTarget.RealPos);
            m_multiTargetList.Add(action.m_skillTarget);
        }
        if (m_multiTargetList.Count < m_multiTargetNumber)
        {
            ActorManager.Singleton.ForEach(CheckTarget);
            //while (m_multiTargetList.Count < m_multiTargetNumber)
            //{//目标数量不足,用技能目标填满
            //    if (action.m_skillTarget == null)
            //    {
            //        break;
            //    }
            //    m_multiTargetList.Add(action.m_skillTarget);
            //}
        }
        //飞行道具的id和SkillResultID是一样的
        FlyingItemInfo itemInfo = GameTable.FlyingItemTableAsset.LookUp(action.SkillResultID);

        if (itemInfo == null)
        {
            Debug.LogWarning("flying item info is null, id is " + action.SkillResultID.ToString());
            return;
        }
        for (int i = 0; i < m_multiTargetList.Count; ++i)
        {
            Vector3 targetPos   = Vector3.zero;
            Actor   skillTarget = m_multiTargetList[i];
            if (skillTarget.Type == ActorType.enMain && skillTarget.IsActorExit)
            {
                skillTarget            = ActorManager.Singleton.MainActor;
                action.m_skillTargetID = skillTarget.ID;
            }
            targetPos = skillTarget.RealPos;

            RemoteAttackManager.Info info = new RemoteAttackManager.Info(itemInfo);
            info.m_srcActor  = m_self;
            info.m_dstActor  = skillTarget;
            info.m_targetPos = targetPos;
            info.m_skillID   = skillID;
            RemoteAttackManager.Singleton.Add(info);
        }

        if (string.IsNullOrEmpty(animEvent.stringParameter))
        {//隐藏武器
            m_self.ShowWeaponModelWithTable(false);
        }
    }