comparison api/Factories/Xml/WarFoundryXmlRaceFactory.cs @ 231:d1c90159547a

Fixes #236: Race loading should fail cleanly if system doesn't exist * Exception if we get a null game system Also: * Remove unused variable
author IBBoard <dev@ibboard.co.uk>
date Thu, 24 Dec 2009 14:54:43 +0000
parents f097888efcfe
children f5009a00a50d
comparison
equal deleted inserted replaced
230:73da8d13ce69 231:d1c90159547a
33 } 33 }
34 34
35 private XmlDocument GetExtraData(Race obj) 35 private XmlDocument GetExtraData(Race obj)
36 { 36 {
37 XmlDocument extra = null; 37 XmlDocument extra = null;
38 extraData.TryGetValue(obj, out extra); 38 extraData.TryGetValue(obj, out extra);
39 return extra; 39 return extra;
40 } 40 }
41 41
42 public Race CreateRaceFromElement(ZipFile file, XmlElement elem) 42 public Race CreateRaceFromElement(ZipFile file, XmlElement elem)
43 { 43 {
44 string id = elem.GetAttribute("id"); 44 string id = elem.GetAttribute("id");
45 string subid = elem.GetAttribute("subid"); 45 string subid = elem.GetAttribute("subid");
46 string systemID = elem.GetAttribute("system"); 46 string systemID = elem.GetAttribute("system");
47 string name = elem.GetAttribute("name"); 47 string name = elem.GetAttribute("name");
48 Race race = new Race(id, subid, name, WarFoundryLoader.GetDefault().GetGameSystem(systemID), mainFactory); 48 GameSystem gameSystem = WarFoundryLoader.GetDefault ().GetGameSystem (systemID);
49
50 if (gameSystem == null)
51 {
52 throw new InvalidFileException("Referenced game system, "+systemID+" did not exist");
53 }
54
55 Race race = new Race(id, subid, name, gameSystem, mainFactory);
49 StoreExtraData(race, elem); 56 StoreExtraData(race, elem);
50 return race; 57 return race;
51 } 58 }
52 59
53 public void CompleteLoading(Race race) 60 public void CompleteLoading(Race race)