public static void StartBattle(TargetableObject attacker, TargetableObject defender) { Debug.Log("Starting battle!"); battleInfo.Setup(attacker, defender); TacticalMode.instance.Disable(); //TimeManager.SetPauseTime(); SceneUtils.instance.LoadBattleSceneAdditive(); SceneUtils.instance.EnterBattleScene(); Debug.LogError("Changing fog start/end by code!"); RenderSettings.fogStartDistance = 25; RenderSettings.fogEndDistance = 40; battleResult.isStarted = true; isDuringBattle = true; }
public static void QuickBattle(TargetableObject attacker, TargetableObject defender) { Debug.Log("Starting quick battle by " + attacker.name, attacker.gameObject); BattleInfo bInfo = new BattleInfo(); bInfo.Setup(attacker, defender); thisFrameBattles.Add(bInfo); battleInfo.Setup(attacker, defender); battleResult.isStarted = true; ///////////// BATTLE END ///////////// bool attackerWin = false; float attackerStrength = attacker.GetArmy().GetArmyStrength(); float defenderStrength = defender.GetArmy().GetArmyStrength(); float result = (Mathf.Max(attackerStrength, defenderStrength) - Mathf.Min(defenderStrength, attackerStrength)) / Mathf.Max(attackerStrength, defenderStrength); if (defenderStrength <= 0f || attackerStrength <= 0f) { result = 1f; } Debug.Log("Battle result for Astrength " + attackerStrength + " and Dstrength " + defenderStrength + " result: " + result); if (attacker.GetArmy().IsThisArmyStrongerThan(defender.GetArmy())) { attackerWin = true; defender.GetArmy().RemoveAllUnits(); attacker.GetArmy().ChangeUnitsAmountByPercentage(result); } else { attackerWin = false; attacker.GetArmy().RemoveAllUnits(); defender.GetArmy().ChangeUnitsAmountByPercentage(result); } BattleManager.RemoveAllUnitInstancesThatShouldBeDestroyed(); battleResult = new BattleResult(attackerWin, false, true); EndBattleImmediate(); FinishBattle(); }