public BattalionState GetWithNewPosition(int newXPos, int newYPos) { BattalionPosition newPos = new BattalionPosition(newXPos, newYPos); return(new BattalionState(Id, newPos, attributes, EffectSources)); }
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); }
public BattalionState(BattalionIdentifier id, BattalionPosition position, IEnumerable <BattalionStateModifier> modifiers, IEnumerable <BattalionEffector> effectSources) : this(id, position, GetModifiedAttributes(new Dictionary <BattalionAttribute, int>(), modifiers).AsReadonly(), effectSources) { }
private BattalionState(BattalionIdentifier id, BattalionPosition position, IReadOnlyDictionary <BattalionAttribute, int> attributes, IEnumerable <BattalionEffector> effectSources) { Id = id; Position = position; this.attributes = attributes; EffectSources = effectSources; }
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)); }
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()); } }
private bool IsWithinAttackingRange(BattalionPosition position) { return(position.X < range); }