Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }