diff api/Objects/GameSystem.cs @ 0:520818033bb6

Initial commit of WarFoundry code
author IBBoard <dev@ibboard.co.uk>
date Fri, 19 Dec 2008 15:57:51 +0000
parents
children 150a5669cd7b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/Objects/GameSystem.cs	Fri Dec 19 15:57:51 2008 +0000
@@ -0,0 +1,274 @@
+using System;
+using System.Collections.Generic;
+using System.Xml;
+using System.IO;
+using IBBoard.Logging;
+using IBBoard.WarFoundry.API.Factories;
+using ICSharpCode.SharpZipLib.Zip;
+
+namespace IBBoard.WarFoundry.API.Objects
+{
+	/// <summary>
+	/// Summary description for GameSystem.
+	/// </summary>
+	public class GameSystem : WarFoundryObject // WarFoundryStagedLoadSourceObject
+	{
+		private bool warnOnError;
+		private Category[] categories;
+		private SystemStatsSet stats;
+		private string defaultStats;
+		private FileInfo sourceFile;
+
+		public GameSystem(string systemID, string systemName) : base(systemID, systemName)
+		{
+		}
+				
+		/*public void CompleteLoading(Category[] cats, Dictionary<string, SystemStats> sysStats, string defaultStatsID)
+		{
+			categories = cats;
+			stats = new SystemStatsSet(sysStats); 
+			defaultStats = defaultStatsID;
+			base.CompleteLoading();
+		}*/
+		
+		public FileInfo SourceFile
+		{
+			get { return sourceFile; }
+			set { sourceFile = value; }
+		}
+		
+		public int GetCategoryCount()
+		{
+			return categories.Length;
+		}
+
+		public Category GetCategory(int index)
+		{
+			return categories[index];
+		}
+
+		public Category GetCategory(string id)
+		{
+			for (int i = 0; i<categories.Length; i++)
+			{
+				if (categories[i].ID == id)
+				{
+					return categories[i];
+				}
+			}
+
+			return null;
+		}
+
+		public Category[] Categories
+		{
+			get 
+			{ 
+				return SystemCategories; 
+			}
+			set 
+			{
+				SystemCategories = value;
+			}
+		}
+		
+		protected virtual Category[] SystemCategories
+		{
+			get 
+			{
+				return RawSystemCategories;
+			}
+			set
+			{
+				RawSystemCategories = value;
+			}
+		}
+		
+		protected Category[] RawSystemCategories
+		{
+			get 
+			{ 
+				return categories; 
+			}
+			set 
+			{
+				if (value!=null)
+				{
+					categories = value;
+				}
+			}
+		}
+
+		public bool WarnOnError
+		{
+			get
+			{
+				return warnOnError;
+			}
+			set { warnOnError = value; }
+		}
+		
+		public SystemStats StandardSystemStats
+		{
+			get
+			{
+				return SystemStats[defaultStats];
+			}
+		}
+		
+		public string StandardSystemStatsID
+		{
+			get
+			{				
+				return defaultStats;
+			}
+			
+			set
+			{
+				if (value != null && value.Trim().Length > 0)
+				{
+					defaultStats = value;
+				}
+			}
+		}
+
+		public SystemStatsSet SystemStats
+		{
+			get 
+			{ 
+				return stats;
+			}
+			set
+			{
+				stats = value;
+			}
+		}
+		
+		public Race SystemDefaultRace
+		{
+			get { return WarFoundryLoader.GetDefault().GetRace(this, Race.SYSTEM_DEFAULT_RACE_ID); }
+		}
+
+		public bool Matches(GameSystem otherSystem)
+		{
+			if (otherSystem==null)
+			{
+				return false;
+			}
+
+			return this.ID == otherSystem.ID;
+		}
+
+		public override bool Equals(object obj)
+		{
+			if (obj == null)
+			{
+				return false;		
+			}
+			
+			if (obj.GetType().Equals(this.GetType()))
+			{
+				GameSystem otherSystem = (GameSystem)obj;
+
+				return this.ID == otherSystem.ID && this.Name == otherSystem.Name && ((this.RawSystemCategories == null && otherSystem.RawSystemCategories == null) || this.RawSystemCategories.Equals(otherSystem.RawSystemCategories));
+			}
+			else
+			{
+				return false;
+			}
+		}
+
+		public override int GetHashCode()
+		{
+			return ID.GetHashCode() + Name.GetHashCode() + (RawSystemCategories!=null ? RawSystemCategories.GetHashCode() : 0) + warnOnError.GetHashCode();
+		}
+
+		public bool UnitTypeMaxed(UnitType unitType, Army army)
+		{
+			return unitType.MaxNumber!=-1 && army.GetUnitTypeCount(unitType) >= unitType.MaxNumber;
+		}
+
+		public bool UnitTypeMinned(UnitType unitType, Army army)
+		{
+			return army.GetUnitTypeCount(unitType) <= unitType.MinNumber;
+		}
+		
+		public List<EquipmentItem> GetSystemEquipmentList()
+		{
+			List<EquipmentItem> items = new List<EquipmentItem>();
+			Race defaultRace = SystemDefaultRace;
+			
+			if (defaultRace!=null)
+			{				
+				items = defaultRace.GetEquipmentList();
+			}
+			
+			return items;
+		}
+				
+		public EquipmentItem GetSystemEquipmentItem(string id)
+		{
+			EquipmentItem item = null;
+			Race defaultRace = SystemDefaultRace;
+			
+			if (defaultRace!=null)
+			{				
+				item = defaultRace.GetEquipmentItem(id);
+			}
+			
+			return item;
+		}
+		
+		public UnitType[] GetSystemUnitTypes(Category cat)
+		{
+			UnitType[] items = new UnitType[0];
+			Race defaultRace = SystemDefaultRace;
+			
+			if (defaultRace!=null)
+			{				
+				items = defaultRace.GetUnitTypes(cat);
+			}
+			
+			return items;
+		}
+				
+		public UnitType GetSystemUnitType(string id)
+		{
+			UnitType unit = null;
+			Race defaultRace = SystemDefaultRace;
+			
+			if (defaultRace!=null)
+			{				
+				unit = defaultRace.GetUnitType(id);
+			}
+			
+			return unit;
+		}
+		
+		public List<Ability> GetSystemAbilityList()
+		{
+			List<Ability> items = new List<Ability>();
+			Race defaultRace = SystemDefaultRace;
+			
+			if (defaultRace!=null)
+			{				
+				items = defaultRace.GetAbilityList();
+			}
+			
+			return items;
+		}
+				
+		public Ability GetSystemAbility(string id)
+		{
+			Ability ability = null;
+			Race defaultRace = SystemDefaultRace;
+			
+			if (defaultRace!=null)
+			{				
+				ability = defaultRace.GetAbility(id);
+			}
+			
+			return ability;
+		}
+	}
+}