muddesigner/MudEngine/WinPC_Engine/Game/Environment/Environment.cs
Scionwest_cp f5cf0c1f6a BaseScript now has a method for reporting failed Script.Load() method invocations. It will log the class name and property field if used correctly.
Some classes have some protection in place now in the event the class attempts to load a property that does not exist in the save file.
CommandSystem instances now use their instanced CommandCollection property instead of the static class property.
2012-03-10 16:08:02 -08:00

89 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MudEngine.Core;
using MudEngine.Core.Interfaces;
using MudEngine.Game.Characters;
using MudEngine.Game;
using MudEngine.GameScripts;
namespace MudEngine.Game.Environment
{
public class Environment : BaseScript, IGameComponent, ISavable, IUpdatable
{
/// <summary>
/// Gets or Sets the filename for this environment when it is saved.
/// </summary>
public string Filename { get; set; }
/// <summary>
/// Gets or Sets if this object is enabled. When disabled, characters can not traverse it.
/// If a character has the Role of Builder or higher than can enter the Environment reqgardless
/// if it is enabled or not. If the RequiredRole for this environment is set to Admin than
/// only a Admin may enter.
/// </summary>
public Boolean Enabled { get; set; }
/// <summary>
/// Gets what the minimum Required Role is in order to access this environment.
/// </summary>
public CharacterRoles RequiredRole { get; private set; }
public Environment(StandardGame game, String name, String description)
: base(game, name, description)
{
//Default to Builder or higher when created.
//Builders will need to set this to CharacterRoles.Player when environment construction is completed.
this.RequiredRole = CharacterRoles.Builder;
//Always default the environment to disabled so that players
//can't access the environment during construction.
this.Enabled = false;
}
public virtual void Initialize()
{
}
public virtual void Destroy()
{
this.Enabled = false;
}
public override bool Save(String filename, Boolean ignoreFileWrite)
{
base.Save(filename, true);
SaveData.AddSaveData("Filename", this.Filename);
SaveData.AddSaveData("Enabled", this.Enabled.ToString());
SaveData.AddSaveData("RequiredRole", this.RequiredRole.ToString());
if (!ignoreFileWrite)
return this.SaveData.Save(filename);
else
return true;
}
public override void Load(string filename)
{
base.Load(filename);
try { this.Filename = this.SaveData.GetData("Filename"); }
catch { LoadFailedMessage("Filename"); }
this.Enabled = Convert.ToBoolean(this.SaveData.GetData("Enabled"));
String role = this.SaveData.GetData("RequiredRole");
this.RequiredRole = CharacterRole.GetRole(role);
}
public void Update()
{
throw new NotImplementedException();
}
}
}