Mud Designer:
- Removed from solution Mud Engine: - Moved the CommandEngine, CommandResults and ICommand Interface out from the Commands namespace and into GameManagement since they manage the game commands. - Added CommandExit class to provide the ability to exit a game once running. This is fully implemented. - Realms, Zones and Rooms now have an IsInitial property for determining if this is an initial location for the Game. - Renamed GameSetup to Game. - Corrected GameObject being in the incorrect namespace. - Corrected the ScriptEngine not - CommandEngine no longer needs a Name argument. Arguments changed from 5 to 4 due to this change. Mud Game: - Added Example Game used for testing various MUDEngine features and testing constructability of games using the engine. - Currently only contains 1 Realm, 1 Zone and Two Rooms. Only working command is Exit.
This commit is contained in:
parent
06266b7245
commit
b8f6be12c0
16 changed files with 374 additions and 40 deletions
71
MUDGame/Environments/Zeroth.cs
Normal file
71
MUDGame/Environments/Zeroth.cs
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using MudEngine.GameManagement;
|
||||||
|
using MudEngine.GameObjects.Environment;
|
||||||
|
|
||||||
|
namespace MUDGame.Environments
|
||||||
|
{
|
||||||
|
class Zeroth
|
||||||
|
{
|
||||||
|
internal Realm BuildZeroth()
|
||||||
|
{
|
||||||
|
Realm realm = new Realm();
|
||||||
|
realm.Name = "Zeroth";
|
||||||
|
realm.Description = "The land of " + realm.Name + " is fully of large forests and dangerous creatures.";
|
||||||
|
realm.IsInitialRealm = true;
|
||||||
|
|
||||||
|
//Build Zones
|
||||||
|
Zone zone = new Zone();
|
||||||
|
zone.Name = "Home";
|
||||||
|
zone.Description = "Your home is small and does not contain many items, but it's still your home and someplace you can relax after your battles.";
|
||||||
|
zone.IsSafe = true;
|
||||||
|
zone.StatDrain = false;
|
||||||
|
zone.IsStartingZone = true;
|
||||||
|
|
||||||
|
//Build Rooms.
|
||||||
|
BuildHome(zone, realm);
|
||||||
|
|
||||||
|
zone.Realm = realm.Name;
|
||||||
|
//TODO: Remove this, as Zones and Rooms contain .IsStarting properties now.
|
||||||
|
zone.EntranceRoom = "Bedroom";
|
||||||
|
realm.Zones.Add(zone);
|
||||||
|
|
||||||
|
return realm;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BuildHome(Zone zone, Realm realm)
|
||||||
|
{
|
||||||
|
Room bedroom = new Room();
|
||||||
|
bedroom.Name = "Bedroom";
|
||||||
|
bedroom.Description = "This is your bedroom, it's small but comfortable. You have a bed, a book shelf and a rug on the floor.";
|
||||||
|
bedroom.Zone = zone.Name;
|
||||||
|
bedroom.Realm = realm.Name;
|
||||||
|
bedroom.IsStartingRoom = true;
|
||||||
|
|
||||||
|
Room closet = new Room();
|
||||||
|
closet.Name = "Closet";
|
||||||
|
closet.Description = "Your closet contains clothing and some shoes.";
|
||||||
|
closet.Zone = zone.Name;
|
||||||
|
closet.Realm = realm.Name;
|
||||||
|
|
||||||
|
Door door = new Door();
|
||||||
|
door.TravelDirection = MudEngine.GameObjects.AvailableTravelDirections.West;
|
||||||
|
door.ConnectedRoom = "Closet";
|
||||||
|
door.Description = "To the West is your Closet.";
|
||||||
|
bedroom.Doorways.Add(door);
|
||||||
|
|
||||||
|
door = new Door();
|
||||||
|
door.TravelDirection = MudEngine.GameObjects.AvailableTravelDirections.East;
|
||||||
|
door.ConnectedRoom = "Bedroom";
|
||||||
|
door.Description = "To the East is your Bedroom.";
|
||||||
|
closet.Doorways.Add(door);
|
||||||
|
|
||||||
|
//Todo: Should work once MUDEngine supports Types
|
||||||
|
zone.Rooms.Add(bedroom);
|
||||||
|
zone.Rooms.Add(closet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
66
MUDGame/MUDGame.csproj
Normal file
66
MUDGame/MUDGame.csproj
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
|
<ProjectGuid>{048E755C-DD05-47EC-930E-F45146B66F7C}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>MUDGame</RootNamespace>
|
||||||
|
<AssemblyName>MUDGame</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml.Linq">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Data.DataSetExtensions">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Environments\Zeroth.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\MudEngine\MudEngine.csproj">
|
||||||
|
<Project>{498943A8-DF5A-4DB0-B506-0BFF44788657}</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.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
78
MUDGame/Program.cs
Normal file
78
MUDGame/Program.cs
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using MUDGame.Environments;
|
||||||
|
|
||||||
|
namespace MUDGame
|
||||||
|
{
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
//Setup our Fields
|
||||||
|
static MudEngine.GameManagement.Game game;
|
||||||
|
static MudEngine.GameManagement.CommandEngine commands;
|
||||||
|
static MudEngine.GameObjects.Characters.Controlled.PlayerBasic player;
|
||||||
|
|
||||||
|
static List<MudEngine.GameObjects.Environment.Realm> realmCollection;
|
||||||
|
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
//Initialize them
|
||||||
|
game = new MudEngine.GameManagement.Game();
|
||||||
|
commands = new MudEngine.GameManagement.CommandEngine();
|
||||||
|
realmCollection = new List<MudEngine.GameObjects.Environment.Realm>();
|
||||||
|
|
||||||
|
//Setup the game
|
||||||
|
game.AutoSave = true;
|
||||||
|
game.BaseCurrencyName = "Copper";
|
||||||
|
game.BaseCurrencyAmount = 1;
|
||||||
|
game.CompanyName = "Mud Designer";
|
||||||
|
game.DayLength = 60 * 8;
|
||||||
|
game.GameTitle = "Test Mud Project";
|
||||||
|
game.HideRoomNames = false;
|
||||||
|
game.PreCacheObjects = true;
|
||||||
|
game.ProjectPath = MudEngine.FileSystem.FileManager.GetDataPath(MudEngine.FileSystem.SaveDataTypes.Root);
|
||||||
|
game.TimeOfDay = MudEngine.GameManagement.Game.TimeOfDayOptions.Transition;
|
||||||
|
game.TimeOfDayTransition = 30;
|
||||||
|
game.Version = "0.1";
|
||||||
|
game.Website = "http://MudDesigner.Codeplex.com";
|
||||||
|
|
||||||
|
//Create the world
|
||||||
|
BuildRealms();
|
||||||
|
|
||||||
|
//Setup our starting location
|
||||||
|
foreach (MudEngine.GameObjects.Environment.Realm realm in realmCollection)
|
||||||
|
{
|
||||||
|
if (realm.IsInitialRealm)
|
||||||
|
{
|
||||||
|
game.SetInitialRealm(realm);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (game.InitialRealm == null)
|
||||||
|
Console.WriteLine("Critical Error: No Initial Realm defined!");
|
||||||
|
|
||||||
|
//Start the game.
|
||||||
|
MudEngine.GameManagement.CommandEngine.LoadAllCommands();
|
||||||
|
game.IsRunning = true;
|
||||||
|
|
||||||
|
while (game.IsRunning)
|
||||||
|
{
|
||||||
|
Console.Write("Command: ");
|
||||||
|
string command = Console.ReadLine();
|
||||||
|
|
||||||
|
MudEngine.GameManagement.CommandEngine.ExecuteCommand(command, player, game, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine("Press Enter to exit.");
|
||||||
|
Console.ReadKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
static private void BuildRealms()
|
||||||
|
{
|
||||||
|
Zeroth zeroth = new Zeroth();
|
||||||
|
realmCollection.Add(zeroth.BuildZeroth());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
MUDGame/Properties/AssemblyInfo.cs
Normal file
36
MUDGame/Properties/AssemblyInfo.cs
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("MUDGame")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("MUDGame")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2010")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("f8209c47-d989-49af-8264-be5064784104")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -1,24 +1,24 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||||
# Visual C# Express 2008
|
# Visual C# Express 2008
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mud Designer", "Mud Designer\Mud Designer.csproj", "{F0C50EA1-80F7-4CE6-93A3-A4E9F34F0434}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudEngine", "MudEngine\MudEngine.csproj", "{498943A8-DF5A-4DB0-B506-0BFF44788657}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MudEngine", "MudEngine\MudEngine.csproj", "{498943A8-DF5A-4DB0-B506-0BFF44788657}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MUDGame", "MUDGame\MUDGame.csproj", "{048E755C-DD05-47EC-930E-F45146B66F7C}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{F0C50EA1-80F7-4CE6-93A3-A4E9F34F0434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{F0C50EA1-80F7-4CE6-93A3-A4E9F34F0434}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{F0C50EA1-80F7-4CE6-93A3-A4E9F34F0434}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{F0C50EA1-80F7-4CE6-93A3-A4E9F34F0434}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Release|Any CPU.Build.0 = Release|Any CPU
|
{498943A8-DF5A-4DB0-B506-0BFF44788657}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{048E755C-DD05-47EC-930E-F45146B66F7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{048E755C-DD05-47EC-930E-F45146B66F7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{048E755C-DD05-47EC-930E-F45146B66F7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{048E755C-DD05-47EC-930E-F45146B66F7C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
25
MudEngine/Commands/CommandExit.cs
Normal file
25
MudEngine/Commands/CommandExit.cs
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using MudEngine.GameObjects.Characters;
|
||||||
|
using MudEngine.GameManagement;
|
||||||
|
using MudEngine.Commands;
|
||||||
|
using MudEngine.GameObjects.Environment;
|
||||||
|
|
||||||
|
namespace MudEngine.Commands
|
||||||
|
{
|
||||||
|
public class CommandExit : IGameCommand
|
||||||
|
{
|
||||||
|
public bool Override { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public CommandResults Execute(string command, BaseCharacter player, Game game, Room room)
|
||||||
|
{
|
||||||
|
game.IsRunning = false;
|
||||||
|
|
||||||
|
return new CommandResults();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ using MudEngine.GameObjects.Characters;
|
||||||
using MudEngine.GameObjects.Environment;
|
using MudEngine.GameObjects.Environment;
|
||||||
using MudEngine.GameManagement;
|
using MudEngine.GameManagement;
|
||||||
|
|
||||||
namespace MudEngine.Commands
|
namespace MudEngine.GameManagement
|
||||||
{
|
{
|
||||||
public class CommandEngine
|
public class CommandEngine
|
||||||
{
|
{
|
||||||
|
@ -46,14 +46,14 @@ namespace MudEngine.Commands
|
||||||
/// <param name="Name"></param>
|
/// <param name="Name"></param>
|
||||||
/// <param name="Parameter"></param>
|
/// <param name="Parameter"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static CommandResults ExecuteCommand(string Name, BaseCharacter player, GameSetup project, Room room, string command)
|
public static CommandResults ExecuteCommand(string command, BaseCharacter player, Game project, Room room)
|
||||||
{
|
{
|
||||||
Name = Name.Insert(0, "Command");
|
string commandKey = command.Insert(0, "Command");
|
||||||
foreach (string key in Commands.Keys)
|
foreach (string key in Commands.Keys)
|
||||||
{
|
{
|
||||||
if (Name.ToLower().Contains(key.ToLower()))
|
if (commandKey.ToLower().Contains(key.ToLower()))
|
||||||
{
|
{
|
||||||
return Commands[key.ToLower()].Execute(player, project, room, command);
|
return Commands[key.ToLower()].Execute(command, player, project, room);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace MudEngine.Commands
|
namespace MudEngine.GameManagement
|
||||||
{
|
{
|
||||||
public class CommandResults
|
public class CommandResults
|
||||||
{
|
{
|
|
@ -20,7 +20,7 @@ namespace MudEngine.GameManagement
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[XmlInclude(typeof(StartingLocation))]
|
[XmlInclude(typeof(StartingLocation))]
|
||||||
[XmlInclude(typeof(Currency))]
|
[XmlInclude(typeof(Currency))]
|
||||||
public class GameSetup
|
public class Game
|
||||||
{
|
{
|
||||||
public enum TimeOfDayOptions
|
public enum TimeOfDayOptions
|
||||||
{
|
{
|
||||||
|
@ -29,6 +29,13 @@ namespace MudEngine.GameManagement
|
||||||
Transition,
|
Transition,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public bool IsRunning
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
[Category("Company Settings")]
|
[Category("Company Settings")]
|
||||||
[Description("The name of the Company or Author building the game.")]
|
[Description("The name of the Company or Author building the game.")]
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -61,6 +68,9 @@ namespace MudEngine.GameManagement
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HideRoomNames { get; set; }
|
public bool HideRoomNames { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets what time of day the world is currently in.
|
||||||
|
/// </summary>
|
||||||
[Category("Day Management")]
|
[Category("Day Management")]
|
||||||
[Description("Set what time of day the world will take place in.")]
|
[Description("Set what time of day the world will take place in.")]
|
||||||
public TimeOfDayOptions TimeOfDay
|
public TimeOfDayOptions TimeOfDay
|
||||||
|
@ -69,6 +79,9 @@ namespace MudEngine.GameManagement
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets how long in minutes it takes to transition from day to night.
|
||||||
|
/// </summary>
|
||||||
[Category("Day Management")]
|
[Category("Day Management")]
|
||||||
[Description("Set how long in minutes it takes to transition from day to night.")]
|
[Description("Set how long in minutes it takes to transition from day to night.")]
|
||||||
public int TimeOfDayTransition
|
public int TimeOfDayTransition
|
||||||
|
@ -77,6 +90,9 @@ namespace MudEngine.GameManagement
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets how long in minutes a day lasts in the game world.
|
||||||
|
/// </summary>
|
||||||
[Category("Day Management")]
|
[Category("Day Management")]
|
||||||
[Description("Sets how long in minutes a day lasts in the game world.")]
|
[Description("Sets how long in minutes a day lasts in the game world.")]
|
||||||
public int DayLength
|
public int DayLength
|
||||||
|
@ -85,6 +101,9 @@ namespace MudEngine.GameManagement
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets the current working version of the game.
|
||||||
|
/// </summary>
|
||||||
[Category("Project Settings")]
|
[Category("Project Settings")]
|
||||||
[Description("The current working version of the game.")]
|
[Description("The current working version of the game.")]
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
|
@ -99,9 +118,11 @@ namespace MudEngine.GameManagement
|
||||||
[DefaultValue("Copper")]
|
[DefaultValue("Copper")]
|
||||||
public string BaseCurrencyName { get; set; }
|
public string BaseCurrencyName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO: Add Party support.
|
//TODO: Add Party support.
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets if all objects will be laoded during server startup. Enabling this results in a slower server start time, but faster object access.
|
||||||
|
/// </summary>
|
||||||
[Category("Project Settings")]
|
[Category("Project Settings")]
|
||||||
[Description("If enabled, all objects will be loaded during server startup resulting in a slower server start time, but faster load time during gameplay")]
|
[Description("If enabled, all objects will be loaded during server startup resulting in a slower server start time, but faster load time during gameplay")]
|
||||||
public bool PreCacheObjects { get; set; }
|
public bool PreCacheObjects { get; set; }
|
||||||
|
@ -109,12 +130,19 @@ namespace MudEngine.GameManagement
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public List<Currency> CurrencyList { get; set; }
|
public List<Currency> CurrencyList { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets the path to the current project
|
||||||
|
/// </summary>
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public string ProjectPath { get; set; }
|
public string ProjectPath { get; set; }
|
||||||
|
|
||||||
[Category("Environment Settings")]
|
[Category("Environment Settings")]
|
||||||
[ReadOnly(true)]
|
[ReadOnly(true)]
|
||||||
public StartingLocation InitialLocation { get; set; }
|
public Realm InitialRealm
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
}
|
||||||
|
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public string Story
|
public string Story
|
||||||
|
@ -133,14 +161,13 @@ namespace MudEngine.GameManagement
|
||||||
}
|
}
|
||||||
private string _Filename;
|
private string _Filename;
|
||||||
|
|
||||||
public GameSetup()
|
public Game()
|
||||||
{
|
{
|
||||||
CurrencyList = new List<Currency>();
|
CurrencyList = new List<Currency>();
|
||||||
GameTitle = "New Game";
|
GameTitle = "New Game";
|
||||||
_Filename = "Game.xml";
|
_Filename = "Game.xml";
|
||||||
BaseCurrencyAmount = 1;
|
BaseCurrencyAmount = 1;
|
||||||
BaseCurrencyName = "Copper";
|
BaseCurrencyName = "Copper";
|
||||||
InitialLocation = new StartingLocation();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Save(string filename)
|
public void Save(string filename)
|
||||||
|
@ -163,5 +190,10 @@ namespace MudEngine.GameManagement
|
||||||
|
|
||||||
return FileManager.Load(fileName, this);
|
return FileManager.Load(fileName, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetInitialRealm(Realm realm)
|
||||||
|
{
|
||||||
|
InitialRealm = realm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@ using MudEngine.GameObjects.Characters;
|
||||||
using MudEngine.GameManagement;
|
using MudEngine.GameManagement;
|
||||||
using MudEngine.GameObjects.Environment;
|
using MudEngine.GameObjects.Environment;
|
||||||
|
|
||||||
namespace MudEngine.Commands
|
namespace MudEngine.GameManagement
|
||||||
{
|
{
|
||||||
public interface IGameCommand
|
public interface IGameCommand
|
||||||
{
|
{
|
||||||
|
@ -19,6 +19,6 @@ namespace MudEngine.Commands
|
||||||
//Used to override commands with the same name
|
//Used to override commands with the same name
|
||||||
bool Override { get; set; }
|
bool Override { get; set; }
|
||||||
//Executes the command.
|
//Executes the command.
|
||||||
CommandResults Execute(BaseCharacter player, GameSetup project, Room room, string command);
|
CommandResults Execute(string command, BaseCharacter player, Game project, Room room);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,11 +18,13 @@ namespace MudEngine.GameObjects.Environment
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
[Description("A collection of Zones that are contained within this Realm. Players can traverse the world be traveling through Rooms that are contained within Zones. Note that it is not required to place a Zone into a Realm.")]
|
[Description("A collection of Zones that are contained within this Realm. Players can traverse the world be traveling through Rooms that are contained within Zones. Note that it is not required to place a Zone into a Realm.")]
|
||||||
//[EditorAttribute(typeof(UIRealmEditor), typeof(System.Drawing.Design.UITypeEditor))]
|
//[EditorAttribute(typeof(UIRealmEditor), typeof(System.Drawing.Design.UITypeEditor))]
|
||||||
public List<string> Zones { get; set; }
|
public List<Zone> Zones { get; set; }
|
||||||
|
|
||||||
|
public bool IsInitialRealm { get; set; }
|
||||||
|
|
||||||
public Realm()
|
public Realm()
|
||||||
{
|
{
|
||||||
Zones = new List<string>();
|
Zones = new List<Zone>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -34,12 +36,12 @@ namespace MudEngine.GameObjects.Environment
|
||||||
{
|
{
|
||||||
var filterQuery =
|
var filterQuery =
|
||||||
from zone in Zones
|
from zone in Zones
|
||||||
where zone == filename
|
where zone.Filename == filename
|
||||||
select zone;
|
select zone;
|
||||||
|
|
||||||
Zone z = new Zone();
|
Zone z = new Zone();
|
||||||
foreach (var zone in filterQuery)
|
foreach (var zone in filterQuery)
|
||||||
return (Zone)z.Load(zone);
|
return (Zone)z.Load(zone.Filename);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,17 @@ namespace MudEngine.GameObjects.Environment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets if this is the starting room for the Zone that contains it.
|
||||||
|
/// </summary>
|
||||||
|
[Browsable(true)]
|
||||||
|
[Description("Sets if this is the starting room for the Zone that contains it.")]
|
||||||
|
public bool IsStartingRoom
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
public Room()
|
public Room()
|
||||||
{
|
{
|
||||||
Doorways = new List<Door>();
|
Doorways = new List<Door>();
|
||||||
|
|
|
@ -52,17 +52,29 @@ namespace MudEngine.GameObjects.Environment
|
||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or Sets the ability for this Zone to be the initial starting Zone for the game.
|
||||||
|
/// </summary>
|
||||||
|
[Category("Environment Information")]
|
||||||
|
[Description("Sets that this Zone is a starting Zone for the game.")]
|
||||||
|
[DefaultValue(false)]
|
||||||
|
public bool IsStartingZone
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
//[EditorAttribute(typeof(UIRoomEditor), typeof(UITypeEditor))]
|
//[EditorAttribute(typeof(UIRoomEditor), typeof(UITypeEditor))]
|
||||||
[Description("Collection of Rooms that have been created. Editing the Rooms Collection lets you manage the Zones rooms.")]
|
[Description("Collection of Rooms that have been created. Editing the Rooms Collection lets you manage the Zones rooms.")]
|
||||||
public List<string> Rooms { get; set; }
|
public List<Room> Rooms { get; set; }
|
||||||
|
|
||||||
[Category("Environment Information")]
|
[Category("Environment Information")]
|
||||||
public string EntranceRoom { get; set; }
|
public string EntranceRoom { get; set; }
|
||||||
|
|
||||||
public Zone()
|
public Zone()
|
||||||
{
|
{
|
||||||
Rooms = new List<string>();
|
Rooms = new List<Room>();
|
||||||
IsSafe = false;
|
IsSafe = false;
|
||||||
Realm = "No Realm Associated.";
|
Realm = "No Realm Associated.";
|
||||||
}
|
}
|
||||||
|
@ -76,13 +88,13 @@ namespace MudEngine.GameObjects.Environment
|
||||||
{
|
{
|
||||||
var filterQuery =
|
var filterQuery =
|
||||||
from room in Rooms
|
from room in Rooms
|
||||||
where room == name
|
where room.Name == name
|
||||||
select room;
|
select room;
|
||||||
|
|
||||||
foreach (string room in filterQuery)
|
foreach (Room room in filterQuery)
|
||||||
{
|
{
|
||||||
Room r = new Room();
|
Room r = new Room();
|
||||||
return (Room)r.Load(room, this.Name);
|
return (Room)r.Load(room.Name, this.Name);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -94,7 +106,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void RebuildRoomCollection()
|
public void RebuildRoomCollection()
|
||||||
{
|
{
|
||||||
Rooms = new List<string>();
|
Rooms = new List<Room>();
|
||||||
//Create our collection of Rooms.
|
//Create our collection of Rooms.
|
||||||
string realmPath = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Realms), this.Realm);
|
string realmPath = Path.Combine(FileManager.GetDataPath(SaveDataTypes.Realms), this.Realm);
|
||||||
string zonePath = Path.Combine(realmPath, this.Name);
|
string zonePath = Path.Combine(realmPath, this.Name);
|
||||||
|
@ -114,7 +126,7 @@ namespace MudEngine.GameObjects.Environment
|
||||||
Room r = new Room();
|
Room r = new Room();
|
||||||
r = (Room)r.Load(Path.GetFileNameWithoutExtension(file));
|
r = (Room)r.Load(Path.GetFileNameWithoutExtension(file));
|
||||||
//r = (Room)FileManager.Load(file, r);
|
//r = (Room)FileManager.Load(file, r);
|
||||||
this.Rooms.Add(r.Name);
|
this.Rooms.Add(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Save the re-built Room collection
|
//Save the re-built Room collection
|
||||||
|
|
|
@ -45,13 +45,14 @@
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Commands\CommandEngine.cs" />
|
<Compile Include="Commands\CommandExit.cs" />
|
||||||
<Compile Include="Commands\CommandResults.cs" />
|
<Compile Include="GameManagement\CommandEngine.cs" />
|
||||||
<Compile Include="Commands\ICommand.cs" />
|
<Compile Include="GameManagement\CommandResults.cs" />
|
||||||
|
<Compile Include="GameManagement\ICommand.cs" />
|
||||||
<Compile Include="FileSystem\FileManager.cs" />
|
<Compile Include="FileSystem\FileManager.cs" />
|
||||||
<Compile Include="FileSystem\SaveDataTypes.cs" />
|
<Compile Include="FileSystem\SaveDataTypes.cs" />
|
||||||
<Compile Include="FileSystem\XmlSerialization.cs" />
|
<Compile Include="FileSystem\XmlSerialization.cs" />
|
||||||
<Compile Include="GameManagement\GameSetup.cs" />
|
<Compile Include="GameManagement\Game.cs" />
|
||||||
<Compile Include="GameObjects\Bag.cs" />
|
<Compile Include="GameObjects\Bag.cs" />
|
||||||
<Compile Include="GameObjects\BaseObject.cs" />
|
<Compile Include="GameObjects\BaseObject.cs" />
|
||||||
<Compile Include="GameObjects\Characters\BaseCharacter.cs" />
|
<Compile Include="GameObjects\Characters\BaseCharacter.cs" />
|
||||||
|
|
|
@ -4,7 +4,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
using BlitScript;
|
using MudEngine.Scripting;
|
||||||
|
|
||||||
namespace MudEngine.Scripting
|
namespace MudEngine.Scripting
|
||||||
{
|
{
|
||||||
|
@ -47,12 +47,12 @@ namespace MudEngine.Scripting
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Dynamic Type Instancing isn't supported in .NET 3.5
|
||||||
public dynamic SetProperty()
|
public dynamic SetProperty()
|
||||||
{
|
{
|
||||||
return Instance;
|
return Instance;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
public object GetProperty(string propertyName)
|
public object GetProperty(string propertyName)
|
||||||
{
|
{
|
||||||
string[] tokens = propertyName.Split('.');
|
string[] tokens = propertyName.Split('.');
|
||||||
|
|
|
@ -130,7 +130,7 @@ namespace MudEngine.Scripting
|
||||||
/// Initializes the script engine, loading the compiled scripts into memory
|
/// Initializes the script engine, loading the compiled scripts into memory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scriptAssembly"></param>
|
/// <param name="scriptAssembly"></param>
|
||||||
public override void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
if (_ScriptTypes == ScriptTypes.Assembly)
|
if (_ScriptTypes == ScriptTypes.Assembly)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue