private bool LoadObjects(XmlDocument file, string filename) { XmlNodeList list = file.GetElementsByTagName ("ObjectData"); foreach (XmlNode node in list) { ObjectData obj = new ObjectData (); int virtualNumber = -1; try { virtualNumber = Int32.Parse (node.Attributes["Number"].Value); obj.Number = _topOfObjectTable; foreach (XmlNode child in node.ChildNodes) { switch (child.Name) { case "Name": obj.Name = child.InnerText; break; case "ShortDescription": obj.ShortDescription = child.InnerText; break; case "Description": obj.Description = child.InnerText; break; case "ActionDescription": obj.ActionDescription = child.InnerText; break; case "ObjectType": obj.Type = (ObjectTypes)int.Parse (child.InnerText); break; case "ObjectFlags": obj.Flags.ObjectFlags = long.Parse (child.InnerText); break; case "WearFlags": obj.Flags.WearFlags = long.Parse (child.InnerText); break; case "Bitvector": obj.Flags.Bitvector = long.Parse (child.InnerText); break; case "Values": obj.Flags.Values[0] = Int32.Parse (child.Attributes["One"].Value); obj.Flags.Values[1] = Int32.Parse (child.Attributes["Two"].Value); obj.Flags.Values[2] = Int32.Parse (child.Attributes["Three"].Value); obj.Flags.Values[3] = Int32.Parse (child.Attributes["Four"].Value); break; case "Weight": obj.Flags.Weight = Int32.Parse (child.InnerText); break; case "Cost": obj.Flags.Cost = Int32.Parse (child.InnerText); break; case "CostPerDay": obj.Flags.CostPerDay = Int32.Parse (child.InnerText); break; case "MinimumLevel": obj.Flags.MinimumLevel = Int32.Parse (child.InnerText); break; case "Affect": ObjectAffectData affect = new ObjectAffectData (); affect.Location = (ApplyTypes)Int32.Parse (child["Location"].InnerText); affect.Modifier = Int32.Parse (child["Modifier"].InnerText); obj.Affects.Add (affect); break; case "ExtraDescription": ExtraDescriptionData description = new ExtraDescriptionData (); description.Keyword = child["Keyword"].InnerText; description.Description = child["Description"].InnerText; obj.ExtraDescriptions.Add (description); break; case "Trigger": // TODO: Add trigger stuff here. break; } } } catch { Log ("SYSERR: Error pasing XML for object [" + virtualNumber + "] in file: " + filename); return false; } IndexData index = new IndexData (); index.VirtualNumber = virtualNumber; index.Count = 0; _objectIndex.Add (_topOfObjectTable, index); _objects.Add (_topOfObjectTable++, obj); } return true; }
private bool LoadTriggers(XmlDocument file, string filename) { XmlNodeList list = file.GetElementsByTagName ("TriggerData"); foreach (XmlNode node in list) { TriggerData trigger = new TriggerData (); int virtualNumber = -1; try { virtualNumber = Int32.Parse (node.Attributes["Number"].Value); trigger.Number = _topOfMobileTable; foreach (XmlNode child in node.ChildNodes) { switch (child.Name) { case "Name": trigger.Name = child.InnerText; break; case "AttachType": trigger.AttachType = byte.Parse (child.InnerText); break; case "TriggerType": trigger.Type = long.Parse (child.InnerText); break; case "NumericalArgument": trigger.NumericalArgument = Int32.Parse (child.InnerText); break; case "ArgumentList": trigger.ArgumentList = child.InnerText; break; case "Command": CommandListElement command = new CommandListElement (); command.Command = child.InnerText; trigger.Commands.Add (command); break; } } } catch { Log ("SYSERR: Error pasing XML for trigger [" + virtualNumber + "] in file: " + filename); return false; } IndexData index = new IndexData (); index.VirtualNumber = virtualNumber; index.Count = 0; index.Trigger = trigger; _triggerIndex.Add (_topOfMobileTable, index); } return true; }
private bool LoadMobiles(XmlDocument file, string filename) { XmlNodeList list = file.GetElementsByTagName ("MobileData"); foreach (XmlNode node in list) { CharacterData mobile = new CharacterData (); int virtualNumber = -1; try { virtualNumber = Int32.Parse (node.Attributes["Number"].Value); mobile.Number = _topOfMobileTable; foreach (XmlNode child in node.ChildNodes) { switch (child.Name) { case "Name": mobile.Player.Name = child.InnerText; break; case "ShortDescription": mobile.Player.ShortDescription = child.InnerText; break; case "LongDescription": mobile.Player.LongDescription = child.InnerText; break; case "Description": mobile.Player.Description = child.InnerText; break; case "MobileFlags": mobile.CharacterSpecials.Saved.Flags = long.Parse (child.InnerText); break; case "Alignment": mobile.CharacterSpecials.Saved.Alignment = int.Parse (child.InnerText); break; case "Level": mobile.Player.Level = int.Parse (child.InnerText); break; case "HitRoll": mobile.Points.HitRoll = int.Parse (child.InnerText); break; case "ArmorClass": mobile.Points.ArmorClass = int.Parse (child.InnerText); break; case "Hit": mobile.Points.Hit = int.Parse (child.InnerText); break; case "Mana": mobile.Points.Mana = int.Parse (child.InnerText); break; case "Move": mobile.Points.Move = int.Parse (child.InnerText); break; case "DamageNoDice": mobile.MobileSpecials.DamageNoDice = int.Parse (child.InnerText); break; case "DamageSizeDice": mobile.MobileSpecials.DamageSizeDice = int.Parse (child.InnerText); break; case "DamageRoll": mobile.Points.DamageRoll = int.Parse (child.InnerText); break; case "Gold": mobile.Points.Gold = int.Parse (child.InnerText); break; case "Experience": mobile.Points.Experience = int.Parse (child.InnerText); break; case "Position": mobile.CharacterSpecials.Position = (PositionTypes)int.Parse (child.InnerText); break; case "DefaultPosition": mobile.MobileSpecials.DefaultPosition = (PositionTypes)int.Parse (child.InnerText); break; case "Sex": mobile.Player.Sex = (SexTypes)int.Parse (child.InnerText); break; case "Class": mobile.Player.Class = (ClassTypes)int.Parse (child.InnerText); break; case "Height": mobile.Player.Height = int.Parse (child.InnerText); break; case "Weight": mobile.Player.Weight = int.Parse (child.InnerText); break; case "SavingThrows": break; case "BareHandAttack": mobile.MobileSpecials.AttackType = int.Parse (child.InnerText); break; case "Strength": mobile.RealAbilities.Strength = int.Parse (child.InnerText); break; case "StrengthAdd": mobile.RealAbilities.StrengthAdd = int.Parse (child.InnerText); break; case "Intelligence": mobile.RealAbilities.Intelligence = int.Parse (child.InnerText); break; case "Wisdom": mobile.RealAbilities.Wisdom = int.Parse (child.InnerText); break; case "Dexterity": mobile.RealAbilities.Dexterity = int.Parse (child.InnerText); break; case "Constitution": mobile.RealAbilities.Constitution = int.Parse (child.InnerText); break; case "Charisma": mobile.RealAbilities.Charisma = int.Parse (child.InnerText); break; } } } catch { Log ("SYSERR: Error pasing XML for mobile [" + virtualNumber + "] in file: " + filename); return false; } IndexData index = new IndexData (); index.VirtualNumber = virtualNumber; index.Count = 0; _mobileIndex.Add (_topOfMobileTable, index); _mobiles.Add (_topOfMobileTable++, mobile); } return true; }