/// <summary> /// Add a Character both locally and to XML /// </summary> /// <param name="id"></param> /// <param name="name"></param> public void addNpc(int id, string name) { Character c = new Character(name); if (npcSecurityCheck(c)) { try { npcs.Add(id, c); } catch (ArgumentException e) { Random r = new Random(); while (npcs.ContainsKey(id)) { id = r.Next(); } npcs.Add(id, c); } addNpcToXML(id, c); GUI.Instance.appendToOutput("NPC` added with id:" + id); } else { GUI.Instance.appendToOutput("Could not add Npc"); } }
/// <summary> /// Loads npc list from XML /// </summary> private void loadNpcs() { xElem = PersistenceManager.initXML(Properties.Settings.Default.npcFile, "npcs"); npcs = new Dictionary<int, Character>(); foreach (var npc in xElem.Elements()) { Character c; if (npc.Element("isEnemy") == null || (npc.Element("isEnemy")!=null && Int32.Parse(npc.Element("isEnemy").Value) == 0)) { c = new Character(); } else { c = new Enemy(); ((Enemy)c).maxHealth = float.Parse(npc.Element("maxHealth").Value); ((Enemy)c).dmg = float.Parse(npc.Element("dmg").Value); } c.name = npc.Element("name").Value; npcs.Add(Int32.Parse(npc.Element("id").Value), c); } }
/// <summary> /// Security check for a character /// </summary> /// <param name="character"></param> private bool npcSecurityCheck(Character character) { //TO-DO: add security checks for npc properties return true; }
/// <summary> /// Add a Character to XML /// </summary> /// <param name="c"></param> private void addNpcToXML(int id, Character c) { xElem.Add(new XElement("npc", new XElement("id", id), new XElement("name", c.name))); xElem.Save(Properties.Settings.Default.npcFile); }