public override string ToString() { return(string.Format("{0} change target from {1} to {2}", actionUnit, lastTargetUnit == null ? "None" : lastTargetUnit.ToString(), newTargetUnit == null ? "None" : newTargetUnit.ToString())); }
public override void UpdateView() { base.UpdateView(); if (focusGridUnit != null) { tmpGridUnitInfo.text = string.Format("GridUnit:\n{0}", focusGridUnit.ToString()); } if (focusBattleUnit != null) { tmpBattleUnitInfo.text = string.Format("BattleUnit:\n{0}\nHp:{1}/{2}\nAtk:{3}{4}\nDef:{5}{6}\nMobility:{7}{8}", focusBattleUnit.ToString(), focusBattleUnit.battleUnitAttribute.hp, focusBattleUnit.battleUnitAttribute.maxHp, focusBattleUnit.battleUnitAttribute.Atk, GetGridUnitBuffStr(focusBattleUnit.mapGrid.gridUnitBuff, GridUnitBuffType.Atk), focusBattleUnit.battleUnitAttribute.Def, GetGridUnitBuffStr(focusBattleUnit.mapGrid.gridUnitBuff, GridUnitBuffType.Def), focusBattleUnit.battleUnitAttribute.mobility, GetGridUnitBuffStr(focusBattleUnit.mapGrid.gridUnitBuff, GridUnitBuffType.Range) ); } //设置显示 separateLine.SetActive(focusGridUnit != null && focusBattleUnit != null); tmpGridUnitInfo.gameObject.SetActive(focusGridUnit != null); tmpBattleUnitInfo.gameObject.SetActive(focusBattleUnit != null); UpdateBattleUnitPackage(); }
public override void UpdateView() { base.UpdateView(); if (focusGridUnit != null) { tmpGridUnitInfo.text = string.Format("GridUnit:\n{0}", focusGridUnit.ToString()); } if (focusBattleUnit != null) { tmpBattleUnitInfo.text = string.Format("BattleUnit:\n{0}\nHp:{1}/{2}\nAtk:{3}\nDef:{4}\nMobility:{5}", focusBattleUnit.ToString(), focusBattleUnit.battleUnitAttribute.hp, focusBattleUnit.battleUnitAttribute.maxHp, focusBattleUnit.battleUnitAttribute.atk, focusBattleUnit.battleUnitAttribute.def, focusBattleUnit.battleUnitAttribute.mobility ); } //设置显示 separateLine.SetActive(focusGridUnit != null && focusBattleUnit != null); tmpGridUnitInfo.gameObject.SetActive(focusGridUnit != null); tmpBattleUnitInfo.gameObject.SetActive(focusBattleUnit != null); }
//打印详情 public string Desc() { StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendFormat("Release analysis : {0} -> {1}\n", releaser == null ? "None" : releaser.ToString(), target == null ? "None" : target.ToString()); List <BattleSkillAutoReleaseAnalysisItem> validList = skillReleaseAnalysisItem.GetUsed(); if (validList == null) { strBuilder.AppendFormat("Empty......"); } else { for (int i = 0; i < validList.Count; ++i) { if (validList[i].battleSkill != null) { strBuilder.AppendFormat("{0}. {1} : score = {2}, count = {3}\n", i, validList[i].battleSkill.skillName, validList[i].score, validList[i].effectedCount); } } } return(strBuilder.ToString()); }
public string Desc() { StringBuilder desc = new StringBuilder(); desc.AppendFormat("BattleUnit action:{0}\n", actionUnit.ToString()); if (enterBattleFieldAction != null) { desc.AppendFormat("Enter battle field:{0}, born grid:{1}\n", enterBattleFieldAction.battleField, enterBattleFieldAction.bornGrid); } if (changeTargetAction != null) { desc.AppendFormat("Change target:from {0} to {1}\n", changeTargetAction.lastTargetUnit == null ? "None" : changeTargetAction.lastTargetUnit.ToString(), changeTargetAction.newTargetUnit == null ? "None" : changeTargetAction.newTargetUnit.ToString()); } if (motionAction != null) { desc.AppendFormat("Move: target is {0}, move from {1},\n", motionAction.targetUnit, motionAction.fromGrid); if (motionAction.gridPath != null) { for (int i = 0; i < motionAction.gridPath.Length; ++i) { desc.AppendFormat("Passed: {0},\n", motionAction.gridPath[i]); } } desc.AppendFormat("Move range: {0}.\n", motionAction.moveRange); } if (skillAction != null) { desc.AppendFormat("Use skill {0}\n", skillAction.battleSkill.skillName); if (skillAction.skillResult != null) { for (int i = 0; i < skillAction.skillResult.Length; ++i) { desc.AppendFormat("{0}\n", skillAction.skillResult[i].ToString()); } } } if (manualAction != null) { desc.AppendFormat("Waiting for manual operation.\n"); } if (warningAction != null) { desc.AppendFormat("<color=#FFFF00>WARNING!!!</color>:{0}\n", warningAction.logWarning); } return(desc.ToString()); }
//开始战斗 private void Fight() { battleState = BattleState.Fighting; Debug.Log(string.Format("<color=#ff0000> {0} battle fight. </color>", this.ToString())); List <BattleAction> actions = new List <BattleAction>(); BattleUnit actionUnit = null; do { //没有连接渲染器,则一步一更新 //连接了渲染器,则一直更新直到结束 actionUnit = actionQueue.Dequeue(); if (actionUnit == null) { battleState = BattleState.End; break; } if (actionUnit.CanAction) { HeroActionState state = actionUnit.BattleAction(actions); switch (state) { case HeroActionState.BattleEnd: battleState = BattleState.End; break; case HeroActionState.Error: battleState = BattleState.Exception; break; case HeroActionState.Warn: UtilityHelper.LogWarning(string.Format("Warning: battle action state warning -> {0}", actionUnit.ToString())); break; case HeroActionState.WaitForPlayerChoose: battleState = BattleState.WaitForPlayer; break; default: break; } //追加动作 AppendBattleActions(actions); //考虑是否在放回队列 CalculateNextAction(actionUnit); } ++actionCount; if (actionCount >= EGameConstL.BattleFieldMaxActions) { battleState = BattleState.Exception; } } while (battleFieldRenderer == null && battleState != BattleState.End && battleState != BattleState.Exception); //连接了渲染器,一步一更新 if (battleFieldRenderer != null) { Debug.Log("Play actions"); if (battleState == BattleState.End || battleState == BattleState.Exception) { battleFieldRenderer.PlayBattle(BattleEnd); } else if (battleState == BattleState.WaitForPlayer) { battleFieldRenderer.PlayBattle(null); } else { battleFieldRenderer.PlayBattle(Fight); } } else { //没有连接渲染器,自动战斗 BattleEnd(); } }
private void OnBattleUnitAndGridTouched(GridUnit gridTouched, BattleUnit battleUnitTouched) { //没有激活操作状态 if (manualOperationState == ManualOperationState.None) { //点中了战斗单位 if (battleUnitTouched != null) { //点中了等待手动操作的战斗单位 if (battleUnitTouched.battleUnitRenderer.Equals(manualBattleUnitRenderer)) { ShowManualActionList(); } else { UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched); } } //点中了地图 else { UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched); } } //选择移动状态 else if (manualOperationState == ManualOperationState.Move) { //点中了战斗单位 if (battleUnitTouched != null) { //点中了等待手动操作的战斗单位 if (battleUnitTouched.battleUnitRenderer.Equals(manualBattleUnitRenderer)) { //取消操作 manualOperationState = ManualOperationState.None; SetRangeHighlightActive(false, 0, 0, 0); } else { UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched); } } //点中了地图 else { if (gridTouched.GridType == GridType.Obstacle) { UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched); } else { //点击是否超出了范围 GridUnit fromGrid = manualBattleUnitRenderer.battleUnit.mapGrid; if (fromGrid.Distance(gridTouched) > manualBattleUnitRenderer.battleUnit.mobility) { Debug.Log("超出了移动半径!"); } else { bool result = MapNavigator.Instance.Navigate( battleField.battleMap, fromGrid, gridTouched, UtilityObjs.gridUnits, null, manualBattleUnitRenderer.battleUnit.mobility ); //判断是否可以到达(导航成功且可以可以到达) if (result && UtilityObjs.gridUnits[UtilityObjs.gridUnits.Count - 1].Equals(gridTouched)) { //可以到达 ManualMoveTo(gridTouched, UtilityObjs.gridUnits.ToArray()); UtilityObjs.gridUnits.Clear(); } else { //不可以到达 Debug.Log("点击位置不可到达!"); } } } } } //选择攻击目标状态 else if (manualOperationState == ManualOperationState.Skill) { //点中了战斗单位 if (battleUnitTouched != null) { //点中了等待手动操作的战斗单位 if (battleUnitTouched.battleUnitRenderer.Equals(manualBattleUnitRenderer)) { //取消操作 manualOperationState = ManualOperationState.None; SetRangeHighlightActive(false, 0, 0, 0); } else { //判断是否可以被攻击 if (manualBattleUnitRenderer.battleUnit.battleTeam.Equals(battleUnitTouched.battleTeam)) { //同一个队伍的 Debug.Log("攻击状态点中了同一个队伍的战斗单位:" + battleUnitTouched.ToString()); } else if (battleUnitTouched.mapGrid.Distance(manualBattleUnitRenderer.battleUnit.mapGrid) > 1) { Debug.Log("不在攻击范围:" + battleUnitTouched.ToString()); } else { ManualSkill(battleUnitTouched); } } } //点中了地图 else { Debug.Log("攻击状态点中了地图单位:" + gridTouched.ToString()); } } }
//开始战斗 private void Fight() { battleState = BattleState.Fighting; BattleUnit actionUnit = null; do { //连接渲染器,则一步一更新 //没有连接渲染器,则一直计算直到结束 actionUnit = actionQueue.Dequeue(); if (actionUnit == null) { battleState = BattleState.End; break; } if (actionUnit.CanAction) { BattleUnitAction battleUnitAction = BattleUnitAction.Create(actionUnit); HeroActionState state = actionUnit.BattleAction(); switch (state) { case HeroActionState.Normal: battleState = BattleState.Fighting; break; case HeroActionState.WaitForPlayerChoose: battleState = BattleState.WaitForPlayer; break; case HeroActionState.Error: battleState = BattleState.Exception; break; case HeroActionState.Warn: battleState = BattleState.Exception; UtilityHelper.LogWarning(string.Format("Warning: battle action state warning -> {0}", actionUnit.ToString())); break; default: break; } } //考虑是否在放回队列 CalculateNextAction(actionUnit); if (battleActions.Count > EGameConstL.BattleFieldMaxActions) { UtilityHelper.LogError("Battle actions overflow max limit."); battleState = BattleState.Exception; } else { //只在这种情况下做战斗结束的判断 if (!actionUnit.CanAction || actionUnit.targetBattleUnit == null || !actionUnit.targetBattleUnit.CanAction) { CheckBattleEnd(); } } } while (battleFieldRenderer == null && battleState != BattleState.End && battleState != BattleState.Exception); //连接了渲染器,一步一表现 if (battleFieldRenderer != null) { if (battleState == BattleState.WaitForPlayer) { battleFieldRenderer.PlayBattle(null); } else { battleFieldRenderer.PlayBattle(Run); } } else { Run(); } }
public override string Desc() { return(string.Format("Change target:from {0} to {1}\n", lastTargetUnit == null ? "None" : lastTargetUnit.ToString(), newTargetUnit == null ? "None" : newTargetUnit.ToString())); }