Exemple #1
0
        internal BattleStageSide ToBattleSide()
        {
            List <BattalionState> newStates = new List <BattalionState>();

            for (int x = 0; x < columns; x++)
            {
                for (int y = 0; y < rows; y++)
                {
                    BattalionState oldState = grid[x, y];
                    if (oldState != null)
                    {
                        BattalionState newState = GetRepositionedState(oldState, x, y);
                        newStates.Add(newState);
                    }
                }
            }
            return(new BattleStageSide(newStates));
        }
    public override BattalionBattleEffects GetEffect(BattalionState self, BattleStageSide allies, BattleStageSide enemies)
    {
        BattalionEffectsBuilder builder = new BattalionEffectsBuilder(this);

        int reloadingState = self.GetAttribute(BattalionAttribute.ReloadingState);

        if (reloadingState > 0)
        {
            builder.Add(self.Id, BattalionAttribute.ReloadingState, -1);
        }
        else
        {
            if (IsWithinAttackingRange(self.Position))
            {
                DoAttack(builder, self, enemies);
            }
        }
        return(builder.ToEffects());
    }
Exemple #3
0
 private void BringAdvancersForward()
 {
     for (int x = 1; x < columns; x++)
     {
         for (int y = 0; y < rows; y++)
         {
             BattalionState state = grid[x, y];
             if (state != null && GetIsAdvancer(state))
             {
                 BattalionState targetPos = grid[x - 1, y];
                 if (targetPos == null)
                 {
                     grid[x, y]           = null;
                     grid[x - 1, y]       = state;
                     RepositioningHappend = true;
                 }
             }
         }
     }
 }
    private void DoAttack(BattalionEffectsBuilder builder, BattalionState self, BattleStageSide enemies)
    {
        BattalionState     target          = enemies.GetTargetFor(self.Position);
        BattalionAttribute damageAttribute = GetDamageAttributeFor(damageType);

        builder.Add(target.Id, damageAttribute, weaponStrength);

        if (splashDamage > 0)
        {
            IEnumerable <BattalionState> splashTargets = GetSplashTargets(target, enemies).ToArray();
            foreach (BattalionState splashTarget in splashTargets)
            {
                builder.Add(splashTarget.Id, damageAttribute, splashDamage);
            }
        }

        int reloadingSpeed = self.GetAttribute(BattalionAttribute.ReloadingSpeed);

        builder.Add(self.Id, BattalionAttribute.ReloadingState, reloadingSpeed);
    }
Exemple #5
0
    public override BattalionBattleEffects GetEffect(BattalionState self, BattleStageSide allies, BattleStageSide enemies)
    {
        BattalionEffectsBuilder builder = new BattalionEffectsBuilder(this);

        if (self.Position.X == 0)
        {
            BattalionState target = enemies.GetTargetFor(self.Position);
            if (attackType == MeleeAttackType.Regular || attackType == MeleeAttackType.Charging)
            {
                DoMeleeAttack(builder, self, target);
            }
            if (attackType == MeleeAttackType.Charging)
            {
                IEnumerable <BattalionState> chargeTargets = GetChargeTargets(enemies, target);
                foreach (BattalionState chargeTarget in chargeTargets)
                {
                    DoMeleeAttack(builder, self, chargeTarget);
                }
            }
        }
        return(builder.ToEffects());
    }
 public abstract BattalionBattleEffects GetEffect(BattalionState self, BattleStageSide allies, BattleStageSide enemies);
Exemple #7
0
 public BattalionStateVisuals(BattalionState state, BattleRound round)
 {
     State = state;
     Side  = round.InitialState.LeftSide.Any(unit => unit.Id == state.Id) ? BattleSide.Left : BattleSide.Right;
 }
 internal void InsertState(BattalionState state, BattleRound battleRound, int index)
 {
     states[index] = new BattalionStateVisuals(state, battleRound);
 }
Exemple #9
0
        private bool GetIsAdvancer(BattalionState state)
        {
            int advancing = state.GetAttribute(BattalionAttribute.Advancing);

            return(advancing > 0);
        }
Exemple #10
0
 private static bool IsAntiCharge(BattalionState state)
 {
     return(state.GetAttribute(BattalionAttribute.AntiCharge) > 0);
 }
Exemple #11
0
 public EffectsBuilder(BattalionState initialState)
 {
     this.initialState = initialState;
 }