MUD Engine:

- BaseObject now sets the default value for Name programmatically for the editors propertygrids.
 - Room, Realm and Zone no longer set their Name Properties to their default value, BaseObject handles it.

Room Designer:
 - Scripts where'nt being saved, this has been corrected.
- Rooms wheren't being loaded when supplied via the command line argument (Method is used by the Zone Builder)
 - Displaying scripts within the Designer is now fixed.

Zone Builder:
 - Now displays the Zone Object Properties in the property grid.
This commit is contained in:
Scionwest_cp 2009-11-28 08:01:19 -08:00
parent 24b5c3f687
commit 82e43cb4f2
7 changed files with 72 additions and 84 deletions

View file

@ -11,22 +11,6 @@ namespace MUDEngine.Objects
{
public class BaseObject
{
public virtual void OnEnter()
{
}
public virtual void OnExit()
{
}
public virtual void OnCreate()
{
}
public virtual void OnDestroy()
{
}
[Category("Object Setup")]
[RefreshProperties(RefreshProperties.All)] //Required to refresh Filename property in the editors propertygrid
public string Name
@ -59,29 +43,70 @@ namespace MUDEngine.Objects
}
}
[Browsable(false)]
[XmlIgnore()]
public Controls.VisualContainer Control
{
get
{
return this._Control;
}
internal set
{
this._Control = value;
}
}
private Controls.VisualContainer _Control;
/// <summary>
/// Initializes the base object
/// </summary>
public BaseObject()
{
Control = new Controls.VisualContainer(this);
Script = "";
this.Name = "New " + this.GetType().Name;
this.Name = DefaultName();
SetupScript();
}
private bool ShouldSerializeName()
{
return this.Name != DefaultName();
}
private void ResetName()
{
this.Name = DefaultName();
}
private string DefaultName()
{
return "New " + this.GetType().Name;
}
private void SetupScript()
{
//Check if the realm script is empty. If so then generate a standard script for it.
if (Script == "")
{
//Instance a new method helper class
ManagedScripting.CodeBuilding.MethodSetup method = new ManagedScripting.CodeBuilding.MethodSetup();
string script = "";
//Setup our method. All objects inheriting from BaseObject will have the standard
//methods created for them.
string[] names = new string[] { "OnCreate", "OnDestroy", "OnEnter", "OnExit" };
foreach (string name in names)
{
method = new ManagedScripting.CodeBuilding.MethodSetup();
method.Name = name;
method.ReturnType = "void";
method.IsOverride = true;
method.Modifier = ManagedScripting.CodeBuilding.ClassGenerator.Modifiers.Public;
method.Code = new string[] { "base." + method.Name + "();" };
script = script.Insert(Script.Length, method.Create() + "\n");
}
Script = script;
}
}
public virtual void OnEnter()
{
}
public virtual void OnExit()
{
}
public virtual void OnCreate()
{
}
public virtual void OnDestroy()
{
}
}
}

View file

@ -60,20 +60,6 @@ namespace MUDEngine.Objects.Environment
[Browsable(false)]
public List<Door> InstalledDoors;
[XmlIgnore()]
[Browsable(false)]
public new Controls.RoomControl Control
{
get
{
return this._Control;
}
internal set
{
this._Control = value;
}
}
public Room()
{
InstalledDoors = new List<Door>();

View file

@ -11,8 +11,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RoomDesigner", "RoomDesigne
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudDesigner", "MudDesigner\MudDesigner.csproj", "{F782C36B-5A00-4BC9-BE4E-B631729DA40E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualDesigner", "VisualDesigner\VisualDesigner.csproj", "{2E20971A-E968-4AE9-B7B2-58236D499618}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZoneBuilder", "ZoneBuilder\ZoneBuilder.csproj", "{C81C3F3F-1D36-451E-A17A-33E953C30307}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RealmExplorer", "RealmExplorer\RealmExplorer.csproj", "{7CF280B2-883D-4218-AE39-6B511E2704A3}"
@ -43,10 +41,6 @@ Global
{F782C36B-5A00-4BC9-BE4E-B631729DA40E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F782C36B-5A00-4BC9-BE4E-B631729DA40E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F782C36B-5A00-4BC9-BE4E-B631729DA40E}.Release|Any CPU.Build.0 = Release|Any CPU
{2E20971A-E968-4AE9-B7B2-58236D499618}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E20971A-E968-4AE9-B7B2-58236D499618}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E20971A-E968-4AE9-B7B2-58236D499618}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E20971A-E968-4AE9-B7B2-58236D499618}.Release|Any CPU.Build.0 = Release|Any CPU
{C81C3F3F-1D36-451E-A17A-33E953C30307}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C81C3F3F-1D36-451E-A17A-33E953C30307}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C81C3F3F-1D36-451E-A17A-33E953C30307}.Release|Any CPU.ActiveCfg = Release|Any CPU

View file

@ -43,7 +43,7 @@ namespace RoomDesigner
if (File.Exists(file))
{
Application.Run(new frmMain(room));
Application.Run(new frmMain(argument));
}
else
{

View file

@ -229,6 +229,7 @@
this.txtScript.Size = new System.Drawing.Size(555, 267);
this.txtScript.TabIndex = 0;
this.txtScript.Text = "";
this.txtScript.TextChanged += new System.EventHandler(this.txtScript_TextChanged);
//
// groupBox5
//

View file

@ -61,7 +61,7 @@ namespace RoomDesigner
//Get the current rooms scripts.
//TODO: Add Doorway script support
SetupRoomScript();
//SetupRoomScript();
if (parameters.Length != 0)
{
@ -69,13 +69,14 @@ namespace RoomDesigner
{
if (argument.ToString().ToLower().StartsWith("room="))
{
string rooms = Engine.GetDataPath(Engine.SaveDataTypes.Rooms);
string filename = System.IO.Path.Combine(rooms, argument.ToString());
string roomPath = Engine.GetDataPath(Engine.SaveDataTypes.Rooms);
string room = argument.ToString().Substring("room=".Length);
string filename = System.IO.Path.Combine(roomPath, room.ToString());
//Room to load should always be the first arg.
if (System.IO.File.Exists(filename))
{
_CurrentRoom = (Room)ManagedScripting.XmlSerialization.Load(filename, _CurrentRoom);
_CurrentRoom = (Room)MUDEngine.FileSystem.FileSystem.Load(filename, _CurrentRoom);
}
}
}
@ -84,6 +85,7 @@ namespace RoomDesigner
//Show the user(s) the rooms properties
propertyRoom.SelectedObject = _CurrentRoom;
txtScript.Text = _CurrentRoom.Script;
}
private void SetupRoomScript()
@ -359,5 +361,10 @@ namespace RoomDesigner
+ "}\n";
MessageBox.Show(_ScriptEngine.Compile(code), "Script Compiling", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void txtScript_TextChanged(object sender, EventArgs e)
{
_CurrentRoom.Script = txtScript.Text;
}
}
}

View file

@ -26,32 +26,7 @@ namespace ZoneBuilder
_CurrentRoom = new Room();
_CurrentZone = new Zone();
SetupScript();
}
private void SetupScript()
{
//Check if the realm script is empty. If so then generate a standard script for it.
if (String.IsNullOrEmpty(_CurrentZone.Script))
{
//Instance a new method helper class
ManagedScripting.CodeBuilding.MethodSetup method = new ManagedScripting.CodeBuilding.MethodSetup();
string script = "";
//Setup our method. All objects inheriting from BaseObject will have the standard
//methods created for them.
string[] names = new string[] { "OnCreate", "OnDestroy", "OnEnter", "OnExit" };
foreach (string name in names)
{
method = new ManagedScripting.CodeBuilding.MethodSetup();
method.Name = name;
method.ReturnType = "void";
method.IsOverride = true;
method.Modifier = ManagedScripting.CodeBuilding.ClassGenerator.Modifiers.Public;
method.Code = new string[] { "base." + method.Name + "();" };
script = script.Insert(_CurrentZone.Script.Length, method.Create() + "\n");
}
_CurrentZone.Script = script;
}
propertyZone.SelectedObject = _CurrentZone;
}
private void btnRoomEditor_Click(object sender, EventArgs e)