private int NumberOfPCInRoom(RoomData room) { int count = 0; foreach (CharacterData character in room.People) if (!character.IsNPC) count++; return (count); }
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; }