Ejemplo n.º 1
0
    public BattalionState GetWithNewPosition(int newXPos, int newYPos)
    {
        BattalionPosition newPos = new BattalionPosition(newXPos, newYPos);

        return(new BattalionState(Id,
                                  newPos,
                                  attributes,
                                  EffectSources));
    }
Ejemplo n.º 2
0
    public void AddRight(BattalionTemplate template, int column)
    {
        int row = GetNextRow(rightUnits, column);
        BattalionPosition pos   = new BattalionPosition(column, row + 1);
        BattalionState    state = new BattalionState(template.Id, pos, template.Modifiers, template.EffectSources);

        rightUnits[column, row] = state;
        rightUnitsList.Add(state);
    }
Ejemplo n.º 3
0
 public BattalionState(BattalionIdentifier id,
                       BattalionPosition position,
                       IEnumerable <BattalionStateModifier> modifiers,
                       IEnumerable <BattalionEffector> effectSources)
     : this(id,
            position,
            GetModifiedAttributes(new Dictionary <BattalionAttribute, int>(), modifiers).AsReadonly(),
            effectSources)
 {
 }
Ejemplo n.º 4
0
 private BattalionState(BattalionIdentifier id,
                        BattalionPosition position,
                        IReadOnlyDictionary <BattalionAttribute, int> attributes,
                        IEnumerable <BattalionEffector> effectSources)
 {
     Id              = id;
     Position        = position;
     this.attributes = attributes;
     EffectSources   = effectSources;
 }
Ejemplo n.º 5
0
 public bool Equals(BattalionPosition p)
 {
     if (Object.ReferenceEquals(p, null))
     {
         return(false);
     }
     if (Object.ReferenceEquals(this, p))
     {
         return(true);
     }
     if (this.GetType() != p.GetType())
     {
         return(false);
     }
     return((X == p.X) && (Y == p.Y));
 }
Ejemplo n.º 6
0
    internal BattalionState GetTargetFor(BattalionPosition AttackerPosition)
    {
        IEnumerable <BattalionState> frontLine = units.Where(unit => unit.Position.IsFrontLine);
        BattalionState matchingRow             = frontLine.FirstOrDefault(unit => unit.Position.Y == AttackerPosition.Y);

        if (matchingRow != null)
        {
            return(matchingRow);
        }
        IOrderedEnumerable <BattalionState> orderedFrontline = frontLine.OrderBy(unit => unit.Position.Y);

        if (AttackerPosition.Y > 0)
        {
            return(orderedFrontline.First());
        }
        else
        {
            return(orderedFrontline.Last());
        }
    }
Ejemplo n.º 7
0
 private bool IsWithinAttackingRange(BattalionPosition position)
 {
     return(position.X < range);
 }