Mercurial > repos > IBDev-IBBoard.WarFoundry.API
view API/Objects/Requirement/UnitCountRequirementData.cs @ 465:7b9ff7b1df24
Re #394: Make requirements (or factory) more closely match Rollcall methods
* Make UnitRequiresAtLeastNUnitsRequirementFactory handle "alternatives" (Rollcall's "-1,X|Y" notation)
* Make RequiresAtLeastNUnitsRequirement handle alternatives/multiple unit types in one limit
* Move some useful code up the classes
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 24 Mar 2012 20:33:11 +0000 |
parents | 206a45fdfa9e |
children |
line wrap: on
line source
// This file (UnitCountRequirementData.cs) is a part of the IBBoard.WarFoundry.API.Tests project and is copyright 2011 IBBoard // // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. using System; using IBBoard.WarFoundry.API.Objects; namespace IBBoard.WarFoundry.API.Objects.Requirement { public class UnitCountRequirementData { private UnitType[] unitTypes; private int count; private int allows; public UnitCountRequirementData(UnitType unitType, int count) : this(unitType, count, WarFoundryCore.INFINITY) { //Do nothing special } public UnitCountRequirementData(UnitType unitType, int count, int allows) : this(new UnitType[]{unitType}, count, allows) { //Do nothing special } public UnitCountRequirementData(UnitType[] unitTypes, int count) : this(unitTypes, count, WarFoundryCore.INFINITY) { //Do nothing special } public UnitCountRequirementData(UnitType[] unitTypes, int count, int allows) { this.unitTypes = unitTypes ?? new UnitType[0]; this.count = count; this.allows = allows; } public UnitType UnitType { get { return unitTypes.Length > 0 ? unitTypes[0] : null; } } public UnitType[] UnitTypes { get { return unitTypes; } } public int Count { get { return count; } } public int AllowsCount { get { return allows; } } public override bool Equals (object obj) { if (obj == null) { return false; } else if (!(obj is UnitCountRequirementData)) { return false; } else { UnitCountRequirementData other = (UnitCountRequirementData)obj; return UnitType.Equals(other.UnitType) && Count == other.Count && AllowsCount == other.AllowsCount; } } public override int GetHashCode() { return UnitType.GetHashCode() + Count + AllowsCount; } } }