using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using MudEngine.Core;
using MudEngine.Core.Interfaces;
using MudEngine.Game.Characters;
using MudEngine.Game;
using MudEngine.GameScripts;
namespace MudEngine.Game.Environment
{
public abstract class Environment : BaseScript, IGameComponent, ISavable, IUpdatable
{
///
/// Gets or Sets the filename for this environment when it is saved.
///
public new string Filename
{
get
{
String path = Path.Combine(this.Game.SavePaths.GetPath(DAL.DataTypes.Environments), this.Name + this.Game.SavePaths.GetExtension(DAL.DataTypes.Environments));
return path;
}
}
///
/// 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.
///
public Boolean Enabled { get; set; }
///
/// Gets what the minimum Required Role is in order to access this environment.
///
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()
{
return this.Save(false);
}
public override bool Save(Boolean ignoreFileWrite)
{
base.Save(true);
//SaveData.AddSaveData("Filename", this.Filename);
SaveData.AddSaveData("Enabled", this.Enabled.ToString());
SaveData.AddSaveData("RequiredRole", this.RequiredRole.ToString());
if (!ignoreFileWrite)
return this.SaveData.Save(this.Filename);
else
return true;
}
public override void Load(string filename)
{
base.Load(filename);
/*
try { this.Filename = this.SaveData.GetData("Filename"); }
catch { LoadFailedMessage("Filename"); }
*/
try { this.Enabled = Convert.ToBoolean(this.SaveData.GetData("Enabled")); }
catch { this.LoadFailedMessage("Enabled");}
try
{
String role = this.SaveData.GetData("RequiredRole");
this.RequiredRole = CharacterRole.GetRole(role);
}
catch { this.LoadFailedMessage("RequiredRole"); }
}
public void Update()
{
throw new NotImplementedException();
}
}
}