Esempio n. 1
0
        private int NumberOfPCInRoom(RoomData room)
        {
            int count = 0;

            foreach (CharacterData character in room.People)
                if (!character.IsNPC)
                    count++;

            return (count);
        }
Esempio n. 2
0
        private bool LoadRooms(XmlDocument file, string filename)
        {
            XmlNodeList list = file.GetElementsByTagName ("RoomData");

            foreach (XmlNode node in list)
            {
                RoomData room = new RoomData ();
                room.Number = -1;

                try
                {
                    room.Number = Int32.Parse (node.Attributes["Number"].Value);

                    foreach (XmlNode child in node.ChildNodes)
                    {
                        switch (child.Name)
                        {
                            case "Name":
                                room.Name = child.InnerText;
                                break;

                            case "Description":
                                room.Description = child.InnerText;
                                break;

                            case "Zone":
                                room.Zone = Int32.Parse (child.InnerText);
                                break;

                            case "Flags":
                                room.Flags = long.Parse (child.InnerText);
                                break;

                            case "SectorType":
                                room.SectorType = (SectorTypes)int.Parse (child.InnerText);
                                break;

                            case "Direction":
                                int direction = Int32.Parse (child.Attributes["Direction"].Value);

                                if (room.DirectionOptions[direction] != null)
                                {
                                    Log ("SYSERR: Direction [" + direction + "] already defined in XML file: " + filename);
                                    continue;
                                }

                                room.DirectionOptions[direction] = new RoomDirectionData ();
                                room.DirectionOptions[direction].Description = child["Description"].InnerText;
                                room.DirectionOptions[direction].Keyword = child["Keyword"].InnerText;
                                room.DirectionOptions[direction].Key = Int32.Parse (child["Key"].InnerText);
                                room.DirectionOptions[direction].ToRoom = Int32.Parse (child["ToRoom"].InnerText);

                                int exitinfo = Convert.ToInt32 (child["Flags"].InnerText);

                                if (exitinfo == 1)
                                    room.DirectionOptions[direction].ExitInfo = (long)DirectionOptionFlags.IsDoor;
                                else if (exitinfo == 2)
                                    room.DirectionOptions[direction].ExitInfo = (long)DirectionOptionFlags.IsDoor | (long)DirectionOptionFlags.PickProof;
                                else
                                    room.DirectionOptions[direction].ExitInfo = (long)DirectionOptionFlags.None;
                                break;

                            case "ExtraDescription":
                                ExtraDescriptionData description = new ExtraDescriptionData ();
                                description.Keyword = child["Keyword"].InnerText;
                                description.Description = child["Description"].InnerText;
                                room.ExtraDescriptions.Add (description);
                                break;

                            case "Trigger":
                                // TODO: Add trigger stuff here.
                                break;
                        }
                    }
                }
                catch
                {
                    Log ("SYSERR: Error pasing XML for room [" + room.Number + "] in file: " + filename);
                    return false;
                }

                _rooms.Add (_topOfRoomTable++, room);
            }

            return true;
        }