コード例 #1
0
    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;
    }
コード例 #2
0
    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();
    }