changeset 38:548cfc776f54

Fixes #34 - Remove "Choices" and "Base/Increment" from Category * Remove Choices and Base/Increment from code Re #47: Remove magic numbers * Replace "-1" magic number with WarFoundryCore.INFINITY * Use INFINITY instead of -1 in code * Use INF in schemas instead of -1 * Handle and parse INF as a special value in XML Factory
author IBBoard <dev@ibboard.co.uk>
date Thu, 19 Mar 2009 20:11:07 +0000
parents 465a215a21a2
children 05c6745cc660
files api/Objects/Category.cs api/Objects/EquipmentItem.cs api/Objects/GameSystem.cs api/Objects/Unit.cs api/Objects/UnitEquipmentItemObj.cs api/Objects/UnitType.cs api/WarFoundryCore.cs dtds/race.xsd dtds/warfoundry-cats.xsd dtds/warfoundry-core.xsd
diffstat 10 files changed, 31 insertions(+), 120 deletions(-) [+]
line wrap: on
line diff
--- a/api/Objects/Category.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/Objects/Category.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -14,14 +14,9 @@
 	public class Category : WarFoundryObject
 	{
 		private int minPts = 0;
-		private int maxPts = -1;
+		private int maxPts = WarFoundryCore.INFINITY;
 		private int minPc = 0;
 		private int maxPc = 100;
-		private int minChoice = 0;
-		private int maxChoice = -1;
-		private int baseVal = 0;
-		private int incVal = 0;
-		private int incAmount = 0;
 
 		
 		public Category(string id, string name) : base(id, name)
@@ -35,9 +30,6 @@
 			MaximumPoints = maxPoints;
 			MinimumPercentage = minPercent;
 			MaximumPercentage = maxPercent;
-			BaseValue = baseValue;
-			IncrementValue = incrementValue;
-			IncrementAmount = incrementAmount;
 		}
 
 		protected override string DefaultName()
@@ -60,14 +52,14 @@
 			get { return maxPts; }
 			set
 			{
-				maxPts = (value >= -1 ? value : -1);
+				maxPts = (value >= 0 ? value : WarFoundryCore.INFINITY);
 				CheckMinimumPoints();
 			}
 		}
 
 		private void CheckMinimumPoints()
 		{
-			if (MinimumPoints > MaximumPoints && MaximumPoints!=-1)
+			if (MinimumPoints > MaximumPoints && MaximumPoints!=WarFoundryCore.INFINITY)
 			{
 				MinimumPoints = MaximumPoints;
 				LogNotifier.WarnFormat(GetType(), "Category {0} ({1}) had a minimum points limit greater than its maximum points limit.", Name, ID);
@@ -114,52 +106,5 @@
 				LogNotifier.WarnFormat(GetType(), "Category {0} ({1}) had a minimum percentage limit greater than its maximum percentage limit.", Name, ID);
 			}
 		}
-
-		public int MinimumChoices
-		{
-			get { return minChoice; }
-			set
-			{
-				minChoice = (value >= 0 ? value : 0);
-				CheckMinimumChoices();
-			}
-		}
-
-		public int MaximumChoices
-		{
-			get { return maxChoice; }
-			set
-			{
-				maxChoice = (value >= -1 ? value : -1);
-				CheckMinimumChoices();
-			}
-		}
-
-		private void CheckMinimumChoices()
-		{
-			if (MinimumPercentage > MaximumPercentage && MaximumPercentage!=-1)
-			{
-				MinimumPercentage = MaximumPercentage;
-				LogNotifier.WarnFormat(GetType(), "Category {0} ({1}) had a minimum number of choices greater than its maximum number of choices.", Name, ID);
-			}
-		}
-
-		public int BaseValue
-		{
-			get { return baseVal; }
-			set { baseVal = (value >= 0 ? value : 0); }
-		}
-
-		public int IncrementValue
-		{
-			get { return incVal; }
-			set { incVal = (value >= 0 ? value : 0); }
-		}
-
-		public int IncrementAmount
-		{
-			get { return incAmount; }
-			set { incAmount = (value >= 0 ? value : 0); }
-		}
 	}
 }
--- a/api/Objects/EquipmentItem.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/Objects/EquipmentItem.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -35,9 +35,9 @@
 			get { return min; }
 			set 
 			{
-				min = (value >= 0 || value == -1) ? value : 0; 
+				min = (value >= 0 || value == WarFoundryCore.INFINITY) ? value : 0; 
 
-				if (MaxNumber != -1 && min > MaxNumber)
+				if (MaxNumber != WarFoundryCore.INFINITY && min > MaxNumber)
 				{
 					MaxNumber = min;
 				}
@@ -49,9 +49,9 @@
 			get { return max; }
 			set 
 			{
-				max = (value > 0 || value == -1) ? value : -1; 
+				max = (value > 0 || value == WarFoundryCore.INFINITY) ? value : WarFoundryCore.INFINITY; 
 
-				if (max != -1 && MinNumber > max)
+				if (max != WarFoundryCore.INFINITY && MinNumber > max)
 				{
 					MinNumber = max;
 				}
--- a/api/Objects/GameSystem.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/Objects/GameSystem.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -160,7 +160,7 @@
 
 		public bool UnitTypeMaxed(UnitType unitType, Army army)
 		{
-			return unitType.MaxNumber!=-1 && army.GetUnitTypeCount(unitType) >= unitType.MaxNumber;
+			return unitType.MaxNumber!=WarFoundryCore.INFINITY && army.GetUnitTypeCount(unitType) >= unitType.MaxNumber;
 		}
 
 		public bool UnitTypeMinned(UnitType unitType, Army army)
--- a/api/Objects/Unit.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/Objects/Unit.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -99,7 +99,7 @@
 				}
 				else
 				{
-					if (count == -1)
+					if (count == WarFoundryCore.INFINITY)
 					{
 						points+= size * equipItem.Cost;
 					}
@@ -288,7 +288,7 @@
 			}
 			else
 			{
-				if (amount >=1 || amount == -1)
+				if (amount >=1 || amount == WarFoundryCore.INFINITY)
 				{
 					amount = (float)Math.Round(amount);
 				}
@@ -307,7 +307,7 @@
 
 			if (amount!=oldAmount)
 			{
-				if (amount > 0 || amount == -1)
+				if (amount > 0 || amount == WarFoundryCore.INFINITY)
 				{
 					equipment[equipID] = amount;
 				}
@@ -369,41 +369,5 @@
 		{
 			get { return UnitType.UnitStats; }
 		}
-
-		/*public override string ToXmlString()
-		{
-			StringBuilder sb = new StringBuilder();
-			float amount;
-
-			foreach(string key in equipment.Keys)
-			{
-				amount = (float)equipment[key];
-
-				if (amount > 0 || amount == -1)
-				{
-					sb.Append("<equipItem id=\""+key+"\" amount=\""+amount+"\" />");
-				}
-			}
-
-			string equipmentString;
-
-			if (sb.Length > 0)
-			{
-				equipmentString = "<equipment>"+sb.ToString()+"</equipment>";
-			}
-			else
-			{
-				equipmentString = "";
-			}
-
-			if (equipmentString == "")
-			{
-				return "<unit id=\""+ID+"\" unitType=\""+UnitType.ID+"\" unitName=\""+name+"\" size=\""+Size+"\" />";
-			}
-			else
-			{
-				return "<unit id=\""+ID+"\" unitType=\""+UnitType.ID+"\" unitName=\""+name+"\" size=\""+Size+"\">"+equipmentString+"</unit>";
-			}
-		}*/
 	}
 }
--- a/api/Objects/UnitEquipmentItemObj.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/Objects/UnitEquipmentItemObj.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -58,7 +58,7 @@
 			}
 			else
 			{
-				if (amount == -1)
+				if (amount == WarFoundryCore.INFINITY)
 				{
 					return "all";
 				}
--- a/api/Objects/UnitType.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/Objects/UnitType.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -85,7 +85,7 @@
 			get { return maxSize; }
 			set
 			{
-				maxSize = (value >= -1 ? value : -1);
+				maxSize = (value >= 0 ? value : WarFoundryCore.INFINITY);
 				CheckMinimumSize();
 			}
 		}
@@ -110,14 +110,14 @@
 			get { return max; }
 			set
 			{
-				max = (value >= -1 ? value : -1);
+				max = (value >= 0 ? value : WarFoundryCore.INFINITY);
 				CheckMinimumNumber();
 			}
 		}
 
 		private void CheckMinimumNumber()
 		{
-			if (MinNumber > MaxNumber && MaxNumber!=-1)
+			if (MinNumber > MaxNumber && MaxNumber!=WarFoundryCore.INFINITY)
 			{
 				MinNumber = MaxNumber;
 				LogNotifier.WarnFormat(GetType(), "Unit type {0} ({1}) had a minimum number greater than their maximum number.", Name, ID);
@@ -126,7 +126,7 @@
 
 		private void CheckMinimumSize()
 		{
-			if (MinSize > MaxSize && MaxSize!=-1)
+			if (MinSize > MaxSize && MaxSize!=WarFoundryCore.INFINITY)
 			{
 				MinSize = MaxSize;
 				LogNotifier.WarnFormat(GetType(), "Unit type {0} ({1}) had a minimum size greater than their maximum size.", Name, ID);
--- a/api/WarFoundryCore.cs	Mon Mar 16 20:53:22 2009 +0000
+++ b/api/WarFoundryCore.cs	Thu Mar 19 20:11:07 2009 +0000
@@ -10,6 +10,7 @@
 {
 	public class WarFoundryCore
 	{		
+		public static readonly int INFINITY = -1;
 		public static event GameSystemChangedDelegate GameSystemChanged;
 		public static event ArmyChangedDelegate ArmyChanged;
 		
--- a/dtds/race.xsd	Mon Mar 16 20:53:22 2009 +0000
+++ b/dtds/race.xsd	Thu Mar 19 20:11:07 2009 +0000
@@ -33,12 +33,12 @@
   <xs:attribute name="id" type="xs:ID" />
   <xs:attribute name="typeName" type="xs:string" use="required"/>
   <xs:attribute name="cat" type="xs:string" use="required"/>
-  <xs:attribute name="unitPoints" type="core:nonNegativeDecimal" default="0"/>
-  <xs:attribute name="points" type="core:nonNegativeDecimal" use="required"/>
+  <xs:attribute name="unitPoints" type="core:nonNegativeDouble" default="0"/>
+  <xs:attribute name="points" type="core:nonNegativeDouble" use="required"/>
   <xs:attribute name="minNum" type="xs:nonNegativeInteger" default="0"/>
-  <xs:attribute name="maxNum" type="xs:integer" default="-1"/>
+  <xs:attribute name="maxNum" type="xs:positiveInteger" default="INF"/>
   <xs:attribute name="minSize" type="xs:positiveInteger" default="5"/>
-  <xs:attribute name="maxSize" type="xs:integer" default="-1"/>
+  <xs:attribute name="maxSize" type="xs:positiveInteger" default="INF"/>
   <xs:attribute name="baseSize" type="xs:nonNegativeInteger" default="0"/>
 </xs:complexType>
 <xs:complexType name="statstype">
@@ -62,8 +62,8 @@
   <xs:attribute name="id" type="xs:IDREF" />
   <xs:attribute name="required" type="xs:boolean" default="false"/>
   <xs:attribute name="exclusivityGroup" type="xs:string" default=""/>
-  <xs:attribute name="minNum" type="xs:integer" default="-1"/>
-  <xs:attribute name="maxNum" type="xs:integer" default="-1"/>
+  <xs:attribute name="minNum" type="xs:positiveInteger" default="INF"/>
+  <xs:attribute name="maxNum" type="xs:positiveInteger" default="INF"/>
   <xs:attribute name="minPercentage" type="core:percentage" default="100"/>
   <xs:attribute name="maxPercentage" type="core:percentage" default="100"/>
   <xs:attribute name="roundDirection" type="updowntype" default="up"/>
@@ -126,7 +126,7 @@
   </xs:all>
   <xs:attribute name="id" type="xs:ID" use="required"/>
   <xs:attribute name="name" type="xs:string" use="required"/>
-  <xs:attribute name="cost" type="core:nonNegativeDecimal" use="required"/>
+  <xs:attribute name="cost" type="core:nonNegativeDouble" use="required"/>
   <xs:attribute name="armoutType" type="armourtype" default="none"/>
 </xs:complexType>
 <xs:simpleType name="armourtype">
--- a/dtds/warfoundry-cats.xsd	Mon Mar 16 20:53:22 2009 +0000
+++ b/dtds/warfoundry-cats.xsd	Thu Mar 19 20:11:07 2009 +0000
@@ -7,8 +7,8 @@
       <xs:complexType>
         <xs:attribute name="id" type="xs:ID" />
         <xs:attribute name="name" type="xs:string" use="required"/>
-        <xs:attribute name="minPoints" type="core:nonNegativeDecimal" default="0"/>
-        <xs:attribute name="maxPoints" type="core:infiniteOrNonNegativeDecimal" default="-1"/>
+        <xs:attribute name="minPoints" type="core:nonNegativeDouble" default="0"/>
+        <xs:attribute name="maxPoints" type="core:infiniteOrNonNegativeDouble" default="INF"/>
         <xs:attribute name="minPercentage" type="core:percentage" default="0"/>
         <xs:attribute name="maxPercentage" type="core:percentage" default="100"/>
       </xs:complexType>
--- a/dtds/warfoundry-core.xsd	Mon Mar 16 20:53:22 2009 +0000
+++ b/dtds/warfoundry-core.xsd	Thu Mar 19 20:11:07 2009 +0000
@@ -1,19 +1,20 @@
 <?xml version="1.0"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ibboard.co.uk/warfoundry/core"
 xmlns="http://ibboard.co.uk/warfoundry/core" elementFormDefault="qualified">
-<xs:simpleType name="infiniteOrNonNegativeDecimal">
+<xs:simpleType name="infiniteOrNonNegativeDouble">
   <xs:restriction base="xs:double">
-    <xs:minInclusive value="-1"/>
+    <xs:minInclusive value="0"/>
   </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="infiniteOrNonNegativeInteger">
   <xs:restriction base="xs:integer">
-    <xs:minInclusive value="-1"/>
+    <xs:minInclusive value="0"/>
   </xs:restriction>
 </xs:simpleType>
-<xs:simpleType name="nonNegativeDecimal">
+<xs:simpleType name="nonNegativeDouble">
   <xs:restriction base="xs:double">
     <xs:minInclusive value="0"/>
+    <xs:maxExclusive value="INF"/>
   </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="percentage">