- Added BaseCharacter.FlushConsole() method. Sends a hex sequence to the clients telnet terminal that clears the screen. If IsMultiplayer=false then it just clears the C# Console. - Added a 'Clear' command for users to use. It invokes the new FlushConsole command. - Removed the need for a full file path and filename when calling an objects save method. Now it just needs the path. - Adjusted the Exit command, Login command and Save command to reflect the objects save parameter changes. - Removed the Unique ID from objects. - All objects now reference each other via their filenames rather than their object names. Allows for 3 objects with the name Bedroom to exist, but with different filenames such as Bedroom1, Bedroom2 etc. - Zone now has a GetRoomByName method that replace the removed GetRoomByID method. Returns a List<> collection of Rooms found with a matching filename. - BaseCharacter updated to work with the new Zone.GetRoomByName method. - Realm.GetZoneByID renamed to GetZoneByName()
84 lines
2.3 KiB
C#
84 lines
2.3 KiB
C#
//Microsoft .NET Framework
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.IO;
|
|
using System.ComponentModel;
|
|
|
|
//MUD Engine
|
|
using MudEngine.FileSystem;
|
|
using MudEngine.GameObjects;
|
|
|
|
namespace MudEngine.GameObjects.Environment
|
|
{
|
|
public class Realm : BaseObject
|
|
{
|
|
|
|
[Category("Environment Information")]
|
|
[Description("A collection of Zones that are contained within this Realm. Players can traverse the world be traveling through Rooms that are contained within Zones. Note that it is not required to place a Zone into a Realm.")]
|
|
//[EditorAttribute(typeof(UIRealmEditor), typeof(System.Drawing.Design.UITypeEditor))]
|
|
public List<Zone> ZoneCollection { get; private set; }
|
|
|
|
/// <summary>
|
|
/// Gets or Sets if this Realm is the starting realm for the game.
|
|
/// </summary>
|
|
public bool IsInitialRealm { get; set; }
|
|
|
|
/// <summary>
|
|
/// The Initial Starting Zone for this Realm.
|
|
/// </summary>
|
|
public Zone InitialZone { get; private set; }
|
|
|
|
public Realm(GameManagement.Game game) : base(game)
|
|
{
|
|
ZoneCollection = new List<Zone>();
|
|
}
|
|
|
|
public override void Save(string path)
|
|
{
|
|
base.Save(path);
|
|
|
|
//TODO: Save Realm collections and Zone to file.
|
|
}
|
|
|
|
public List<Zone> GetZoneByFilename(string filename)
|
|
{
|
|
|
|
List<Zone> zones = new List<Zone>();
|
|
|
|
foreach (Zone zone in ZoneCollection)
|
|
{
|
|
if (zone.Filename == filename)
|
|
{
|
|
zones.Add(zone);
|
|
}
|
|
}
|
|
|
|
return zones;
|
|
}
|
|
|
|
public void AddZone(Zone zone)
|
|
{
|
|
if (zone.IsInitialZone)
|
|
{
|
|
foreach (Zone z in ZoneCollection)
|
|
{
|
|
if (z.IsInitialZone)
|
|
{
|
|
z.IsInitialZone = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (zone.IsInitialZone)
|
|
InitialZone = zone;
|
|
|
|
//TODO: Check fo duplicates
|
|
ZoneCollection.Add(zone);
|
|
zone.Realm = Filename;
|
|
}
|
|
}
|
|
}
|