Mercurial > repos > IBBoard.WarFoundry.API
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) |