Beispiel #1
0
        /// <summary>
        /// 每击杀一波敌人后,我方奖励怒气 [3/3/2015 Zmy]
        /// </summary>
        private void EachRewardPower()
        {
            // 奖励怒气 = 主角等级影响 + 英雄等级影响 + 装备符文等其他能增加英雄属性系统影响 + config中配置的全局变量 + 地图奖励 [3/3/2015 Zmy]
            //int nSelf_value = ObjectSelf.GetInstance().GetWavaPowerValue();

            int nHero_value = 0;

            for (int i = 0; i < SceneObjectManager.GetInstance().GetObjectHeroCount(); i++)
            {
                ObjectHero pHero = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (pHero == null || pHero.IsAlive() == false)
                {
                    continue;
                }

//                 int nCurLevel = pHero.GetHeroData().Level;
//                 int nInitFuryTemplateID = pHero.GetHeroRow().getWaveFury() - 1;
//
//                 HerofuryTemplate pRow = (HerofuryTemplate)DataTemplate.GetInstance().m_HeroFuryTable.getTableData(nCurLevel);
//                 if (nInitFuryTemplateID >= 0 && nInitFuryTemplateID < GlobalMembers.MAX_HEROFURY_PARAM_COUNT)
//                 {
//                     nHero_value += pRow.getTemplate()[nInitFuryTemplateID];
//                 }
                AngertableTemplate _data = (AngertableTemplate)DataTemplate.GetInstance().m_AngerTable.getTableData(pHero.GetHeroRow().getFuryId());
                nHero_value += _data.getWaveFury();
            }

            //int nGlobalWavaFury = DataTemplate.GetInstance().m_GameConfig.getWave_fury();

            //int nSum = nSelf_value + nHero_value + nGlobalWavaFury;
            m_HeroPower.OnUpdatePowerValue(nHero_value);
        }
    protected override void UpdateState()
    {
        if (GetOwnerType() == 1)
        {
            ObjectHero obj = (ObjectHero)SceneObjectManager.GetInstance().GetSceneObjectByGameObject(this.gameObject);
            if (obj != null)
            {
                CurState = obj.GetActionState();
                if (obj.GetCurLockTarget() != null)
                {
                    CurLockTarget = obj.GetCurLockTarget().GetGameObject();
                }
                if (obj.GetSkillLockTarget() != null)
                {
                    CurLockSkillTarget = obj.GetSkillLockTarget().GetGameObject();
                }
            }
        }
        else
        {
            ObjectMonster obj = (ObjectMonster)SceneObjectManager.GetInstance().GetSceneObjectByGameObject(this.gameObject);
            if (obj != null)
            {
                CurState = obj.GetActionState();
            }
        }

        if (m_EventData != null && _anim[lastAnimatimName] != null)
        {
            m_EventData.OnUpdateEvent(_event, _anim[lastAnimatimName]);
        }
    }
Beispiel #3
0
        //英雄瞬间移动结束慢慢出现
        private void UpdateMomentMoveExit()
        {
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    //..慢慢出现
                    m_ShowCount++;
                }
            }
            if (m_ShowCount == SceneObjectManager.GetInstance().GetObjectHeroCount())
            {
                m_ShowCount = 0;
                FightEditorContrler.GetInstantiate().HeroPathNormalMove();
                SetFightState(FightState.HeroMove);
                for (int i = 0; i < nHeroCount; ++i)
                {
                    ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                    if (HeroObj != null && HeroObj.IsAlive())
                    {
                        HeroObj.GetNavMesh().enabled = true;
                        HeroObj.SetObjectActionState(ObjectCreature.ObjectActionState.forward);
                    }
                }
            }
        }
Beispiel #4
0
        private void UpdateHeroBoarding()
        {
            moveTime += Time.deltaTime;

            if (moveTime < 0.1f)
            {
                return;
            }

            moveTime = 0f;

            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; i++)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    NavMeshAgent Nav = HeroObj.GetNavMesh();
                    Nav.speed = HeroObj.GetMoveSpeed();
                    Nav.SetDestination(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj));
                    //HeroObj.SetWorldPosRotation(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj), FightEditorContrler.GetInstantiate().GetFormationAngle(HeroObj));
                    HeroObj.SetObjectActionState(ObjectCreature.ObjectActionState.boarding);
                    HeroObj.GetAnimation().Anim_Fidle(false);
                }
            }
        }
Beispiel #5
0
        private void OnSceneFightLose()
        {
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    NavMeshAgent Nav = HeroObj.GetNavMesh();
                    Nav.SetDestination(HeroObj.GetGameObject().transform.position);
                    HeroObj.GetAnimation().Anim_Fidle(false);
                }
            }

            if (ObjectSelf.GetInstance().LimitFightMgr.m_bStartEnter)
            {
                ObjectSelf.GetInstance().LimitFightMgr.SendRoundOver();
            }
            else
            {
                if (ObjectSelf.GetInstance().WorldBossMgr.m_bStartEnter)
                {
                    ObjectSelf.GetInstance().WorldBossMgr.SendRoundOver();
                }
                else
                {
                    CEndBattle battle = new CEndBattle();
                    battle.pass = 0;// 未通过
                    IOControler.GetInstance().SendProtocol(battle);
                }
            }

            GameTimeControler.Inst.SetState(TimeScaleState.TimeScale_Normal);
        }
Beispiel #6
0
 public void AddObjHero(ObjectHero obj)
 {
     if (ObjectHeroList == null)
     {
         ObjectHeroList = new List <ObjectHero>();
     }
     ObjectHeroList.Add(obj);
     ObjectCount = ObjectHeroList.Count;
 }
Beispiel #7
0
        /// <summary>
        /// 受伤处理
        /// </summary>
        /// <param name="e"></param>
        private void onHeroHurtCall(GameEvent e)
        {
            ObjectHero hero = (ObjectHero)e.data;

            if (hero != null)
            {
                UpdateBloodValue(hero.GetGuid(), (float)hero.GetHP() / hero.GetMaxHP());
            }
        }
Beispiel #8
0
 /// <summary>
 /// 准备上载具的位置修正;
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="heroObj"></param>
 private void CallBack_PrepareBoardPos(GameObject obj, ObjectHero heroObj)
 {
     m_BoardHeroCount++;
     heroObj.SetObjectActionState(ObjectCreature.ObjectActionState.boarding);
     if (m_BoardHeroCount >= SceneObjectManager.GetInstance().GetObjectHeroCount())
     {
         m_BoardHeroCount = 0;
         SetFightState(FightState.PrepareBoardOver);
     }
 }
Beispiel #9
0
        //通过技能逻辑返回英雄能释放的最大优先级的AI模板
        private SpellAILogic ChooseAILogicPriority(ObjectHero hero, int type, int _spellIndex = 0)
        {
            if (hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().GetID() == -1)
            {
                return(null);
            }
            int[] m_Template = null; //临时自动模式模板
            int[] m_Priority = null; //临时自动模式模板优先级
            switch (type)            //选择当前自动战斗模式
            {
            case (int)EM_SPELL_AI_TYPE.EM_SPELL_AI_TYPE_NORMAL:
                m_Template = hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().getNormalTemplate();
                m_Priority = hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().getNormalpriority();
                break;

            case (int)EM_SPELL_AI_TYPE.EM_SPELL_AI_TYPE_ATTACK:
                m_Template = hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().getAttFirstTemplate();
                m_Priority = hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().getAttFirstpriority();
                break;

            case (int)EM_SPELL_AI_TYPE.EM_SPELL_AI_TYPE_CURE:
                m_Template = hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().getDefFirstTemplate();
                m_Priority = hero.Getm_SpellInfo()[_spellIndex].GetSpellRow().getDefFirstpriority();
                break;

            default:
                break;
            }
            if (m_Template == null || m_Template.Length <= 0)
            {
                return(null);
            }
            int          Templatecout = m_Template.Length;
            int          Maxtemp      = -1;   //临时优先级
            SpellAILogic tempSpellai  = null; //临时AI模板

            for (int i = 0; i < Templatecout; ++i)
            {
                //判断是否满足AI逻辑ID的条件
                SpellAILogic temp = GenerateSubsetFromPool(m_Template[i], m_Priority[i], hero, hero.Getm_SpellInfo()[_spellIndex], m_AITime);
                if (temp.IsAILogicReady())
                {
                    OnlyHeroSpellAILogicList.Add(temp);
                }
            }
            for (int i = 0; i < OnlyHeroSpellAILogicList.Count; ++i)
            {
                if (OnlyHeroSpellAILogicList[i].GetPriority() > Maxtemp)
                {
                    Maxtemp     = OnlyHeroSpellAILogicList[i].GetPriority();
                    tempSpellai = OnlyHeroSpellAILogicList[i];
                }
            }
            return(tempSpellai);
        }
Beispiel #10
0
 //瞬间移动进入前位置修正
 private void CallBack_MomentMoveEnter(GameObject obj, ObjectHero heroObj)
 {
     m_MonmentMoveHeroPosCount++;
     heroObj.SetObjectActionState(ObjectCreature.ObjectActionState.monmentmoveIng);
     //heroObj.GetAnimation().Anim_Fidle(false);
     if (m_MonmentMoveHeroPosCount == SceneObjectManager.GetInstance().GetObjectHeroCount())
     {
         m_MonmentMoveHeroPosCount = 0;
         SetFightState(FightState.HeroMonmentMoveIng);
     }
 }
Beispiel #11
0
        /// <summary>
        /// 开场剧情播放进入
        /// </summary>
        private void CallBack_StoryCameraEnter()
        {
            SetFightState(FightState.FightStoryCamera);
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero pHero = SceneObjectManager.GetInstance().GetHeroObject(i);
                pHero.GetAnimation().Anim_Fidle(false);
            }
        }
Beispiel #12
0
        public void CreateSkillIcon(ObjectHero hero, GameObject icon)
        {
            //GameObject icon = Instantiate(iconPre, Vector3.zero, Quaternion.identity) as GameObject;
            //icon.transform.SetParent(selfTransform,false);
            //icon.transform.localScale = new Vector3(1, 1, 1);

            UI_SkillIcon skillIcon = icon.AddComponent <UI_SkillIcon>();

            skillIcon.setHero(hero);
            skillIcon.InitIcon();
            mIcons.Add(hero.GetGuid(), skillIcon);
        }
Beispiel #13
0
    //校验被动技能之主动释放的概率[11/3/2015 Zmy]
    public bool CheckFreeLogic(ObjectHero objHero)
    {
        if (objHero.GetHeroData().QualityLev > 1 && OneSpellFreeState == false && m_NormalAttackCount >= DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_P())
        {
            int nProValueAddtion = (m_NormalAttackCount - DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_P()) * DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_B();
            int nProValue        = DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_A() + nProValueAddtion;

            int           iRnd       = System.DateTime.Now.Millisecond;
            System.Random randomCoor = new System.Random(iRnd);
            int           nRand      = randomCoor.Next(1, 1000);

            if (nRand <= nProValue)
            {
                OneSpellFreeState = true;
                //Debug.Log("!满足第一个被动技能释放。在周期内第" + m_NormalAttackCount + "次普攻触发了!释放第一技能,普攻次数+1 =====s随机概率为" + nRand + "!!!释放概率:" + nProValue);
                m_NormalAttackCount++;
                if (m_NormalAttackCount > DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_X())
                {
                    ClearUp();
                }
                objHero.LaunchFreeSpellLogic(EM_SPELL_PASSIVE_INDEX.EM_SPELL_PASSIVE_FIRST);
                return(true);
            }
        }

        if (objHero.GetHeroData().QualityLev > 3 && TwoSpellFreeState == false && m_NormalAttackCount >= DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_Q())
        {
            int nProValueAddtion = (m_NormalAttackCount - DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_Q()) * DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_D();
            int nProValue        = DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_C() + nProValueAddtion;

            int           iRnd       = System.DateTime.Now.Millisecond;
            System.Random randomCoor = new System.Random(iRnd);
            int           nRand      = randomCoor.Next(1, 1000);

            if (nRand <= nProValue)
            {
                TwoSpellFreeState = true;
                //Debug.Log("!满足第二个被动技能释放。在周期内第" + m_NormalAttackCount + "次普攻触发了!释放第一技能,普攻次数+1 =====s随机概率为"+ nRand + "!!!释放概率:"+nProValue);
                m_NormalAttackCount++;
                if (m_NormalAttackCount > DataTemplate.GetInstance().m_GameConfig.getPassive_Active_Skills_X())
                {
                    ClearUp();
                }
                objHero.LaunchFreeSpellLogic(EM_SPELL_PASSIVE_INDEX.EM_SPELL_PASSIVE_SECOND);
                return(true);
            }
        }

        //Debug.Log("!本次普攻次数为:"+m_NormalAttackCount + "没有触发任何被动技");
        return(false);
    }
Beispiel #14
0
        public void SelectSpellTarget(ObjectHero objHero)
        {
            ReturnData();

            SpellAILogic FinishAi = ChooseAILogicPriority(objHero, (int)EM_SPELL_AI_TYPE.EM_SPELL_AI_TYPE_NORMAL, (int)objHero.GetLaunchFreeSpellIndex());//获取能释放技能的有效优先级

            if (SceneObjectManager.GetInstance().GetIsFireSignState() && SceneObjectManager.GetInstance().GetFireSighCreatrue() != null)
            {
                objHero.SetSkillLockTarget(SceneObjectManager.GetInstance().GetFireSighCreatrue());
            }
            else
            {
                objHero.SetSkillLockTarget(FinishAi.GetSkillTag());
            }
        }
Beispiel #15
0
        IEnumerator DelayCall(NavMeshAgent nav, GameObject obj, ObjectHero heroObj, HandleFinishDelayCall function)
        {
            //尼玛 这个坑比组件累死爹 属性居然还会无效。使用下面的原始距离计算可破 [3/13/2015 Zmy]
            //while (nav.remainingDistance > 0.1f)
            //    yield return new WaitForEndOfFrame();

            while (Vector3.Distance(obj.transform.position, nav.destination) > 0.3f)
            {
                yield return(new WaitForEndOfFrame());
            }

            if (function != null)
            {
                function(obj, heroObj);
            }
        }
Beispiel #16
0
        private ObjectHero GetHero()
        {
            if (mHero == null)
            {
                List <ObjectHero> heroList = SceneObjectManager.GetInstance().GetSceneHeroList();

                for (int i = 0; i < heroList.Count; i++)
                {
                    if (heroList[i].GetHeroData().GUID == mHero.GetGuid())
                    {
                        mHero = heroList[i];
                    }
                }
            }
            return(mHero);
        }
    public void Anim_Attack()
    {
        ObjectCreature obj = SceneObjectManager.GetInstance().GetSceneObjectByGameObject(this.gameObject);

        if (obj is ObjectHero)
        {
            ObjectHero hero    = obj as ObjectHero;
            string[]   Actions = hero.GetSpellNormal().GetSpellRow().getAction();
            RandomAttack(Actions);
        }
        else
        {
            ObjectMonster monster = obj as ObjectMonster;
            string[]      Actions = monster.GetSpellNormal().GetSpellRow().getAction();
            RandomAttack(Actions);
        }
    }
        //######################################################被击动作接口####################################################
        //被击结束回调
        private void HurtEnd()
        {
            ObjectCreature pCaster = SceneObjectManager.GetInstance().GetSceneObjectByGameObject(this.gameObject);

            if (pCaster == null)
            {
                return;
            }

            switch (pCaster.GetActionState())
            {
            case ObjectCreature.ObjectActionState.Hurting:
            {
                if (pCaster.GetCacheLastActionState() == ObjectCreature.ObjectActionState.dizzy && pCaster.IsInFightState(EM_FIGHT_STATE.EM_FIGHT_STATE_VERTIGO))
                {
                    //重置回眩晕中 [10/19/2015 Zmy]
                    pCaster.SetObjectActionState(ObjectCreature.ObjectActionState.dizzy);
                }
                else
                {
                    pCaster.SetObjectActionState(ObjectCreature.ObjectActionState.normalAttack);
                }
            }
            break;

            case ObjectCreature.ObjectActionState.checkHurting:
            {
                //受击结束播放一次不带事件回调的待机动画,用于可以在checkHurting状态下可以再次播放受击动作 [9/28/2015 Zmy]
                if (pCaster is ObjectHero)
                {
                    ObjectHero obj = pCaster as ObjectHero;
                    obj.GetAnimation().Anim_Fidle(false);
                }
                else
                {
                    ObjectMonster obj = pCaster as ObjectMonster;
                    obj.GetAnimation().Anim_Fidle(false);
                }
            }
            break;

            default:
                break;
            }
        }
Beispiel #19
0
        //当前场景战斗结束 [3/13/2015 Zmy]
        private void OnSceneFightWin()
        {
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero   pHero = SceneObjectManager.GetInstance().GetHeroObject(i);
                NavMeshAgent Nav   = pHero.GetNavMesh();
                Nav.SetDestination(pHero.GetGameObject().transform.position);
                pHero.GetAnimation().Anim_Fidle(false);
            }
            // 战斗胜利先刷新奖励数据 [4/2/2015 Zmy]
            //ObjectSelf.GetInstance().UpdateDataBattleWin();
            // 战斗胜利后刷新关卡数据 [4/8/2015 Zmy]
            SceneObjectManager.GetInstance().UpdateBattleWinStageData();
            GameTimeControler.Inst.SetState(TimeScaleState.TimeScale_Normal);
            GameEventDispatcher.Inst.dispatchEvent(GameEventID.F_BattleOver);
        }
Beispiel #20
0
        /// <summary>
        /// 修正位置的回调
        /// </summary>
        private void CallBack_RevisepPos(GameObject obj, ObjectHero heroObj)
        {
            m_ReviseHeroPosCount++;
            SetFightState(FightState.Fighting);
            heroObj.SetObjectActionState(ObjectCreature.ObjectActionState.scanning);
            if (m_ReviseHeroPosCount == 1)
            {
                GameEventDispatcher.Inst.dispatchEvent(GameEventID.SE_StopMonsterBirth);
            }
            if (m_ReviseHeroPosCount == SceneObjectManager.GetInstance().GetObjectHeroCount())
            {
                m_ReviseHeroPosCount = 0;
                m_IsTriger           = true;
            }

            //TODO::修正所有怪物状态为攻击状态---(先这么写以后待细细考虑);
            SceneObjectManager.GetInstance().ObjectMonsterAllAttack();
        }
Beispiel #21
0
        //瞬间移动事件进入
        public void CallBack_eroPathMomentMoveEnter()
        {
            SetFightState(FightState.HeroMonmentMoveEnter);
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    HeroObj.GetAnimation().Anim_Run();
                    NavMeshAgent Nav = HeroObj.GetNavMesh();
                    Nav.speed = HeroObj.GetMoveSpeed();
                    Nav.SetDestination(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj));
                    //Debug.Log(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj));
                    StartCoroutine(DelayCallPos(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj), HeroObj.GetGameObject(), HeroObj, CallBack_MomentMoveEnter));
                }
            }
        }
Beispiel #22
0
        private void CallBack_PrepareBoard()
        {
            SetFightState(FightState.PrepareBoard);

            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    HeroObj.GetAnimation().Anim_Run();
                    NavMeshAgent Nav = HeroObj.GetNavMesh();
                    Nav.speed = HeroObj.GetMoveSpeed();
                    Nav.SetDestination(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj));

                    StartCoroutine(DelayCall(Nav, HeroObj.GetGameObject(), HeroObj, CallBack_PrepareBoardPos));
                }
            }
        }
Beispiel #23
0
        //创建血条
        public void CreateBloodBar(ObjectHero hero)
        {
            Transform tans = hero.GetAnimation().EventControl.Pre_Head_T_EffectPoint;

            GameObject barObj = Instantiate(UI_FightControler.Inst.heroBloodPre, Vector3.zero, Quaternion.identity) as GameObject;

            barObj.transform.SetParent(transform, false);
            UI_Blood mBlood = barObj.AddComponent <UI_Blood>();

            mBlood.SetPosition(tans.position);
            barObj.transform.localScale = new Vector3(1, 1, 1);
            bloodInfo.Add(mBlood);
            mBlood.isHero = true;
            mBlood.setHeroLevel(hero.GetHeroData().Level);
            if (!ObjectSelf.GetInstance().LimitFightMgr.m_bStartEnter)
            {
                hero.SetHP(hero.GetMaxHP());
            }
            mBlood.SetValue((float)hero.GetHP() / (float)hero.GetMaxHP());
            mBlood.setHeadPosition(tans);
            mBlood.uid.Copy(hero.GetGuid());
        }
Beispiel #24
0
    /// <summary>
    /// 初始化
    /// </summary>
    private void InitHeroData()
    {
        m_HeroData = (HeroTemplate)DataTemplate.GetInstance().m_HeroTable.getTableData(m_HeroTableId);

        ObjectHero _objHero = new ObjectHero();
        Hero       _hero    = new Hero();

        _hero.heroid = m_HeroTableId;
        _hero.skill1 = m_HeroData.getSkill1ID();
        _hero.skill2 = m_HeroData.getSkill2ID();
        _hero.skill3 = m_HeroData.getSkill3ID();
        _objHero.GetHeroData().Init(_hero);

        //_objHero.UpdateItemEffectValue();
        //_objHero.UpdateTeamEffectValue();
        //_objHero.InitEventData();
        _objHero.SetSpellNormalData();
        //_objHero.InitBaseData();
        //_objHero.UpdateSpellEffectValue();
        m_SkillIcon.setHero(_objHero);
        m_SkillIcon.InitIcon();
    }
Beispiel #25
0
        //英雄慢慢消失后瞬间移动
        private void UpdateMomentMoveIng()
        {
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    //..慢慢消失
                    m_DisappearCount++;
                    HeroObj.GetNavMesh().enabled = false;
                    HeroObj.OnConcealThis();
                }
            }
            if (m_DisappearCount == SceneObjectManager.GetInstance().GetObjectHeroCount())
            {
                m_DisappearCount = 0;
                FightEditorContrler.GetInstantiate().HeroPathNormalMove();
                SetFightState(FightState.HeroMonmentMoveEnter);
            }
        }
Beispiel #26
0
        //进入战斗状态开始战斗,在这之前先修正一下人物位置 [1/20/2015 Zmy]
        private void CallBack_EnterFightState()
        {
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                //                 ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                //                 if (HeroObj != null)
                //                 {
                //                     GameObject obj = HeroObj.GetGameObject();
                //                     if (obj != null)
                //                     {
                //                         obj.GetComponent<NavMeshAgent>().Stop();
                //                         float _heroSpeed = HeroObj.GetMoveSpeed();
                //                         float _moveTime = Vector3.Distance(obj.transform.position, FightEditorContrler.inst.GetFormationPos(HeroObj.GetGameObject())) / _heroSpeed;
                //                         //修正高度值 [1/22/2015 Zmy]
                //                         Vector3 targetPos = new Vector3(FightEditorContrler.inst.GetFormationPos(HeroObj.GetGameObject()).x, obj.transform.position.y, FightEditorContrler.inst.GetFormationPos(HeroObj.GetGameObject()).z);
                //                         obj.transform.DOMove(targetPos, _moveTime).SetUpdate(true).SetEase(Ease.Linear).OnComplete(()=>CallBack_RevisepPos(obj,HeroObj));
                //                     }
                //                 }

                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    HeroObj.GetAnimation().Anim_Run();
                    NavMeshAgent Nav = HeroObj.GetNavMesh();
                    Nav.speed = HeroObj.GetMoveSpeed();
                    Nav.SetDestination(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj));

                    StartCoroutine(DelayCall(Nav, HeroObj.GetGameObject(), HeroObj, CallBack_RevisepPos));
                }
            }

            //切换准备战斗状态
            SetFightState(FightState.prepareFight);

            //重算一下移动位置偏移量;
            HeroPathtContrler.GetInstantiate().ResetMoveTargetOffset();
        }
Beispiel #27
0
        /// <summary>
        /// 进入战场后初始化怒气
        /// </summary>
        private void InitFightPower()
        {
            int nSelf_value = ObjectSelf.GetInstance().GetInitPowerValue();

            int nHero_value = 0;

            for (int i = 0; i < SceneObjectManager.GetInstance().GetObjectHeroCount(); i++)
            {
                ObjectHero pHero               = SceneObjectManager.GetInstance().GetHeroObject(i);
                int        nCurLevel           = pHero.GetHeroData().Level;
                int        nInitFuryTemplateID = pHero.GetHeroRow().getEntranceFury() - 1;

//                 HerofuryTemplate pRow = (HerofuryTemplate)DataTemplate.GetInstance().m_HeroFuryTable.getTableData(nCurLevel);
//                 if (nInitFuryTemplateID >= 0 && nInitFuryTemplateID < GlobalMembers.MAX_HEROFURY_PARAM_COUNT)
//                 {
//                     nHero_value += (int)((float)pRow.getTemplate()[nInitFuryTemplateID] * (1f + pHero.GetInitPowerAddition() + pHero.GetInitPowerAdditionRate()));
//                 }
                for (int n = 0; n < pHero.GetHeroData().HeroCabalaDB.CabalaList.Count; ++n)
                {
                    int        _tableID = pHero.GetHeroData().HeroCabalaDB.CabalaList[n].TableID;
                    MsTemplate _row     = (MsTemplate)DataTemplate.GetInstance().m_MsTable.getTableData(_tableID);
                    if (_row.getMstype() == 1)//开场怒气额外增加
                    {
                        int nLev = pHero.GetHeroData().HeroCabalaDB.CabalaList[n].IntensifyLev;
                        if (nLev <= 0)
                        {
                            continue;
                        }
                        nHero_value += _row.getValue()[nLev - 1];
                    }
                }
                //释放一次英雄的被动技能。此逻辑只需执行一次,且需要所有英雄都已实例化完成并添加到场景对象管理器中 [7/31/2015 Zmy]
                pHero.UpdateSpellEffectValue();
            }
            //主角等级影响 + 英雄等级影响 * (1 + 初始加成怒气) [3/3/2015 Zmy]
            //int nSum = nSelf_value + nHero_value;
            m_HeroPower.OnUpdatePowerValue(nHero_value);
        }
Beispiel #28
0
        //移动中更新obj位置 [1/20/2015 Zmy]
        private void UpdateHeroForward()
        {
            moveTime += Time.deltaTime;
            if (moveTime < 0.1f)
            {
                //控制刷新延迟 [1/21/2015 Zmy]
                return;
            }
            moveTime = 0.0f;
            int nHeroCount = SceneObjectManager.GetInstance().GetObjectHeroCount();

            for (int i = 0; i < nHeroCount; ++i)
            {
                ObjectHero HeroObj = SceneObjectManager.GetInstance().GetHeroObject(i);
                if (HeroObj != null && HeroObj.IsAlive())
                {
                    NavMeshAgent Nav = HeroObj.GetNavMesh();
                    Nav.speed = HeroObj.GetMoveSpeed();
                    Nav.SetDestination(FightEditorContrler.GetInstantiate().GetFormationPos(HeroObj));

                    HeroObj.SetObjectActionState(ObjectCreature.ObjectActionState.forward);
                }
            }
        }
Beispiel #29
0
        private void OnAiTagLogic1()
        {
            if (m_ReleaseObj.GetGroupType() == EM_OBJECT_TYPE.EM_OBJECT_TYPE_HERO)
            {
                int        count = SceneObjectManager.GetInstance().GetObjectMonsterCount();
                ObjectHero hero  = (ObjectHero)m_ReleaseObj;
                //选择相克目标
//                 switch(hero.GetHeroRow().getCamp())
//                 {
//                     case (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE1:
//                         for (int i = 0; i < count;++i)
//                         {
//                             if (SceneObjectManager.GetInstance().GetSceneMonsterList()[i].GetMonsterRow().getCamp() == (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE2)
//                             {
//                                 m_SkillTag = SceneObjectManager.GetInstance().GetSceneMonsterList()[i];
//                                 return;
//                             }
//                         }
//                             break;
//                     case (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE2:
//                             for (int i = 0; i < count; ++i)
//                             {
//                                 if (SceneObjectManager.GetInstance().GetSceneMonsterList()[i].GetMonsterRow().getCamp() == (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE3)
//                                 {
//                                     m_SkillTag = SceneObjectManager.GetInstance().GetSceneMonsterList()[i];
//                                     return;
//                                 }
//                             }
//                             break;
//                     case (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE3:
//                             for (int i = 0; i < count; ++i)
//                             {
//                                 if (SceneObjectManager.GetInstance().GetSceneMonsterList()[i].GetMonsterRow().getCamp() == (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE1)
//                                 {
//                                     m_SkillTag = SceneObjectManager.GetInstance().GetSceneMonsterList()[i];
//                                     return;
//                                 }
//                             }
//                             break;
//                 }
                //选择普通攻击目标
                if (m_SkillTag == null || m_SkillTag.IsAlive() == false)
                {
                    m_SkillTag = hero.GetCurLockTarget();
                }
            }
            else if (m_ReleaseObj.GetGroupType() == EM_OBJECT_TYPE.EM_OBJECT_TYPE_MONSTER)
            {
                int           count   = SceneObjectManager.GetInstance().GetObjectHeroCount();
                ObjectMonster monster = (ObjectMonster)m_ReleaseObj;
                //选择相克目标
//                 switch (monster.GetMonsterRow().getCamp())
//                 {
//                     case (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE1:
//                         for (int i = 0; i < count; ++i)
//                         {
//                             if (SceneObjectManager.GetInstance().GetSceneHeroList()[i].GetHeroRow().getCamp() == (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE2)
//                             {
//                                 m_SkillTag = SceneObjectManager.GetInstance().GetSceneHeroList()[i];
//                                 return;
//                             }
//                         }
//                         break;
//                     case (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE2:
//                         for (int i = 0; i < count; ++i)
//                         {
//                             if (SceneObjectManager.GetInstance().GetSceneHeroList()[i].GetHeroRow().getCamp() == (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE3)
//                             {
//                                 m_SkillTag = SceneObjectManager.GetInstance().GetSceneHeroList()[i];
//                                 return;
//                             }
//                         }
//                         break;
//                     case (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE3:
//                         for (int i = 0; i < count; ++i)
//                         {
//                             if (SceneObjectManager.GetInstance().GetSceneHeroList()[i].GetHeroRow().getCamp() == (int)EM_HERO_CAMP_TYPE.EM_HERO_CAMP_TYPE1)
//                             {
//                                 m_SkillTag = SceneObjectManager.GetInstance().GetSceneHeroList()[i];
//                                 return;
//                             }
//                         }
//                         break;
//                 }
                //选择普通攻击目标
                if (m_SkillTag == null || m_SkillTag.IsAlive() == false)
                {
                    m_SkillTag = monster.GetCurLockTarget();
                }
            }
        }
        /// <summary>
        /// 返回技能是否开启 [Lyq]   重载
        /// </summary>
        /// <param name="objHero"></param>
        /// <param name="skillNo"></param>
        /// <returns></returns>
        public bool IsOpenSkill(ObjectHero objHero, int skillNo)
        {
            HeroTemplate heroData = objHero.GetHeroRow();

            return(IsOpenSkill(heroData, skillNo));
        }