Mercurial > repos > IBDev-IBBoard.WarFoundry.API
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; + } + } +}