public void BattlePerTime(float perTime) { if (!IsBattleInPlanet()) { return; } float enemy = 0f; float player = 0f; if (State == e_State.AI) { enemy += Formula.CalculateDamageForDefOnePerTime(_enemyTroops, _playerTroops, DEF, perTime); player += Formula.CalculateDamageForAttackOnePerTime(_enemyTroops, _playerTroops, DEF, perTime); } else if (State == e_State.Player) { enemy += Formula.CalculateDamageForAttackOnePerTime(_playerTroops, _enemyTroops, DEF, perTime); player += Formula.CalculateDamageForDefOnePerTime(_playerTroops, _enemyTroops, DEF, perTime); } else { enemy += Formula.CalculateDamageForNeutralOnePerTime(_enemyTroops, _playerTroops, perTime); player += Formula.CalculateDamageForNeutralOnePerTime(_enemyTroops, _playerTroops, perTime); } EnemyTroops += enemy; PlayerTroops += player; DebugInConsole.LogFormat("我方损失兵力:{0} 总兵力:{1}", player, PlayerTroops); DebugInConsole.LogFormat("敌方损失兵力:{0} 总兵力:{1}", enemy, EnemyTroops); //Truncate(ref _enemyTroops, 0f); //Truncate(ref _playerTroops, 0f); }
/// <summary> /// 更新双方人口 /// </summary> void UpdatePopulation() { _enemyPopulation = 0; _playerPopulation = 0; _playerMaxPopulation = 0; _enemyMaxPopulation = 0; foreach (var s in Soldiers) { if (s.Bloc == SoldierType.Enemy) { _enemyPopulation++; } else { _playerPopulation++; } } foreach (var p in _planets) { // _enemyPopulation += p.EnemyTroops; // _playerPopulation += p.PlayerTroops; if (p.State == Star.e_State.AI) { _enemyMaxPopulation += p.Capacity; } else if (p.State == Star.e_State.Player) { _playerMaxPopulation += p.Capacity; } } DebugInConsole.LogFormat("敌方总人口:{0} 目前人口: {1}", _enemyMaxPopulation, _enemyPopulation); DebugInConsole.LogFormat("我方总人口:{0} 目前人口: {1}", _playerMaxPopulation, _playerPopulation); }
void UpdateSoldiersInPlanets() { DebugInConsole.Log("刷新星球内士兵..."); DebugInConsole.LogFormat("敌我士兵总数: {0}", Soldiers.Length); foreach (var p in Planets) { p.Planet_.PlayerSoldiers.Clear(); p.Planet_.EnemySoldiers.Clear(); } foreach (var s in Soldiers) { switch (s.Bloc) { case SoldierType.Player: if (s.InPlanet != null) { s.InPlanet.PlayerSoldiers.Add(s); } break; case SoldierType.Enemy: if (s.InPlanet != null) { s.InPlanet.EnemySoldiers.Add(s); } break; default: break; } } }
public void UpdateSoldiersToCount(int to, SoldierType type) { int detla = 0; switch (type) { case SoldierType.Player: detla = to - PlayerSoldiers.Count; DebugInConsole.LogFormat("我方增加兵力:{0} 之前兵力{1} 目前兵力{2}", detla, PlayerSoldiers.Count, to); break; case SoldierType.Enemy: detla = to - EnemySoldiers.Count; DebugInConsole.LogFormat("敌方增加兵力:{0} 之前兵力{1} 目前兵力{2}", detla, EnemySoldiers.Count, to); break; default: break; } //加兵 if (detla > 0) { CreateSoldiers(detla, type); } else if (detla < 0) { RandomRemoveSoldiers(-detla, type); } }
void UpdateSituationInEachPlanet() { //_situationUpdateTimer.Resume(); _situationUpdateTimer.Update(); if (_situationUpdateTimer.CurrentState == TimerState.FINISHED) { DebugInConsole.LogFormat("*******************第{0}秒*******************", _updateCountIndex++); // UpdateSoldiersInPlanets(); //UpdatePopulation(); foreach (var p in _planets) { DebugInConsole.LogFormat("*****星球: {0}*****", p.name); p.OnUpdateSituation(); p.OnUpdateSoldierAnimation(); DebugInConsole.Log("*******************"); } DebugInConsole.LogFormat("*********************************************"); //yield return new WaitForSeconds(Formula.CalculatePerTime); //} } }