Esempio n. 1
0
        ConquestResult TryDefeat(
            Location location, MoveResult moveResult, Country invader, ref IReadOnlySquad invaderSquad, Country defender, ref IReadOnlySquad defenderSquad
            )
        {
            var invaderCount  = invaderSquad.Count;
            var defenderCount = defenderSquad.Count;
            var invaderPower  = GetPower(invader, invaderCount);
            var defenderPower = GetPower(defender, defenderCount);

            defenderSquad = _army.KillInSquad(defender, defenderSquad, invaderPower);
            invaderSquad  = _army.KillInSquad(invader, invaderSquad, defenderPower);

            var invaderLoses  = invaderCount - (invaderSquad != null ? invaderSquad.Count : 0);
            var defenderLoses = defenderCount - (defenderSquad != null ? defenderSquad.Count : 0);

            return(new ConquestResult(
                       location,
                       invader, defender,
                       new SquadInfo(invaderCount, invaderLoses),
                       new SquadInfo(defenderCount, defenderLoses),
                       defenderSquad == null, moveResult));
        }
Esempio n. 2
0
        int ProcessSquadLoses(Country country, double difficulty, ref IReadOnlySquad squad)
        {
            var loses = 0;

            for (var i = 0; i < squad.Count; i++)
            {
                if (RandUtils.Rand.NextDouble() < difficulty)
                {
                    loses++;
                }
            }
            if (loses > 0)
            {
                _army.KillInSquad(country, squad, loses);
            }
            return(loses);
        }