MUD Engine:
- Changed ValidateProjectPath to ValidateDataPaths. Now can use the engines current install location if a path is not supplied - ValidateDataPaths iterates through a new enumerator containing all of the data paths, and creates the directories if they dont exist. - GetDataPath method added for returning the absolute path to any of the save directories specified in the argument. - BaseObject now contains a readonly Filename property that returns the objects Name with it's Type assigned as the files extension. - BaseObject's Script property was added. - Room.StatDrain re-added. Changed property Type to boolean instead of custom struct. - Room Designer's constructor code was refracted to help clean it up. Plugin loading, doorway list compiling and room setup is now contained in three different methods. - Room Designer can now Save scripts. - Room Designer now has default scripts generated. - Changing the Object Management tabs to 'Script' now refreshes the script to display correctly. - Room Designer now accepts a single argument for specifying the name of a room to Load. Use "room=Room Name.room" as the syntax. - Room loading is implemented, but only via a supplied argument during application launch.
This commit is contained in:
parent
d7d92e49af
commit
1cc477f23c
13 changed files with 489 additions and 317 deletions
|
@ -13,7 +13,7 @@ namespace CurrencyEditor
|
|||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
MUDEngine.Engine.ValidateProjectPath(Application.StartupPath);
|
||||
MUDEngine.Engine.ValidateDataPaths();
|
||||
MUDEngine.FileSystem.FileSystem.FileType = MUDEngine.FileSystem.FileSystem.OutputFormats.XML;
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
|
|
|
@ -7,26 +7,61 @@ namespace MUDEngine
|
|||
{
|
||||
public class Engine
|
||||
{
|
||||
public enum SaveDataTypes
|
||||
{
|
||||
Root,
|
||||
Currency,
|
||||
Rooms,
|
||||
Zones,
|
||||
Realms,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used to ensure that the paths needed to run the game exists.
|
||||
/// If no path is supplied, the engine uses it's current install path.
|
||||
/// </summary>
|
||||
/// <param name="validatedPath"></param>
|
||||
public static void ValidateProjectPath(string validatedPath)
|
||||
public static void ValidateDataPaths()
|
||||
{
|
||||
string dataPath = System.IO.Path.Combine(validatedPath, "Data");
|
||||
string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
|
||||
string assemblyName = System.IO.Path.GetFileName(assemblyPath);
|
||||
string installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length);
|
||||
string rootPath = System.IO.Path.Combine(installBase, "Data");
|
||||
ValidateDataPaths(rootPath);
|
||||
}
|
||||
|
||||
if (!System.IO.Directory.Exists(dataPath))
|
||||
System.IO.Directory.CreateDirectory(dataPath);
|
||||
/// <summary>
|
||||
/// Checks the supplied directory to ensure that all of the engines needed
|
||||
/// data folders are created
|
||||
/// </summary>
|
||||
/// <param name="InstallPath"></param>
|
||||
public static void ValidateDataPaths(string InstallPath)
|
||||
{
|
||||
if (!System.IO.Directory.Exists(InstallPath))
|
||||
System.IO.Directory.CreateDirectory(InstallPath);
|
||||
|
||||
//begin checking directories
|
||||
string[] paths = { "Rooms", "Zones", "Realms", "Currency" };
|
||||
|
||||
foreach (var path in paths)
|
||||
foreach (SaveDataTypes value in Enum.GetValues(typeof(SaveDataTypes)))
|
||||
{
|
||||
string createPath = System.IO.Path.Combine(dataPath, path);
|
||||
if (!System.IO.Directory.Exists(createPath))
|
||||
System.IO.Directory.CreateDirectory(createPath);
|
||||
string dataType = value.ToString();
|
||||
|
||||
if (!System.IO.Directory.Exists(System.IO.Path.Combine(InstallPath, dataType)))
|
||||
System.IO.Directory.CreateDirectory(System.IO.Path.Combine(InstallPath, dataType));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the complete path to the specified data's save folder.
|
||||
/// </summary>
|
||||
/// <param name="DataType"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetDataPath(SaveDataTypes DataType)
|
||||
{
|
||||
string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
|
||||
string assemblyName = System.IO.Path.GetFileName(assemblyPath);
|
||||
string installBase = assemblyPath.Substring(0, assemblyPath.Length - assemblyName.Length);
|
||||
string rootPath = System.IO.Path.Combine(installBase, "Data");
|
||||
|
||||
return System.IO.Path.Combine(rootPath, DataType.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
|
|
|
@ -2,15 +2,19 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MUDEngine.Objects
|
||||
{
|
||||
public class BaseObject
|
||||
{
|
||||
public virtual void OnEnter(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
[Category("Object Setup")]
|
||||
[RefreshProperties(RefreshProperties.All)] //Required to refresh Filename property in the editors propertygrid
|
||||
public string Name
|
||||
{
|
||||
get;
|
||||
|
@ -25,17 +29,26 @@ namespace MUDEngine.Objects
|
|||
}
|
||||
|
||||
[Browsable(false)]
|
||||
public ManagedScripting.CodeBuilding.ClassGenerator Script
|
||||
public string Script { get; set; }
|
||||
|
||||
[ReadOnly(true)]
|
||||
[Category("Object Setup")]
|
||||
public string Filename
|
||||
{
|
||||
get;
|
||||
set;
|
||||
//Returns the name of the object + the objects Type as it's extension.
|
||||
//Filenames are generated by the class itself, users can not assign it.
|
||||
get
|
||||
{
|
||||
string fileExtension = this.GetType().Name.ToLower();
|
||||
|
||||
return this.Name + "." + fileExtension;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnEnter()
|
||||
{
|
||||
}
|
||||
|
||||
public void OnExit()
|
||||
/// <summary>
|
||||
/// Initializes the base object
|
||||
/// </summary>
|
||||
public BaseObject()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,11 +32,13 @@ namespace MUDEngine.Objects.Environment
|
|||
set;
|
||||
}
|
||||
|
||||
/*public Stats StatDrain
|
||||
[Category("Room Information")]
|
||||
[DefaultValue(false)]
|
||||
public bool StatDrain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}*/
|
||||
}
|
||||
|
||||
[Category("Room Information")]
|
||||
[DefaultValue(0)]
|
||||
|
@ -54,17 +56,18 @@ namespace MUDEngine.Objects.Environment
|
|||
set;
|
||||
}
|
||||
|
||||
[Browsable(false)]
|
||||
public List<Door> InstalledDoors;
|
||||
|
||||
public Room()
|
||||
{
|
||||
InstalledDoors = new List<Door>();
|
||||
|
||||
Script = "";
|
||||
this.Feel = "You feel nothing.";
|
||||
this.Listen = "You hear nothing of interest.";
|
||||
this.Smell = "You don't smell anything unsual.";
|
||||
this.StatDrainAmount = 0;
|
||||
Name = "New Room";
|
||||
}
|
||||
|
||||
[Browsable(false)]
|
||||
public List<Door> InstalledDoors;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,6 +121,12 @@
|
|||
<ItemGroup>
|
||||
<Content Include="EditorList.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\MUDEngine\MUDEngine.csproj">
|
||||
<Project>{33828B3B-F227-4726-8FCD-3D9D780E643D}</Project>
|
||||
<Name>MUDEngine</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
|
174
MudDesigner/frmMain.Designer.cs
generated
174
MudDesigner/frmMain.Designer.cs
generated
|
@ -36,12 +36,30 @@
|
|||
this.btnProjectManager = new System.Windows.Forms.Button();
|
||||
this.btnCurrencyEditor = new System.Windows.Forms.Button();
|
||||
this.btnRoomDesigner = new System.Windows.Forms.Button();
|
||||
this.tabFunctions = new System.Windows.Forms.TabPage();
|
||||
this.groupBox9 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox14 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox12 = new System.Windows.Forms.GroupBox();
|
||||
this.comReturnTypes = new System.Windows.Forms.ComboBox();
|
||||
this.groupBox13 = new System.Windows.Forms.GroupBox();
|
||||
this.txtFunctionName = new System.Windows.Forms.TextBox();
|
||||
this.groupBox11 = new System.Windows.Forms.GroupBox();
|
||||
this.comFunctions = new System.Windows.Forms.ComboBox();
|
||||
this.groupBox8 = new System.Windows.Forms.GroupBox();
|
||||
this.txtScript = new System.Windows.Forms.RichTextBox();
|
||||
this.tabVariables = new System.Windows.Forms.TabPage();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.tabEditors.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.tabFunctions.SuspendLayout();
|
||||
this.groupBox9.SuspendLayout();
|
||||
this.groupBox12.SuspendLayout();
|
||||
this.groupBox13.SuspendLayout();
|
||||
this.groupBox11.SuspendLayout();
|
||||
this.groupBox8.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
|
@ -135,7 +153,7 @@
|
|||
this.btnCurrencyEditor.TabIndex = 1;
|
||||
this.btnCurrencyEditor.Text = "Currency Editor";
|
||||
this.btnCurrencyEditor.UseVisualStyleBackColor = true;
|
||||
this.btnCurrencyEditor.Click +=new System.EventHandler(btnCurrencyEditor_Click);
|
||||
this.btnCurrencyEditor.Click += new System.EventHandler(this.btnCurrencyEditor_Click);
|
||||
//
|
||||
// btnRoomDesigner
|
||||
//
|
||||
|
@ -147,7 +165,140 @@
|
|||
this.btnRoomDesigner.TabIndex = 2;
|
||||
this.btnRoomDesigner.Text = "Room Designer";
|
||||
this.btnRoomDesigner.UseVisualStyleBackColor = true;
|
||||
this.btnRoomDesigner.Click += new System.EventHandler(btnRoomDesigner_Click);
|
||||
this.btnRoomDesigner.Click += new System.EventHandler(this.btnRoomDesigner_Click);
|
||||
//
|
||||
// tabFunctions
|
||||
//
|
||||
this.tabFunctions.Controls.Add(this.groupBox9);
|
||||
this.tabFunctions.Controls.Add(this.groupBox8);
|
||||
this.tabFunctions.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabFunctions.Name = "tabFunctions";
|
||||
this.tabFunctions.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabFunctions.Size = new System.Drawing.Size(526, 247);
|
||||
this.tabFunctions.TabIndex = 0;
|
||||
this.tabFunctions.Text = "Functions";
|
||||
this.tabFunctions.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox9
|
||||
//
|
||||
this.groupBox9.Controls.Add(this.groupBox14);
|
||||
this.groupBox9.Controls.Add(this.groupBox12);
|
||||
this.groupBox9.Controls.Add(this.groupBox13);
|
||||
this.groupBox9.Controls.Add(this.groupBox11);
|
||||
this.groupBox9.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.groupBox9.Location = new System.Drawing.Point(365, 3);
|
||||
this.groupBox9.Name = "groupBox9";
|
||||
this.groupBox9.Size = new System.Drawing.Size(158, 241);
|
||||
this.groupBox9.TabIndex = 3;
|
||||
this.groupBox9.TabStop = false;
|
||||
this.groupBox9.Text = "Script Setup";
|
||||
//
|
||||
// groupBox14
|
||||
//
|
||||
this.groupBox14.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox14.Location = new System.Drawing.Point(3, 139);
|
||||
this.groupBox14.Name = "groupBox14";
|
||||
this.groupBox14.Size = new System.Drawing.Size(152, 96);
|
||||
this.groupBox14.TabIndex = 8;
|
||||
this.groupBox14.TabStop = false;
|
||||
//
|
||||
// groupBox12
|
||||
//
|
||||
this.groupBox12.Controls.Add(this.comReturnTypes);
|
||||
this.groupBox12.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox12.Location = new System.Drawing.Point(3, 98);
|
||||
this.groupBox12.Name = "groupBox12";
|
||||
this.groupBox12.Size = new System.Drawing.Size(152, 41);
|
||||
this.groupBox12.TabIndex = 7;
|
||||
this.groupBox12.TabStop = false;
|
||||
this.groupBox12.Text = "Returnable Types";
|
||||
//
|
||||
// comReturnTypes
|
||||
//
|
||||
this.comReturnTypes.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.comReturnTypes.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.comReturnTypes.FormattingEnabled = true;
|
||||
this.comReturnTypes.Items.AddRange(new object[] {
|
||||
"bool",
|
||||
"int",
|
||||
"string"});
|
||||
this.comReturnTypes.Location = new System.Drawing.Point(3, 16);
|
||||
this.comReturnTypes.Name = "comReturnTypes";
|
||||
this.comReturnTypes.Size = new System.Drawing.Size(146, 21);
|
||||
this.comReturnTypes.Sorted = true;
|
||||
this.comReturnTypes.TabIndex = 0;
|
||||
//
|
||||
// groupBox13
|
||||
//
|
||||
this.groupBox13.Controls.Add(this.txtFunctionName);
|
||||
this.groupBox13.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox13.Location = new System.Drawing.Point(3, 57);
|
||||
this.groupBox13.Name = "groupBox13";
|
||||
this.groupBox13.Size = new System.Drawing.Size(152, 41);
|
||||
this.groupBox13.TabIndex = 6;
|
||||
this.groupBox13.TabStop = false;
|
||||
this.groupBox13.Text = "Function Name";
|
||||
//
|
||||
// txtFunctionName
|
||||
//
|
||||
this.txtFunctionName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtFunctionName.Location = new System.Drawing.Point(3, 16);
|
||||
this.txtFunctionName.Name = "txtFunctionName";
|
||||
this.txtFunctionName.Size = new System.Drawing.Size(146, 20);
|
||||
this.txtFunctionName.TabIndex = 0;
|
||||
//
|
||||
// groupBox11
|
||||
//
|
||||
this.groupBox11.Controls.Add(this.comFunctions);
|
||||
this.groupBox11.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox11.Location = new System.Drawing.Point(3, 16);
|
||||
this.groupBox11.Name = "groupBox11";
|
||||
this.groupBox11.Size = new System.Drawing.Size(152, 41);
|
||||
this.groupBox11.TabIndex = 0;
|
||||
this.groupBox11.TabStop = false;
|
||||
this.groupBox11.Text = "Existing Functions";
|
||||
//
|
||||
// comFunctions
|
||||
//
|
||||
this.comFunctions.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.comFunctions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comFunctions.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.comFunctions.FormattingEnabled = true;
|
||||
this.comFunctions.Location = new System.Drawing.Point(3, 16);
|
||||
this.comFunctions.Name = "comFunctions";
|
||||
this.comFunctions.Size = new System.Drawing.Size(146, 21);
|
||||
this.comFunctions.Sorted = true;
|
||||
this.comFunctions.TabIndex = 0;
|
||||
//
|
||||
// groupBox8
|
||||
//
|
||||
this.groupBox8.Controls.Add(this.txtScript);
|
||||
this.groupBox8.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.groupBox8.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox8.Name = "groupBox8";
|
||||
this.groupBox8.Size = new System.Drawing.Size(359, 241);
|
||||
this.groupBox8.TabIndex = 2;
|
||||
this.groupBox8.TabStop = false;
|
||||
this.groupBox8.Text = "Room Script";
|
||||
//
|
||||
// txtScript
|
||||
//
|
||||
this.txtScript.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtScript.Location = new System.Drawing.Point(3, 16);
|
||||
this.txtScript.Name = "txtScript";
|
||||
this.txtScript.Size = new System.Drawing.Size(353, 222);
|
||||
this.txtScript.TabIndex = 0;
|
||||
this.txtScript.Text = "";
|
||||
//
|
||||
// tabVariables
|
||||
//
|
||||
this.tabVariables.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabVariables.Name = "tabVariables";
|
||||
this.tabVariables.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabVariables.Size = new System.Drawing.Size(526, 247);
|
||||
this.tabVariables.TabIndex = 1;
|
||||
this.tabVariables.Text = "Variables";
|
||||
this.tabVariables.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// frmMain
|
||||
//
|
||||
|
@ -167,6 +318,13 @@
|
|||
this.tabEditors.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.flowLayoutPanel1.ResumeLayout(false);
|
||||
this.tabFunctions.ResumeLayout(false);
|
||||
this.groupBox9.ResumeLayout(false);
|
||||
this.groupBox12.ResumeLayout(false);
|
||||
this.groupBox13.ResumeLayout(false);
|
||||
this.groupBox13.PerformLayout();
|
||||
this.groupBox11.ResumeLayout(false);
|
||||
this.groupBox8.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
@ -181,6 +339,18 @@
|
|||
private System.Windows.Forms.Button btnProjectManager;
|
||||
private System.Windows.Forms.Button btnCurrencyEditor;
|
||||
private System.Windows.Forms.Button btnRoomDesigner;
|
||||
private System.Windows.Forms.TabPage tabFunctions;
|
||||
private System.Windows.Forms.GroupBox groupBox9;
|
||||
private System.Windows.Forms.GroupBox groupBox14;
|
||||
private System.Windows.Forms.GroupBox groupBox12;
|
||||
private System.Windows.Forms.ComboBox comReturnTypes;
|
||||
private System.Windows.Forms.GroupBox groupBox13;
|
||||
private System.Windows.Forms.TextBox txtFunctionName;
|
||||
private System.Windows.Forms.GroupBox groupBox11;
|
||||
private System.Windows.Forms.ComboBox comFunctions;
|
||||
private System.Windows.Forms.GroupBox groupBox8;
|
||||
private System.Windows.Forms.RichTextBox txtScript;
|
||||
private System.Windows.Forms.TabPage tabVariables;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace Project_Manager
|
|||
static void Main()
|
||||
{
|
||||
//Make sure all our paths are created before we start working with the editor.
|
||||
Engine.ValidateProjectPath(Application.StartupPath);
|
||||
MUDEngine.Engine.ValidateDataPaths();
|
||||
FileSystem.FileType = FileSystem.OutputFormats.XML;
|
||||
|
||||
project = new ProjectInformation();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
@ -11,14 +12,50 @@ namespace RoomDesigner
|
|||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
static void Main(string[] arguments)
|
||||
{
|
||||
MUDEngine.Engine.ValidateProjectPath(Application.StartupPath);
|
||||
MUDEngine.Engine.ValidateDataPaths();
|
||||
MUDEngine.FileSystem.FileSystem.FileType = MUDEngine.FileSystem.FileSystem.OutputFormats.XML;
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new frmMain());
|
||||
|
||||
//Check if we have a valid room supplied in the arguments.
|
||||
//The Zone editor can launch the Room Designer, if the user
|
||||
//chooses to edit a room from within the Zone Editor. Currently
|
||||
//Zone editor is the only planned editor that can allow users to
|
||||
//edit existing rooms. Simplifies it, as I don't need to design
|
||||
//a Realm/Zone/Room explorer in the Room or Realm editors.
|
||||
if (arguments.Length == 0)
|
||||
{
|
||||
Application.Run(new frmMain());
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (string argument in arguments)
|
||||
{
|
||||
//check if it's a room specified.
|
||||
if (argument.ToLower().StartsWith("room="))
|
||||
{
|
||||
int startIndex = "room=".Length;
|
||||
string room = argument.Substring(startIndex);
|
||||
string file = Path.Combine(Application.StartupPath, "Data\\Rooms\\") + room;
|
||||
|
||||
if (File.Exists(file))
|
||||
{
|
||||
Application.Run(new frmMain(room));
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Unable to locate the specified file."
|
||||
+ "Please ensure that it exists or the correct argument format was used.\n"
|
||||
+ "Room: " + file,
|
||||
"Room Designer", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
Application.Run(new frmMain());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
278
RoomDesigner/frmMain.Designer.cs
generated
278
RoomDesigner/frmMain.Designer.cs
generated
|
@ -43,26 +43,18 @@
|
|||
this.tabBooks = new System.Windows.Forms.TabPage();
|
||||
this.tabEquipment = new System.Windows.Forms.TabPage();
|
||||
this.tabItems = new System.Windows.Forms.TabPage();
|
||||
this.tabScript = new System.Windows.Forms.TabPage();
|
||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
||||
this.tabFunctions = new System.Windows.Forms.TabPage();
|
||||
this.groupBox8 = new System.Windows.Forms.GroupBox();
|
||||
this.txtScript = new System.Windows.Forms.RichTextBox();
|
||||
this.tabVariables = new System.Windows.Forms.TabPage();
|
||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox7 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox10 = new System.Windows.Forms.GroupBox();
|
||||
this.propertyDoor = new System.Windows.Forms.PropertyGrid();
|
||||
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
||||
this.lstDirections = new System.Windows.Forms.ListBox();
|
||||
this.tabScript = new System.Windows.Forms.TabPage();
|
||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
||||
this.tabFunctions = new System.Windows.Forms.TabPage();
|
||||
this.tabVariables = new System.Windows.Forms.TabPage();
|
||||
this.groupBox8 = new System.Windows.Forms.GroupBox();
|
||||
this.txtScript = new System.Windows.Forms.RichTextBox();
|
||||
this.groupBox11 = new System.Windows.Forms.GroupBox();
|
||||
this.comFunctions = new System.Windows.Forms.ComboBox();
|
||||
this.groupBox9 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox13 = new System.Windows.Forms.GroupBox();
|
||||
this.txtFunctionName = new System.Windows.Forms.TextBox();
|
||||
this.groupBox12 = new System.Windows.Forms.GroupBox();
|
||||
this.comReturnTypes = new System.Windows.Forms.ComboBox();
|
||||
this.groupBox14 = new System.Windows.Forms.GroupBox();
|
||||
this.containerMain.Panel1.SuspendLayout();
|
||||
this.containerMain.Panel2.SuspendLayout();
|
||||
this.containerMain.SuspendLayout();
|
||||
|
@ -76,18 +68,14 @@
|
|||
this.containerDesigner.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.groupBox5.SuspendLayout();
|
||||
this.groupBox7.SuspendLayout();
|
||||
this.groupBox10.SuspendLayout();
|
||||
this.groupBox6.SuspendLayout();
|
||||
this.tabScript.SuspendLayout();
|
||||
this.tabControl2.SuspendLayout();
|
||||
this.tabFunctions.SuspendLayout();
|
||||
this.groupBox8.SuspendLayout();
|
||||
this.groupBox11.SuspendLayout();
|
||||
this.groupBox9.SuspendLayout();
|
||||
this.groupBox13.SuspendLayout();
|
||||
this.groupBox12.SuspendLayout();
|
||||
this.groupBox5.SuspendLayout();
|
||||
this.groupBox7.SuspendLayout();
|
||||
this.groupBox10.SuspendLayout();
|
||||
this.groupBox6.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// containerMain
|
||||
|
@ -155,6 +143,7 @@
|
|||
this.btnSaveRoom.TabIndex = 1;
|
||||
this.btnSaveRoom.Text = "Save Room";
|
||||
this.btnSaveRoom.UseVisualStyleBackColor = true;
|
||||
this.btnSaveRoom.Click += new System.EventHandler(this.btnSaveRoom_Click);
|
||||
//
|
||||
// btnNewRoom
|
||||
//
|
||||
|
@ -195,6 +184,7 @@
|
|||
this.propertyRoom.Name = "propertyRoom";
|
||||
this.propertyRoom.Size = new System.Drawing.Size(230, 430);
|
||||
this.propertyRoom.TabIndex = 3;
|
||||
this.propertyRoom.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyRoom_PropertyValueChanged);
|
||||
//
|
||||
// containerDesigner
|
||||
//
|
||||
|
@ -237,13 +227,14 @@
|
|||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(542, 299);
|
||||
this.tabControl1.TabIndex = 0;
|
||||
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
|
||||
//
|
||||
// tabBooks
|
||||
//
|
||||
this.tabBooks.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabBooks.Name = "tabBooks";
|
||||
this.tabBooks.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabBooks.Size = new System.Drawing.Size(528, 273);
|
||||
this.tabBooks.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabBooks.TabIndex = 0;
|
||||
this.tabBooks.Text = "Books";
|
||||
this.tabBooks.UseVisualStyleBackColor = true;
|
||||
|
@ -253,7 +244,7 @@
|
|||
this.tabEquipment.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabEquipment.Name = "tabEquipment";
|
||||
this.tabEquipment.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabEquipment.Size = new System.Drawing.Size(528, 273);
|
||||
this.tabEquipment.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabEquipment.TabIndex = 1;
|
||||
this.tabEquipment.Text = "Equipment";
|
||||
this.tabEquipment.UseVisualStyleBackColor = true;
|
||||
|
@ -262,11 +253,73 @@
|
|||
//
|
||||
this.tabItems.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabItems.Name = "tabItems";
|
||||
this.tabItems.Size = new System.Drawing.Size(528, 273);
|
||||
this.tabItems.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabItems.TabIndex = 2;
|
||||
this.tabItems.Text = "Items";
|
||||
this.tabItems.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabScript
|
||||
//
|
||||
this.tabScript.Controls.Add(this.tabControl2);
|
||||
this.tabScript.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabScript.Name = "tabScript";
|
||||
this.tabScript.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabScript.TabIndex = 3;
|
||||
this.tabScript.Text = "Script";
|
||||
this.tabScript.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabControl2
|
||||
//
|
||||
this.tabControl2.Controls.Add(this.tabFunctions);
|
||||
this.tabControl2.Controls.Add(this.tabVariables);
|
||||
this.tabControl2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl2.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl2.Name = "tabControl2";
|
||||
this.tabControl2.SelectedIndex = 0;
|
||||
this.tabControl2.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabControl2.TabIndex = 0;
|
||||
//
|
||||
// tabFunctions
|
||||
//
|
||||
this.tabFunctions.Controls.Add(this.groupBox8);
|
||||
this.tabFunctions.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabFunctions.Name = "tabFunctions";
|
||||
this.tabFunctions.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabFunctions.Size = new System.Drawing.Size(526, 247);
|
||||
this.tabFunctions.TabIndex = 0;
|
||||
this.tabFunctions.Text = "Functions";
|
||||
this.tabFunctions.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox8
|
||||
//
|
||||
this.groupBox8.Controls.Add(this.txtScript);
|
||||
this.groupBox8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox8.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox8.Name = "groupBox8";
|
||||
this.groupBox8.Size = new System.Drawing.Size(520, 241);
|
||||
this.groupBox8.TabIndex = 2;
|
||||
this.groupBox8.TabStop = false;
|
||||
this.groupBox8.Text = "Room Script";
|
||||
//
|
||||
// txtScript
|
||||
//
|
||||
this.txtScript.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtScript.Location = new System.Drawing.Point(3, 16);
|
||||
this.txtScript.Name = "txtScript";
|
||||
this.txtScript.Size = new System.Drawing.Size(514, 222);
|
||||
this.txtScript.TabIndex = 0;
|
||||
this.txtScript.Text = "";
|
||||
//
|
||||
// tabVariables
|
||||
//
|
||||
this.tabVariables.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabVariables.Name = "tabVariables";
|
||||
this.tabVariables.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabVariables.Size = new System.Drawing.Size(526, 247);
|
||||
this.tabVariables.TabIndex = 1;
|
||||
this.tabVariables.Text = "Variables";
|
||||
this.tabVariables.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox5
|
||||
//
|
||||
this.groupBox5.Controls.Add(this.groupBox7);
|
||||
|
@ -331,160 +384,6 @@
|
|||
this.lstDirections.TabIndex = 0;
|
||||
this.lstDirections.SelectedIndexChanged += new System.EventHandler(this.lstDirections_SelectedIndexChanged);
|
||||
//
|
||||
// tabScript
|
||||
//
|
||||
this.tabScript.Controls.Add(this.tabControl2);
|
||||
this.tabScript.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabScript.Name = "tabScript";
|
||||
this.tabScript.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabScript.TabIndex = 3;
|
||||
this.tabScript.Text = "Script";
|
||||
this.tabScript.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabControl2
|
||||
//
|
||||
this.tabControl2.Controls.Add(this.tabFunctions);
|
||||
this.tabControl2.Controls.Add(this.tabVariables);
|
||||
this.tabControl2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl2.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl2.Name = "tabControl2";
|
||||
this.tabControl2.SelectedIndex = 0;
|
||||
this.tabControl2.Size = new System.Drawing.Size(534, 273);
|
||||
this.tabControl2.TabIndex = 0;
|
||||
//
|
||||
// tabFunctions
|
||||
//
|
||||
this.tabFunctions.Controls.Add(this.groupBox9);
|
||||
this.tabFunctions.Controls.Add(this.groupBox8);
|
||||
this.tabFunctions.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabFunctions.Name = "tabFunctions";
|
||||
this.tabFunctions.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabFunctions.Size = new System.Drawing.Size(526, 247);
|
||||
this.tabFunctions.TabIndex = 0;
|
||||
this.tabFunctions.Text = "Functions";
|
||||
this.tabFunctions.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabVariables
|
||||
//
|
||||
this.tabVariables.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabVariables.Name = "tabVariables";
|
||||
this.tabVariables.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabVariables.Size = new System.Drawing.Size(526, 247);
|
||||
this.tabVariables.TabIndex = 1;
|
||||
this.tabVariables.Text = "Variables";
|
||||
this.tabVariables.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox8
|
||||
//
|
||||
this.groupBox8.Controls.Add(this.txtScript);
|
||||
this.groupBox8.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.groupBox8.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox8.Name = "groupBox8";
|
||||
this.groupBox8.Size = new System.Drawing.Size(359, 241);
|
||||
this.groupBox8.TabIndex = 2;
|
||||
this.groupBox8.TabStop = false;
|
||||
this.groupBox8.Text = "Room Script";
|
||||
//
|
||||
// txtScript
|
||||
//
|
||||
this.txtScript.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtScript.Location = new System.Drawing.Point(3, 16);
|
||||
this.txtScript.Name = "txtScript";
|
||||
this.txtScript.Size = new System.Drawing.Size(353, 222);
|
||||
this.txtScript.TabIndex = 0;
|
||||
this.txtScript.Text = "";
|
||||
//
|
||||
// groupBox11
|
||||
//
|
||||
this.groupBox11.Controls.Add(this.comFunctions);
|
||||
this.groupBox11.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox11.Location = new System.Drawing.Point(3, 16);
|
||||
this.groupBox11.Name = "groupBox11";
|
||||
this.groupBox11.Size = new System.Drawing.Size(152, 41);
|
||||
this.groupBox11.TabIndex = 0;
|
||||
this.groupBox11.TabStop = false;
|
||||
this.groupBox11.Text = "Existing Functions";
|
||||
//
|
||||
// comFunctions
|
||||
//
|
||||
this.comFunctions.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.comFunctions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comFunctions.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.comFunctions.FormattingEnabled = true;
|
||||
this.comFunctions.Location = new System.Drawing.Point(3, 16);
|
||||
this.comFunctions.Name = "comFunctions";
|
||||
this.comFunctions.Size = new System.Drawing.Size(146, 21);
|
||||
this.comFunctions.Sorted = true;
|
||||
this.comFunctions.TabIndex = 0;
|
||||
//
|
||||
// groupBox9
|
||||
//
|
||||
this.groupBox9.Controls.Add(this.groupBox14);
|
||||
this.groupBox9.Controls.Add(this.groupBox12);
|
||||
this.groupBox9.Controls.Add(this.groupBox13);
|
||||
this.groupBox9.Controls.Add(this.groupBox11);
|
||||
this.groupBox9.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.groupBox9.Location = new System.Drawing.Point(365, 3);
|
||||
this.groupBox9.Name = "groupBox9";
|
||||
this.groupBox9.Size = new System.Drawing.Size(158, 241);
|
||||
this.groupBox9.TabIndex = 3;
|
||||
this.groupBox9.TabStop = false;
|
||||
this.groupBox9.Text = "Script Setup";
|
||||
//
|
||||
// groupBox13
|
||||
//
|
||||
this.groupBox13.Controls.Add(this.txtFunctionName);
|
||||
this.groupBox13.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox13.Location = new System.Drawing.Point(3, 57);
|
||||
this.groupBox13.Name = "groupBox13";
|
||||
this.groupBox13.Size = new System.Drawing.Size(152, 41);
|
||||
this.groupBox13.TabIndex = 6;
|
||||
this.groupBox13.TabStop = false;
|
||||
this.groupBox13.Text = "Function Name";
|
||||
//
|
||||
// txtFunctionName
|
||||
//
|
||||
this.txtFunctionName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtFunctionName.Location = new System.Drawing.Point(3, 16);
|
||||
this.txtFunctionName.Name = "txtFunctionName";
|
||||
this.txtFunctionName.Size = new System.Drawing.Size(146, 20);
|
||||
this.txtFunctionName.TabIndex = 0;
|
||||
//
|
||||
// groupBox12
|
||||
//
|
||||
this.groupBox12.Controls.Add(this.comReturnTypes);
|
||||
this.groupBox12.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox12.Location = new System.Drawing.Point(3, 98);
|
||||
this.groupBox12.Name = "groupBox12";
|
||||
this.groupBox12.Size = new System.Drawing.Size(152, 41);
|
||||
this.groupBox12.TabIndex = 7;
|
||||
this.groupBox12.TabStop = false;
|
||||
this.groupBox12.Text = "Returnable Types";
|
||||
//
|
||||
// comReturnTypes
|
||||
//
|
||||
this.comReturnTypes.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.comReturnTypes.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.comReturnTypes.FormattingEnabled = true;
|
||||
this.comReturnTypes.Items.AddRange(new object[] {
|
||||
"bool",
|
||||
"int",
|
||||
"string"});
|
||||
this.comReturnTypes.Location = new System.Drawing.Point(3, 16);
|
||||
this.comReturnTypes.Name = "comReturnTypes";
|
||||
this.comReturnTypes.Size = new System.Drawing.Size(146, 21);
|
||||
this.comReturnTypes.Sorted = true;
|
||||
this.comReturnTypes.TabIndex = 0;
|
||||
//
|
||||
// groupBox14
|
||||
//
|
||||
this.groupBox14.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.groupBox14.Location = new System.Drawing.Point(3, 139);
|
||||
this.groupBox14.Name = "groupBox14";
|
||||
this.groupBox14.Size = new System.Drawing.Size(152, 96);
|
||||
this.groupBox14.TabIndex = 8;
|
||||
this.groupBox14.TabStop = false;
|
||||
//
|
||||
// frmMain
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -510,19 +409,14 @@
|
|||
this.containerDesigner.ResumeLayout(false);
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.groupBox5.ResumeLayout(false);
|
||||
this.groupBox7.ResumeLayout(false);
|
||||
this.groupBox10.ResumeLayout(false);
|
||||
this.groupBox6.ResumeLayout(false);
|
||||
this.tabScript.ResumeLayout(false);
|
||||
this.tabControl2.ResumeLayout(false);
|
||||
this.tabFunctions.ResumeLayout(false);
|
||||
this.groupBox8.ResumeLayout(false);
|
||||
this.groupBox11.ResumeLayout(false);
|
||||
this.groupBox9.ResumeLayout(false);
|
||||
this.groupBox13.ResumeLayout(false);
|
||||
this.groupBox13.PerformLayout();
|
||||
this.groupBox12.ResumeLayout(false);
|
||||
this.groupBox5.ResumeLayout(false);
|
||||
this.groupBox7.ResumeLayout(false);
|
||||
this.groupBox10.ResumeLayout(false);
|
||||
this.groupBox6.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
@ -556,14 +450,6 @@
|
|||
private System.Windows.Forms.GroupBox groupBox8;
|
||||
private System.Windows.Forms.RichTextBox txtScript;
|
||||
private System.Windows.Forms.TabPage tabVariables;
|
||||
private System.Windows.Forms.GroupBox groupBox9;
|
||||
private System.Windows.Forms.GroupBox groupBox14;
|
||||
private System.Windows.Forms.GroupBox groupBox12;
|
||||
private System.Windows.Forms.ComboBox comReturnTypes;
|
||||
private System.Windows.Forms.GroupBox groupBox13;
|
||||
private System.Windows.Forms.TextBox txtFunctionName;
|
||||
private System.Windows.Forms.GroupBox groupBox11;
|
||||
private System.Windows.Forms.ComboBox comFunctions;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,25 +23,92 @@ namespace RoomDesigner
|
|||
//Doorway currently loaded.
|
||||
Door _CurrentDoor;
|
||||
|
||||
//Scripting engine and it's components.
|
||||
ManagedScripting.ScriptingEngine _ScriptEngine;
|
||||
ManagedScripting.CodeBuilding.ClassGenerator _CurrentClass;
|
||||
ManagedScripting.CodeBuilding.MethodSetup _CurrentCodeBlock;
|
||||
|
||||
//Collection of plugins from within the 'plugins' folder
|
||||
List<System.Reflection.Assembly> _Plugins;
|
||||
|
||||
public frmMain()
|
||||
public frmMain(params object[] parameters)
|
||||
{
|
||||
InitializeComponent();
|
||||
SetupEditor(parameters);
|
||||
}
|
||||
|
||||
private void SetupEditor(params object[] parameters)
|
||||
{
|
||||
//Initialize the Room & Doorway
|
||||
_CurrentRoom = new Room();
|
||||
_CurrentDoor = new Door(AvailableTravelDirections.None);
|
||||
|
||||
//Show the user(s) the rooms properties
|
||||
propertyRoom.SelectedObject = _CurrentRoom;
|
||||
|
||||
//This instances a copy of AvailableTravelDirections which is a list of
|
||||
//currently available directions users can travel within rooms.
|
||||
//Instead of updating the editor each time a new travel direction is implemented,
|
||||
//we simply build an array that contains each travel direction currently available
|
||||
//within the engine by getting each element from the AvailableTravelDirections enum
|
||||
BuildDoorwayList();
|
||||
|
||||
//Load all of our plugin .dll files. This is the only directory not generated by
|
||||
//the engine, developers will need to manually create the folder if they want to
|
||||
//create plugins
|
||||
LoadPlugins();
|
||||
|
||||
//Instance the scripting engine and set it up.
|
||||
_ScriptEngine = new ManagedScripting.ScriptingEngine();
|
||||
_ScriptEngine.Compiler = ManagedScripting.ScriptingEngine.CompilerSelections.SourceCompiler;
|
||||
_ScriptEngine.CompileStyle = ManagedScripting.Compilers.BaseCompiler.ScriptCompileStyle.CompileToMemory;
|
||||
_ScriptEngine.KeepTempFiles = false;
|
||||
|
||||
//Get the current rooms scripts.
|
||||
//TODO: Add Doorway script support
|
||||
SetupRoomScript();
|
||||
|
||||
if (parameters.Length != 0)
|
||||
{
|
||||
string rooms = Engine.GetDataPath(Engine.SaveDataTypes.Rooms);
|
||||
string filename = System.IO.Path.Combine(rooms, parameters[0].ToString());
|
||||
|
||||
//Room to load should always be the first arg.
|
||||
if (System.IO.File.Exists(filename))
|
||||
{
|
||||
_CurrentRoom = (Room)ManagedScripting.XmlSerialization.Load(filename, _CurrentRoom);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Show the user(s) the rooms properties
|
||||
propertyRoom.SelectedObject = _CurrentRoom;
|
||||
}
|
||||
|
||||
private void SetupRoomScript()
|
||||
{
|
||||
//Check if the rooms script is empty. If so then generate a standard script for it.
|
||||
if (String.IsNullOrEmpty(_CurrentRoom.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(_CurrentRoom.Script.Length, method.Create());
|
||||
}
|
||||
_CurrentRoom.Script = script;
|
||||
}
|
||||
}
|
||||
|
||||
private void BuildDoorwayList()
|
||||
{
|
||||
AvailableTravelDirections direction = new AvailableTravelDirections();
|
||||
|
||||
//Build an array of travel directions currently implemented
|
||||
|
@ -58,79 +125,6 @@ namespace RoomDesigner
|
|||
if (!Display.Equals("None"))
|
||||
this.lstDirections.Items.Add(Display);
|
||||
}
|
||||
|
||||
//Load all of our plugin .dll files. This is the only directory not generated by
|
||||
//the engine, developers will need to manually create the folder if they want to
|
||||
//create plugins
|
||||
LoadPlugins();
|
||||
|
||||
//Before we loop through the plugins list to build our combo box return values
|
||||
//we need to add the MUDEngine.dll to the list, so that it's objects can be
|
||||
//used as return values with the engines scripts.
|
||||
//We can use Assembly.Load("MUDEngine.dll") but that would load a 2nd copy
|
||||
//of the engine in memory, as RoomDesigner.exe already has it loaded in memory.
|
||||
//To prevent duplicate copies in memory, we will search every assembly currently
|
||||
//loaded by the application instead until we find our engine.
|
||||
|
||||
//Build an array of assemblies currently loaded in memory by RoomDesigner.exe
|
||||
System.Reflection.Assembly[] tempList = System.AppDomain.CurrentDomain.GetAssemblies();
|
||||
|
||||
//Loop through each assembly in the array and find the mud engine
|
||||
foreach (System.Reflection.Assembly a in tempList)
|
||||
{
|
||||
//Check the assemblies manifest name to see if it matches our mud engine name
|
||||
if (a.ManifestModule.Name.ToLower() == "mudengine.dll")
|
||||
{
|
||||
//Found the engine, add it to the plugins list so that we can
|
||||
//add it's BaseObject inherited classes to the Script tab's
|
||||
//Return Type combo box.
|
||||
_Plugins.Add(a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Loop through each plugin, and add it's objects to the return type
|
||||
//combo box, so scripts can inherit from them.
|
||||
foreach (System.Reflection.Assembly assembly in _Plugins)
|
||||
{
|
||||
//Loop through each time within this specific plugin assembly
|
||||
foreach (Type type in assembly.GetTypes())
|
||||
{
|
||||
//Check if the current Type inherits from BaseObject
|
||||
if (type.BaseType.Name == "BaseObject")
|
||||
{
|
||||
//Now that we know it inherits from BaseObject
|
||||
//we need to make sure that it is a useable class
|
||||
//or it's for internal use only. This can be set by
|
||||
//the developer using the UnusableAttribute attribute
|
||||
//on the class
|
||||
bool isUseable = true;
|
||||
foreach (object attribute in type.GetCustomAttributes(false))
|
||||
{
|
||||
//Check if the Type contains the UnsableAttribute attribute
|
||||
if (attribute is UnusableAttribute)
|
||||
{
|
||||
//It does, exit the loop and declare it unuseable
|
||||
isUseable = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//If the class does not contain the UnusableAttribute attribute
|
||||
//we can use it as a return value for our scripts.
|
||||
if (isUseable)
|
||||
{
|
||||
comReturnTypes.Items.Add(type.Name);
|
||||
}
|
||||
}
|
||||
}//foreach Type loop
|
||||
}//foreach Assembly loop
|
||||
|
||||
//Instance the scripting engine and set it up.
|
||||
_ScriptEngine = new ManagedScripting.ScriptingEngine();
|
||||
_ScriptEngine.Compiler = ManagedScripting.ScriptingEngine.CompilerSelections.SourceCompiler;
|
||||
_ScriptEngine.CompileStyle = ManagedScripting.Compilers.BaseCompiler.ScriptCompileStyle.CompileToMemory;
|
||||
_ScriptEngine.KeepTempFiles = false;
|
||||
}
|
||||
|
||||
private void LoadPlugins()
|
||||
|
@ -147,7 +141,6 @@ namespace RoomDesigner
|
|||
foreach (string assembly in System.IO.Directory.GetFiles(pluginPath, "*.dll"))
|
||||
{
|
||||
_Plugins.Add(System.Reflection.Assembly.LoadFile(assembly));
|
||||
|
||||
}
|
||||
|
||||
//TODO: Look for ways to allow Types to inherit from a Windows Control, and add each
|
||||
|
@ -274,15 +267,10 @@ namespace RoomDesigner
|
|||
//that the user has selected within the list box. If so then we
|
||||
//need to prompt the user to ensure it's ok to overwrite the previous
|
||||
//door with a new door.
|
||||
//TODO: Look at this closer, do i need this messagebox?
|
||||
foreach (Door newDoor in _CurrentRoom.InstalledDoors)
|
||||
{
|
||||
if (newDoor.TravelDirection == _CurrentDoor.TravelDirection)
|
||||
{
|
||||
/*DialogResult result = MessageBox.Show("Door already exists! Overwrite it?", "Room Designer", MessageBoxButtons.YesNo);
|
||||
if (result == DialogResult.No)
|
||||
return;
|
||||
*/
|
||||
_CurrentRoom.InstalledDoors.Remove(newDoor);
|
||||
_CurrentRoom.InstalledDoors.Add(_CurrentDoor);
|
||||
IsInstalled = true;
|
||||
|
@ -322,8 +310,41 @@ namespace RoomDesigner
|
|||
|
||||
_CurrentRoom = new Room();
|
||||
_CurrentDoor = new Door(AvailableTravelDirections.None);
|
||||
_CurrentClass = new ManagedScripting.CodeBuilding.ClassGenerator();
|
||||
_CurrentCodeBlock = new ManagedScripting.CodeBuilding.MethodSetup();
|
||||
|
||||
propertyDoor.SelectedObject = null;
|
||||
propertyRoom.SelectedObject = _CurrentRoom;
|
||||
}
|
||||
|
||||
private void btnSaveRoom_Click(object sender, EventArgs e)
|
||||
{
|
||||
string savePath = Engine.GetDataPath(Engine.SaveDataTypes.Rooms);
|
||||
string filePath = System.IO.Path.Combine(savePath, _CurrentRoom.Name + ".room");
|
||||
|
||||
if (System.IO.File.Exists(filePath))
|
||||
{
|
||||
DialogResult result = MessageBox.Show("File exists! Overwrite?", "Room Designer", MessageBoxButtons.YesNo);
|
||||
|
||||
if (result == DialogResult.No)
|
||||
return;
|
||||
}
|
||||
|
||||
ManagedScripting.XmlSerialization.Save(filePath, _CurrentRoom);
|
||||
MessageBox.Show("Saved.", "Room Designer");
|
||||
}
|
||||
|
||||
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (tabControl1.SelectedTab.Text == "Script")
|
||||
{
|
||||
txtScript.Text = _CurrentRoom.Script;
|
||||
}
|
||||
}
|
||||
|
||||
private void propertyRoom_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//propertyRoom.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace VisualDesigner
|
|||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
MUDEngine.Engine.ValidateProjectPath(Application.StartupPath);
|
||||
MUDEngine.Engine.ValidateDataPaths();
|
||||
MUDEngine.FileSystem.FileSystem.FileType = MUDEngine.FileSystem.FileSystem.OutputFormats.XML;
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue