muddesigner/Mud Designer/Runtime.cs
Scionwest_cp d40b8690d5 - Migrated additional content from MudDesigner solution to MudEngine.
- Updated MudDesigner to reference the new MudEngine solution.
- MudDesigner currently references engine classes within it's own solution and the MudEngine solution. This will be addressed soon. All classes related to the engine will be moved to the MudEngine project.
- Began prepping for the removal of all UITypeEditor classes and the namespace from the MudDesigner project.

Please note that while this version will compile, it is currently broken. Projects do not get created correctly due to the migration I'm performing. The designer is given less priority at the moment as the engine is the primary focus. Projects will need to be hard-coded using the MudEngine library until the designer is fixed.
2010-07-15 20:21:56 -07:00

173 lines
5.4 KiB
C#

//Microsoft .NET Framework
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//MUD Designer
using MudEngine.Commands;
using MudEngine.FileSystem;
using MudEngine.GameManagement;
using MudEngine.GameObjects;
using MudEngine.GameObjects.Characters;
using MudEngine.GameObjects.Characters.Controlled;
//using MudEngine.GameObjects.Characters.NPC;
using MudEngine.GameObjects.Environment;
using MudEngine.GameObjects.Items;
namespace MudDesigner
{
public partial class Runtime : Form
{
PlayerBasic _Player;
Room _Room;
GameSetup _Project;
public Runtime()
{
InitializeComponent();
_Player = new PlayerBasic();
_Project = new GameSetup();
_Room = new Room();
}
public void ExecuteCommand(string command)
{
CommandResults result = CommandEngine.ExecuteCommand(command, _Player, _Project, _Room, command);
if (result.Result == null)
return;
foreach (object obj in result.Result)
{
switch (obj.GetType().Name.ToLower())
{
case "string":
Print(obj.ToString());
break;
case "room":
_Room = (Room)obj;
break;
case "projectinformation":
_Project = (GameSetup)obj;
break;
case "playerbasic":
_Player = (PlayerBasic)obj;
break;
}
}
txtCommand.Clear();
}
public void Print(string message)
{
if (string.IsNullOrEmpty(message))
return;
txtConsole.Text += message + "\n";
txtConsole.Select(txtConsole.Text.Length - 1, 0);
}
public void Print(bool newLine)
{
txtCommand.Text += "\n";
txtConsole.Select(txtConsole.Text.Length - 1, 0);
}
private void Runtime_Load(object sender, EventArgs e)
{
Print("Loading project information...");
if (!File.Exists(FileManager.GetDataPath(SaveDataTypes.Root) + "\\Game.xml"))
{
Print("Failed Loading Project Information... Runtime failed to initialize.");
return;
}
_Project = (GameSetup)_Project.Load(FileManager.GetDataPath(SaveDataTypes.Root));
if (_Project.InitialLocation.Zone == null && _Project.InitialLocation.Zone == "")
{
Print("No Initial Zone was defined within the Project Information. Please associated a Zone to the Projects Initial Zone setting in order to launch the game.");
return;
}
Print("Loading environment...");
_Room = (Room)_Room.Load(_Project.InitialLocation.Room, _Project.InitialLocation.Zone);
Print("Prepping test player...");
_Player.CurrentRoom = _Room;
Print("Loading Game Commands...");
CommandEngine.LoadAllCommands();
Print("Startup Complete.");
Print(true); //blank line
txtCommand.Select();
if (string.IsNullOrEmpty(_Project.CompanyName))
Print("No company name defined for the project!");
else
Print("Created by " + _Project.CompanyName);
if (string.IsNullOrEmpty(_Project.Website))
Print("No website defined for the project!");
else
Print("Visit us at " + _Project.Website);
if (string.IsNullOrEmpty(_Project.GameTitle))
Print("No Game Title defiend for the project!");
else
Print(_Project.GameTitle);
if (string.IsNullOrEmpty(_Project.Version))
Print("Game Version was not specified.");
else
Print(_Project.Version);
if (string.IsNullOrEmpty(_Project.Story))
Print("The games startup story has not been created yet!");
else
Print(_Project.Story);
Print(true);//blank line
ExecuteCommand("Look");
}
private void txtCommand_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
ExecuteCommand(txtCommand.Text);
}
}
private void btnNorth_Click(object sender, EventArgs e)
{
ExecuteCommand("Walk North");
}
private void btnSouth_Click(object sender, EventArgs e)
{
ExecuteCommand("Walk South");
}
private void btnWest_Click(object sender, EventArgs e)
{
ExecuteCommand("Walk West");
}
private void btnEast_Click(object sender, EventArgs e)
{
ExecuteCommand("Walk East");
}
private void btnLook_Click(object sender, EventArgs e)
{
ExecuteCommand("Look");
}
}
}