MudEngine:

- Deleted GameObjects.Characters.Controlled and GameObjects.Characters.NPC namespaces.
 - Deleted PlayerBasic & PlayerAdmin classes.
 - BaseCharacter now contains IsAdmin property for providing admin privileges to users.
 - BaseCharacter now contains IsControlled property for setting user control or AI controlled
 - Added startup.dat - This will supply information to the engine as to what Types will be used during runtime. Allowing for custom Types via scripts to be instanced and used (such as a custom player class rather than the default one).
This commit is contained in:
Scionwest_cp 2010-07-25 11:04:32 -07:00
parent 1a4655c30e
commit 0587b4a475
10 changed files with 38 additions and 44 deletions

View file

@ -4,7 +4,6 @@ using System.Linq;
using System.Text; using System.Text;
using MudEngine.GameObjects.Characters; using MudEngine.GameObjects.Characters;
using MudEngine.GameObjects.Characters.Controlled;
using MudEngine.FileSystem; using MudEngine.FileSystem;
using MudEngine.Commands; using MudEngine.Commands;
using MudEngine.GameManagement; using MudEngine.GameManagement;

View file

@ -9,7 +9,6 @@ using System.Net.Sockets;
//MUD Engine //MUD Engine
using MudEngine.GameObjects.Characters; using MudEngine.GameObjects.Characters;
using MudEngine.GameObjects.Characters.Controlled;
using MudEngine.GameManagement; using MudEngine.GameManagement;
using MudEngine.GameObjects.Environment; using MudEngine.GameObjects.Environment;
using MudEngine.GameObjects; using MudEngine.GameObjects;
@ -24,7 +23,7 @@ namespace MudEngine.Commands
public CommandResults Execute(string command, BaseCharacter player, Game project, Room room) public CommandResults Execute(string command, BaseCharacter player, Game project, Room room)
{ {
if (player is PlayerAdmin) if (player.IsAdmin)
{ {
for (int i = 0; i < project.PlayerCollection.Count; i++) for (int i = 0; i < project.PlayerCollection.Count; i++)
project.PlayerCollection[i].Save(project.PlayerCollection[i].Name + ".dat"); project.PlayerCollection[i].Save(project.PlayerCollection[i].Name + ".dat");

View file

@ -14,8 +14,8 @@ using System.Reflection;
//MUD Engine //MUD Engine
using MudEngine.FileSystem; using MudEngine.FileSystem;
using MudEngine.GameObjects; using MudEngine.GameObjects;
using MudEngine.GameObjects.Characters;
using MudEngine.GameObjects.Environment; using MudEngine.GameObjects.Environment;
using MudEngine.GameObjects.Characters.Controlled;
namespace MudEngine.GameManagement namespace MudEngine.GameManagement
{ {
@ -172,6 +172,9 @@ namespace MudEngine.GameManagement
_Filename = "Game.xml"; _Filename = "Game.xml";
BaseCurrencyAmount = 1; BaseCurrencyAmount = 1;
BaseCurrencyName = "Copper"; BaseCurrencyName = "Copper";
scriptEngine.Initialize();
//Get the new
} }
/// <summary> /// <summary>
@ -196,7 +199,7 @@ namespace MudEngine.GameManagement
{ {
Scripting.GameObject obj = new Scripting.GameObject(); Scripting.GameObject obj = new Scripting.GameObject();
obj = scriptEngine.GetObject(t.Name); obj = scriptEngine.GetObject(t.Name);
PlayerCollection.Add((PlayerBasic)obj.Instance); PlayerCollection.Add((BaseCharacter)obj.Instance);
} }
} }
} }
@ -229,7 +232,7 @@ namespace MudEngine.GameManagement
} }
public List<PlayerBasic> PlayerCollection; public List<BaseCharacter> PlayerCollection;
public MudEngine.Networking.Server server = new MudEngine.Networking.Server(); public MudEngine.Networking.Server server = new MudEngine.Networking.Server();
public ProtocolType ServerType = ProtocolType.Tcp; public ProtocolType ServerType = ProtocolType.Tcp;

View file

@ -16,8 +16,21 @@ namespace MudEngine.GameObjects.Characters
{ {
public class BaseCharacter : BaseObject public class BaseCharacter : BaseObject
{ {
/// <summary>
/// The current Room this Character is located at.
/// </summary>
public Room CurrentRoom { get; set; } public Room CurrentRoom { get; set; }
/// <summary>
/// Gets or Sets if this Character is controlled by the user. If not user controlled then it will be AI controlled.
/// </summary>
public Boolean IsControlled { get; set; }
/// <summary>
/// Gets or Sets if this user has Admin privileges or not.
/// </summary>
public Boolean IsAdmin { get; private set; }
public virtual void OnTravel(AvailableTravelDirections travelDirection) public virtual void OnTravel(AvailableTravelDirections travelDirection)
{ {
if (CurrentRoom.DoorwayExist(travelDirection.ToString())) if (CurrentRoom.DoorwayExist(travelDirection.ToString()))

View file

@ -1,11 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MudEngine.GameObjects.Characters.Controlled
{
public class PlayerAdmin : PlayerBasic
{
}
}

View file

@ -1,18 +0,0 @@
//Microsoft .NET Framework
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//MUD Engine
using MudEngine.GameObjects.Characters;
namespace MudEngine.GameObjects.Characters.Controlled
{
public class PlayerBasic : BaseCharacter
{
public PlayerBasic()
{
}
}
}

View file

@ -63,8 +63,6 @@
<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" />
<Compile Include="GameObjects\Characters\Controlled\PlayerAdmin.cs" />
<Compile Include="GameObjects\Characters\Controlled\PlayerBasic.cs" />
<Compile Include="GameObjects\Environment\Door.cs" /> <Compile Include="GameObjects\Environment\Door.cs" />
<Compile Include="GameObjects\Environment\Realm.cs" /> <Compile Include="GameObjects\Environment\Realm.cs" />
<Compile Include="GameObjects\Environment\Room.cs" /> <Compile Include="GameObjects\Environment\Room.cs" />
@ -82,8 +80,11 @@
<Compile Include="Scripting\ScriptEngine.cs" /> <Compile Include="Scripting\ScriptEngine.cs" />
<Compile Include="Scripting\StartupObject.cs" /> <Compile Include="Scripting\StartupObject.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<ItemGroup> <ItemGroup>
<Folder Include="GameObjects\Characters\NPC\" /> <None Include="startup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View file

@ -7,7 +7,6 @@ using System.Net.Sockets;
using System.Threading; using System.Threading;
using MudEngine.GameObjects.Characters; using MudEngine.GameObjects.Characters;
using MudEngine.GameObjects.Characters.Controlled;
/* Usage: /* Usage:
* Server MUDServer = new Server(); * Server MUDServer = new Server();
@ -35,7 +34,7 @@ namespace MudEngine.Networking
} }
server.CleanUp(); server.CleanUp();
} }
public bool InitializeTCP(int port, ref List<PlayerBasic> pbs) public bool InitializeTCP(int port, ref List<BaseCharacter> pbs)
{ {
if (stage != 0) if (stage != 0)
return false; return false;
@ -50,7 +49,7 @@ namespace MudEngine.Networking
stage++; stage++;
return true; return true;
} }
public bool InitializeUDP(int port, ref List<PlayerBasic> pbs) public bool InitializeUDP(int port, ref List<BaseCharacter> pbs)
{ {
if (stage != 0) if (stage != 0)
return false; return false;
@ -138,7 +137,7 @@ namespace MudEngine.Networking
private ServerSocket server; private ServerSocket server;
private int stage; private int stage;
List<PlayerBasic> players; List<BaseCharacter> players;
// TCP Stuff: // TCP Stuff:
private ClientSocket[] clients; private ClientSocket[] clients;

View file

@ -9,6 +9,7 @@ using System.IO;
using System.Text; using System.Text;
using System.Reflection; using System.Reflection;
using MudEngine.GameObjects;
namespace MudEngine.Scripting namespace MudEngine.Scripting
{ {
@ -97,7 +98,11 @@ namespace MudEngine.Scripting
Directory.Delete("temp", true); Directory.Delete("temp", true);
Directory.CreateDirectory("temp"); Directory.CreateDirectory("temp");
string source = "namespace MudScripts\n{\n}";
//Setup the additional sourcecode that's needed in the script.
string[] usingStatements = new string[] { "using System;", "using MudEngine.GameObjects;", "using MudEngine.FileSystem;" };
string source = "\nnamespace MudScripts{\n}";
foreach (string script in scripts) foreach (string script in scripts)
{ {
string tempPath = "temp"; string tempPath = "temp";
@ -108,6 +113,9 @@ namespace MudEngine.Scripting
StreamReader sr = new StreamReader(fr, System.Text.Encoding.Default); StreamReader sr = new StreamReader(fr, System.Text.Encoding.Default);
string content = sr.ReadToEnd(); string content = sr.ReadToEnd();
foreach (string statement in usingStatements)
source = source.Insert(0, statement);
source = source.Insert(source.Length - 1, content); source = source.Insert(source.Length - 1, content);
sw.Write(source); sw.Write(source);
sr.Close(); sr.Close();
@ -135,7 +143,7 @@ namespace MudEngine.Scripting
results = codeProvider.CompileAssemblyFromFile(param, scripts); results = codeProvider.CompileAssemblyFromFile(param, scripts);
//Delete the temp folder //Delete the temp folder
Directory.Delete("temp", true); //Directory.Delete("temp", true);
ScriptPath = oldPath; ScriptPath = oldPath;
//if we encountered errors we need to log them to our ErrorMessages property //if we encountered errors we need to log them to our ErrorMessages property

1
MudEngine/startup.dat Normal file
View file

@ -0,0 +1 @@
PlayerClass=P