muddesigner/Mud Designer/MudEngine/GameObjects/Environment/Zone.cs
Scionwest_cp 7005b869e4 - Zone Builder now loads/saves rooms correctly.
- Zones now contain a RefreshRoomList() method for updating the collection of Rooms. MUST be called anytime a room is changed within the Zone. 
 - Removed the forced Realm constructor for zones.

Realm, Zone and Room creation is now working again.
2009-12-08 16:11:42 -08:00

82 lines
2.2 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Xml.Serialization;
using MudDesigner.MudEngine.FileSystem;
using MudDesigner.MudEngine.GameObjects;
namespace MudDesigner.MudEngine.GameObjects.Environment
{
[XmlInclude(typeof(Room))]
public class Zone : BaseObject
{
[Category("Environment Information")]
[DefaultValue(0)]
public int StatDrainAmount
{
get;
set;
}
[Category("Environment Information")]
[DefaultValue(false)]
public bool StatDrain
{
get;
set;
}
[ReadOnly(true)]
[Category("Environment Information")]
public string Realm
{
get;
set;
}
internal List<Room> Rooms { get; set; }
public Zone()
{
Rooms = new List<Room>();
//throw new NotSupportedException("Parameterless constructors of Type " + this.GetType().FullName + " is not supported.");
}
public Room GetRoom(string RoomName)
{
foreach (Room r in Rooms)
{
if (r.Name == RoomName)
return r;
}
return null;
}
public void RefreshRoomList()
{
Rooms = new List<Room>();
//Create our collection of Rooms.
string realmPath = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Realms), this.Realm);
string zonePath = Path.Combine(realmPath, this.Name);
//incase the zone hasn't been saved yet.
if (!Directory.Exists(zonePath))
return;
//Zone exists, so it's already been saved.
string[] rooms = Directory.GetFiles(zonePath, "*.room");
foreach (string file in rooms)
{
Room r = new Room();
r = (Room)FileManager.Load(file, r);
this.Rooms.Add(r);
}
}
}
}