Example #1
0
    public void ResetSkillByCategory(SkillCategory category, List <IShooterSkill> skills)
    {
        //Update Category
        int curWeaponId = TriggerImpl.GetCurWeaponId(m_SkillManager.GetOwner());

        if (curWeaponId >= 0)
        {
            List <IShooterSkill> allCategorySkills = GetSkillsByCategory(category, skills);
            List <IShooterSkill> categorySkills    = GetSkillsByWeaponId(curWeaponId, allCategorySkills);
            IShooterSkill        categorySkill     = null;
            if (categorySkills.Count > 0)
            {
                categorySkill = categorySkills[0];
            }
            else
            {
                SkillNode firstNode = null;
                if (m_SkillCategoryDict.TryGetValue(category, out firstNode))
                {
                    categorySkill = GetSkillById(skills, firstNode.SkillId);
                }
            }
            if (categorySkill != null)
            {
                UpdateNextSkillByCategory(categorySkill, skills, curWeaponId);
                ChangeSkillByCategory(category, skills, categorySkill.GetSkillId());
            }
        }
    }
Example #2
0
    private SkillNode InitNodeByScript(List <IShooterSkill> skills, IShooterSkill ss)
    {
        SkillNode first = new SkillNode();

        first.SkillId  = ss.GetSkillId();
        first.Category = ss.GetCategory();
        //FIXME:临时解锁全部技能,by lixiaojiang
        first.IsLocked = false;
        IShooterSkill nextSkillScript = GetSkillById(skills, ss.GetNextSkillId());

        if (nextSkillScript != null)
        {
            first.NextSkillNode = InitNodeByScript(skills, nextSkillScript);
        }
        IShooterSkill qSkillScript = GetSkillById(skills, ss.GetQSkillId());

        if (qSkillScript != null)
        {
            first.SkillQ = InitNodeByScript(skills, qSkillScript);
        }
        IShooterSkill eSkillScript = GetSkillById(skills, ss.GetESkillId());

        if (eSkillScript != null)
        {
            first.SkillE = InitNodeByScript(skills, eSkillScript);
        }
        return(first);
    }
Example #3
0
    /// param:Id[对应到SkillSceneObjManager中的Impact Id],verticalHeight[垂直高度],verticalHeightStart[底面起始高度偏移],sectorDegree[角度范围]
    /// example:1,10,-1,60
    public void Trigger_SendVerticalImpact(string param)
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_SendVerticalImpact param:" + param);
#endif
        if (m_SceneObjMgr != null)
        {
            SkillSceneObjInfo sobjInfo            = new SkillSceneObjInfo(param);
            float             verticalHeight      = sobjInfo.ExtractNumeric <float>(0, 10.0f);
            float             verticalHeightStart = sobjInfo.ExtractNumeric <float>(1, 0.0f);
            float             sectorDegree        = sobjInfo.ExtractNumeric <float>(2, 360.0f);
            SkillImpactInfos  bulletInfo          = m_SceneObjMgr.TryGetSkillImpactInfo(sobjInfo.Id);
            IShooterSkill     curSkill            = TriggerImpl.GetCurSkill(this.gameObject);
            if (bulletInfo != null)
            {
                bulletInfo = bulletInfo.Clone();
                TriggerImpl.ProcessVerticalImpact(this.gameObject, this.gameObject, bulletInfo,
                                                  verticalHeight, verticalHeightStart, sectorDegree);
            }
            else
            {
                Debug.Log("Trigger_SendVerticalImpact null!");
            }
        }
    }
Example #4
0
    private void UpdateAfterSkillAutoAttack()
    {
        if (m_WaiteSkillBuffer.Count > 0)
        {
            return;
        }

        if (m_CurSkillNode != null)
        {
            if (Time.time > GetWaitInputTime(m_CurSkillNode))
            {
                return;
            }
            IShooterSkill ss         = m_SkillManager.GetSkillById(m_CurSkillNode.SkillId);
            SkillNode     attackNode = m_SkillCategoryDict[SkillCategory.kAttack];
            if (ss != null && ss.IsAttackAfterSkill() &&
                attackNode != null && IsSkillCanBreak(m_CurSkillNode, attackNode.Category) &&
                m_WaiteSkillBuffer.Count == 0)
            {
                Vector3 targetPos;
                if (TriggerImpl.GetCurTargetPos(m_SkillManager.GetOwner(), out targetPos))
                {
                    SkillInputData data = GetSkillInputData(SkillCategory.kAttack);
                    if (data != null && Vector3.Magnitude(targetPos - m_SkillManager.GetOwner().transform.position) <= data.castRange)
                    {
                        StartAttack(targetPos);
                    }
                }
            }
        }
    }
Example #5
0
    /// param:Id[对应到SkillSceneObjManager中的Missle Id]
    /// example:1
    public void Trigger_SummonMissle(string param)
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_SummonMissle param:" + param);
#endif
        if (m_SceneObjMgr != null)
        {
            SkillSceneObjInfo      sobjInfo   = new SkillSceneObjInfo(param);
            SceneObject_MissleInfo bulletInfo = m_SceneObjMgr.TryGetMissleInfo(sobjInfo.Id);
            IShooterSkill          curSkill   = TriggerImpl.GetCurSkill(this.gameObject);
            if (bulletInfo != null && bulletInfo.SceneObjInfo != null && curSkill != null)
            {
                bulletInfo          = bulletInfo.Clone();
                bulletInfo.Attacker = this.gameObject;
                bulletInfo.SceneObjInfo.EffectPos += this.gameObject.transform.position;
                bulletInfo.MoveStartPos           += this.gameObject.transform.position;
                bulletInfo.MoveTargetPos          += curSkill.GetTargetPos();
                bulletInfo.MoveVelocity            = this.gameObject.transform.rotation * bulletInfo.MoveVelocity;

                GameObject tBulletObj = TriggerImpl.PlayEffect(bulletInfo.SceneObjInfo);
                tBulletObj.SendMessage("Active", bulletInfo);
            }
            else
            {
                Debug.Log("Trigger_SummonMissle null!");
            }
        }
    }
Example #6
0
    public override bool IsSkillCanBreak(SkillNode node, SkillCategory category)
    {
        if (m_CurSkillNode == null)
        {
            return(true);
        }
        IShooterSkill skill = m_SkillManager.GetSkillById(node.SkillId);

        if (skill == null || !skill.IsExecuting())
        {
            return(true);
        }
        if (category != SkillCategory.kNone)
        {
            if (m_CurSkillNode.Category == SkillCategory.kAttack &&
                category == SkillCategory.kAttack &&
                m_CurSkillNode.NextSkillNode != null)
            {
                return(false);
            }
            else if (m_CurSkillNode.Category != SkillCategory.kAttack &&
                     category == SkillCategory.kAttack)
            {
                return(skill.CanBreak());
            }
            else
            {
                return(skill.CanBreakBySkill());
            }
        }
        return(skill.CanBreak());
    }
Example #7
0
    // child should override this function
    public override bool StopSkill(SkillNode node)
    {
        IShooterSkill ss = m_SkillManager.GetCurPlaySkill();

        if (ss != null)
        {
            ss.StopSkill();
        }
        return(true);
    }
Example #8
0
    /// param:
    /// example:
    public void Trigger_CanBreakBySkill()
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_CanBreakBySkill");
#endif
        IShooterSkill skillLogic = TriggerImpl.GetCurSkill(this.gameObject);
        if (null != skillLogic)
        {
            skillLogic.SetCanBreakBySkill(true);
        }
    }
Example #9
0
    public override float GetSkillCD(SkillNode node)
    {
        if (node == null)
        {
            return(0);
        }
        IShooterSkill skill = m_SkillManager.GetSkillById(node.SkillId);

        if (skill == null)
        {
            return(0);
        }
        return(skill.GetCD());
    }
Example #10
0
    public override void BeginSkillCD(SkillNode node)
    {
        if (node == null)
        {
            return;
        }
        IShooterSkill skill = m_SkillManager.GetSkillById(node.SkillId);

        if (skill == null)
        {
            return;
        }
        skill.BeginCD();
    }
Example #11
0
    public override bool IsSkillInCD(SkillNode node)
    {
        if (node == null)
        {
            return(false);
        }
        IShooterSkill skill = m_SkillManager.GetSkillById(node.SkillId);

        if (skill == null)
        {
            return(false);
        }
        return(skill.IsInCD());
    }
Example #12
0
    public override float GetLockInputTime(SkillNode node)
    {
        if (node == null)
        {
            return(0);
        }
        IShooterSkill skill = m_SkillManager.GetSkillById(node.SkillId);

        if (skill == null)
        {
            return(0);
        }
        return(node.StartTime + skill.GetLockInputTime());
    }
Example #13
0
    public void ChangeSkillByCategory(SkillCategory category, List <IShooterSkill> skills, int skillId)
    {
        IShooterSkill targetSkill = GetSkillById(skills, skillId);

        if (targetSkill == null)
        {
            return;
        }
        if (IsCategoryContain(targetSkill.GetSkillId()))
        {
            m_SkillCategoryDict.Remove(targetSkill.GetCategory());
        }
        SkillNode first_node = InitNodeByScript(skills, targetSkill);

        m_SkillCategoryDict[targetSkill.GetCategory()] = first_node;
    }
Example #14
0
    public override SkillInputData GetSkillInputData(SkillCategory category)
    {
        SkillNode head = null;

        if (m_SkillCategoryDict.TryGetValue(category, out head))
        {
            IShooterSkill ss = m_SkillManager.GetSkillById(head.SkillId);
            if (ss != null)
            {
                SkillInputData data = new SkillInputData();
                data.castRange         = ss.GetSkillCastRange();
                data.targetChooseRange = ss.GetTargetChooseRange();
                return(data);
            }
        }
        return(null);
    }
Example #15
0
 public void UpdateNextSkillByCategory(IShooterSkill categorySkill, List <IShooterSkill> skills, int curWeaponId)
 {
     if (categorySkill != null)
     {
         //Update next skill
         List <ShooterSkillId> nextSkillIdList = categorySkill.GetNextSkillIdList();
         if (nextSkillIdList != null && nextSkillIdList.Count > 0)
         {
             foreach (ShooterSkillId skillId in nextSkillIdList)
             {
                 IShooterSkill tSkill = GetSkillById(skills, (int)skillId);
                 if (tSkill != null && tSkill.GetWeaponId() == curWeaponId)
                 {
                     categorySkill.SetNextSkillId((int)skillId);
                     break;
                 }
             }
         }
     }
 }
Example #16
0
    /// param:Id[对应到SkillSceneObjManager中的Impact Id]
    /// example:1
    public void Trigger_SendImpact(string param)
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_SendImpact param:" + param);
#endif
        if (m_SceneObjMgr != null)
        {
            SkillSceneObjInfo sobjInfo   = new SkillSceneObjInfo(param);
            SkillImpactInfos  bulletInfo = m_SceneObjMgr.TryGetSkillImpactInfo(sobjInfo.Id);
            IShooterSkill     curSkill   = TriggerImpl.GetCurSkill(this.gameObject);
            if (bulletInfo != null)
            {
                bulletInfo = bulletInfo.Clone();
                TriggerImpl.ProcessImpact(this.gameObject, this.gameObject, bulletInfo);
            }
            else
            {
                Debug.Log("Trigger_SendImpact null!");
            }
        }
    }
Example #17
0
    /// param:Duration[持续时间],BoneName[骨骼名字],AnimName[动画名字]
    /// example:0.5,ef_righthand,QiangShou_Test09
    public void Trigger_StartAnimProcedure(string param)
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_StartAnimProcedure param:");
#endif
        SkillAnimProcedure tAniProce = this.gameObject.GetComponent <SkillAnimProcedure>();
        if (tAniProce == null)
        {
            LogicSystem.GfxLog("Trigger_StartAnimProcedure SkillAnimProcedure miss!");
            return;
        }
        IShooterSkill curSkill = TriggerImpl.GetCurSkill(this.gameObject);
        if (curSkill == null)
        {
            Debug.Log("Trigger_StartAnimProcedure curSkill null!");
            return;
        }
        SkillAnimProcedureInfo info = new SkillAnimProcedureInfo(param);
        info.TargetPos = curSkill.GetTargetPos();
        tAniProce.StartAnimProcedure(info);
    }
Example #18
0
    public bool StartSkillById(int skillid, Vector3 targetPos)
    {
        IShooterSkill ss = GetSkillById(skillid);

        if (ss == null)
        {
            return(false);
        }
        if (m_CurPlaySkill == null || m_CurPlaySkill.CanBreakBySkill() && ss.CanStart())
        {
            if (m_CurPlaySkill != null)
            {
                m_CurPlaySkill.StopSkill();
            }
            if (ss.StartSkill(targetPos))
            {
                m_CurPlaySkill = ss;
                return(true);
            }
        }
        return(false);
    }
Example #19
0
    void OnClick()
    {
        if (LogicSystem.PlayerSelf != null)
        {
            IShooterSkill curSkill = TriggerImpl.GetCurSkill(LogicSystem.PlayerSelf);
            if (curSkill != null && curSkill.IsExecuting())
            {
                return;
            }

            TriggerImpl.SwitchNextWeapon(LogicSystem.PlayerSelf);
            SkillWeaponInfo info = TriggerImpl.GetCurWeaponInfo(LogicSystem.PlayerSelf);
            if (info != null)
            {
                UISprite sp = this.GetComponent <UISprite>();
                if (null != sp)
                {
                    sp.spriteName = info.SpriteName;
                }
            }
        }
    }
Example #20
0
    public bool ForceStartSkillById(int skillid)
    {
        IShooterSkill ss = GetSkillById(skillid);

        if (ss == null)
        {
            return(false);
        }
        if (m_CurPlaySkill == null || ss.CanStart())
        {
            Vector3 targetPos = Vector3.zero;
            if (m_CurPlaySkill != null)
            {
                targetPos = m_CurPlaySkill.GetTargetPos();
                m_CurPlaySkill.StopSkill();
            }
            if (ss.StartSkill(targetPos))
            {
                m_CurPlaySkill = ss;
                return(true);
            }
        }
        return(false);
    }
Example #21
0
    /// param:Id[对应到SkillSceneObjManager中的Impact Id],center[box中心],size[box大小]
    /// example:602,0 1 1.5,1 3 3
    public void Trigger_SendImpactByBoxCollider(string param)
    {
#if SHOOTER_LOG
        Debug.Log("Trigger_SendImpactByBoxCollider param:" + param);
#endif
        if (m_SceneObjMgr != null)
        {
            SkillSceneObjInfo sobjInfo   = new SkillSceneObjInfo(param);
            Vector3           center     = sobjInfo.ExtractVector3(0);
            Vector3           size       = sobjInfo.ExtractVector3(1);
            SkillImpactInfos  bulletInfo = m_SceneObjMgr.TryGetSkillImpactInfo(sobjInfo.Id);
            IShooterSkill     curSkill   = TriggerImpl.GetCurSkill(this.gameObject);
            if (bulletInfo != null)
            {
                bulletInfo = bulletInfo.Clone();
                TriggerImpl.ProcessImpactByBoxCollider(this.gameObject, this.gameObject, bulletInfo,
                                                       center, size);
            }
            else
            {
                Debug.Log("Trigger_SendImpact null!");
            }
        }
    }