/// <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]); } }
//英雄瞬间移动结束慢慢出现 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); } } } }
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); } } }
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); }
public void AddObjHero(ObjectHero obj) { if (ObjectHeroList == null) { ObjectHeroList = new List <ObjectHero>(); } ObjectHeroList.Add(obj); ObjectCount = ObjectHeroList.Count; }
/// <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()); } }
/// <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); } }
//通过技能逻辑返回英雄能释放的最大优先级的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); }
//瞬间移动进入前位置修正 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); } }
/// <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); } }
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); }
//校验被动技能之主动释放的概率[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); }
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()); } }
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); } }
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; } }
//当前场景战斗结束 [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); }
/// <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(); }
//瞬间移动事件进入 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)); } } }
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)); } } }
//创建血条 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()); }
/// <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(); }
//英雄慢慢消失后瞬间移动 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); } }
//进入战斗状态开始战斗,在这之前先修正一下人物位置 [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(); }
/// <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); }
//移动中更新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); } } }
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)); }