Ejemplo n.º 1
0
        public void ApplyAverageAttack_10To40_AreEqual()
        {
            int sourceLeave;
            int targetNew;

            var act = Combat.ApplyAverageAttack(10, 40, out sourceLeave, out targetNew);

            Assert.AreEqual(false, act);
            Assert.AreEqual(10, sourceLeave);
            Assert.AreEqual(34, targetNew);
        }
Ejemplo n.º 2
0
        public void ApplyAverageAttack_05To01_AreEqual()
        {
            int sourceLeave;
            int targetNew;

            var act = Combat.ApplyAverageAttack(5, 1, out sourceLeave, out targetNew);

            Assert.AreEqual(true, act);
            Assert.AreEqual(5, sourceLeave);
            Assert.AreEqual(4, targetNew);
        }
Ejemplo n.º 3
0
        public void ApplyAverageAttack_22To10_AreEqual()
        {
            int sourceLeave;
            int targetNew;

            var act = Combat.ApplyAverageAttack(21, 10, out sourceLeave, out targetNew);

            Assert.AreEqual(true, act);
            Assert.AreEqual(21, sourceLeave);
            Assert.AreEqual(14, targetNew);
        }
Ejemplo n.º 4
0
        /// <summary>Attacks or transfer to a region.</summary>
        private void AttackOrTransfer(int sourceId, int targetId, ushort owner, int armies, Map map)
        {
            unchecked
            {
                var sOldRegion = this[sourceId];
                var tOldRegion = this[targetId];

                var sOldArmies = (ushort)Armies(sourceId);
                var tOldArmies = (ushort)Armies(targetId);

                ushort sNewArmies;
                ushort tNewArmies;

                var tOldOwner = (ushort)Owner(targetId);
                var tNewOwner = tOldOwner;

                // attack
                if (owner != tOldOwner)
                {
                    int attackersLeave;
                    int targetNew;
                    var success = Combat.ApplyAverageAttack(armies, tOldArmies, out attackersLeave, out targetNew);
                    sNewArmies = (ushort)Math.Max(Settings.MinimumArmies, sOldArmies - attackersLeave);
                    tNewArmies = (ushort)targetNew;
                    if (success)
                    {
                        tNewOwner = owner;
                    }
                }
                else
                {
                    sNewArmies = (ushort)Math.Max(Settings.MinimumArmies, sOldArmies - armies);
                    tNewArmies = (ushort)(tOldArmies + armies);
                }

                // set and create.
                var sNewRegion = RegionState.Create(sNewArmies, owner);
                var tNewRegion = RegionState.Create(tNewArmies, tNewOwner);

                this[sourceId] = sNewRegion;
                this[targetId] = tNewRegion;

                // update the hash.
                XOrHash(sOldRegion, sNewRegion, sourceId);
                XOrHash(tOldRegion, tNewRegion, targetId);
            }
        }