public void StartBattle(ExplorerPositionData position) { _contextLogic.TurnType = BattleTurnResultType.StartTurn; _battleLogic.StartBattle(); _contextLogic.SetAbilityContext(-1, -1, false); _impactLogic.ExecuteImpact(_contextLogic.ImpactInit); _battleLogic.BatchEventBattle(); _contextLogic.TurnType = BattleTurnResultType.PassiveAbility; foreach (var temp in _battle.LiveAllies) { _contextLogic.TurnType = BattleTurnResultType.PassiveAbility; ExecuteStartAbility(temp, false); } foreach (var temp in _battle.LiveEnemies) { _contextLogic.TurnType = BattleTurnResultType.PassiveAbility; ExecuteStartAbility(temp, true); if (_contextLogic.MobImpacts.TryGetValue(temp, out var impact)) { _contextLogic.SetAbilityContext(temp, null, true); _impactLogic.ExecuteImpact(impact); } } _contextLogic.TurnType = BattleTurnResultType.EndTurn; _explorer.State.Position = position; _battleLogic.UpdateMobs(); _battleLogic.BatchEventBattle(); LogicLog.SetBattle(LogBattleType.Start, _explorer.State.LastInteractiveId, _explorer.State.RoomId, _explorer.CurrentStage); }
public void FinishBattle() { if (_battle.State.Data.Status == BattleStatus.Running) { _battle.State.Data.Status = BattleStatus.Leave; LogicLog.SetBattle(LogBattleType.Leave, _explorer.State.LastInteractiveId, _explorer.State.RoomId, _explorer.CurrentStage); } var status = _battle.State.Data.Status; _battleLogic.ClearBattle(); if (status == BattleStatus.Win) { _impactLogic.ExecuteImpact(_contextLogic.ImpactWin); LogicLog.SetBattle(LogBattleType.Win, _explorer.State.LastInteractiveId, _explorer.State.RoomId, _explorer.CurrentStage); } else { _impactLogic.ExecuteImpact(_contextLogic.ImpactLose); LogicLog.SetBattle(LogBattleType.Lose, _explorer.State.LastInteractiveId, _explorer.State.RoomId, _explorer.CurrentStage); } }