MudEngine:

- Changed Player[] array to a List<> Collection of PlayerBasics. This change is reflected across all Types.
 - Game now contains a Start() function. StartServer is now called from within here.
 - Game now has partial support for the Script Engine

MudGame:
 - Game.StartServer has changed to Game.Start(). StartServer is called within Start().
This commit is contained in:
Scionwest_cp 2010-07-24 10:33:27 -07:00
parent 0f87ac233a
commit dbe1e693e5
5 changed files with 52 additions and 16 deletions

View file

@ -59,13 +59,13 @@ namespace MUDGame
if (game.InitialRealm == null) if (game.InitialRealm == null)
Console.WriteLine("Critical Error: No Initial Realm defined!"); Console.WriteLine("Critical Error: No Initial Realm defined!");
game.player = new MudEngine.GameObjects.Characters.Controlled.PlayerBasic[1000]; game.PlayerCollection = new List<MudEngine.GameObjects.Characters.Controlled.PlayerBasic>();
//Start the game. //Start the game.
MudEngine.GameManagement.CommandEngine.LoadAllCommands(); MudEngine.GameManagement.CommandEngine.LoadAllCommands();
// Start the server thread. // Start the server thread.
game.StartServer(); game.Start();
game.IsRunning = true; game.IsRunning = true;

View file

@ -26,13 +26,13 @@ namespace MudEngine.Commands
{ {
if (player is PlayerAdmin) if (player is PlayerAdmin)
{ {
for (int i = 0; i < project.player.Length; i++) for (int i = 0; i < project.PlayerCollection.Count; i++)
project.player[i].Save(project.player[i].Name + ".dat"); project.PlayerCollection[i].Save(project.PlayerCollection[i].Name + ".dat");
project.server.EndServer(); project.server.EndServer();
if (project.ServerType == ProtocolType.Tcp) if (project.ServerType == ProtocolType.Tcp)
project.server.InitializeTCP(555, ref project.player); project.server.InitializeTCP(555, ref project.PlayerCollection);
else else
project.server.InitializeUDP(555, ref project.player); project.server.InitializeUDP(555, ref project.PlayerCollection);
return new CommandResults("Server Restarted."); return new CommandResults("Server Restarted.");
} }
return new CommandResults("Access Denied."); return new CommandResults("Access Denied.");

View file

@ -9,11 +9,13 @@ using System.Xml;
using System.IO; using System.IO;
using System.Net; using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Reflection;
//MUD Engine //MUD Engine
using MudEngine.FileSystem; using MudEngine.FileSystem;
using MudEngine.GameObjects; using MudEngine.GameObjects;
using MudEngine.GameObjects.Environment; using MudEngine.GameObjects.Environment;
using MudEngine.GameObjects.Characters.Controlled;
namespace MudEngine.GameManagement namespace MudEngine.GameManagement
{ {
@ -172,6 +174,34 @@ namespace MudEngine.GameManagement
BaseCurrencyName = "Copper"; BaseCurrencyName = "Copper";
} }
/// <summary>
/// Starts the game.
/// </summary>
public void Start()
{
this.StartServer();
scriptEngine = new Scripting.ScriptEngine();
scriptEngine.Initialize();
scriptEngine.ScriptPath = "Scripts";
scriptEngine.ScriptExtension = ".mud";
if (System.IO.File.Exists("Scripts.dll"))
{
Assembly assem = Assembly.LoadFile("Scripts.dll");
foreach (Type t in assem.GetTypes())
{
if (t.BaseType.Name == "PlayerBasic")
{
Scripting.GameObject obj = new Scripting.GameObject();
obj = scriptEngine.GetObject(t.Name);
PlayerCollection.Add((PlayerBasic)obj.Instance);
}
}
}
}
public void Save(string filename) public void Save(string filename)
{ {
string directory = Path.GetDirectoryName(filename); string directory = Path.GetDirectoryName(filename);
@ -199,15 +229,18 @@ namespace MudEngine.GameManagement
} }
public MudEngine.GameObjects.Characters.BaseCharacter[] player; public List<PlayerBasic> 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;
public int ServerPort = 555; public int ServerPort = 555;
public int MaximumPlayers = 1000; public int MaximumPlayers = 1000;
public void StartServer() private Scripting.ScriptEngine scriptEngine;
private void StartServer()
{ {
server.InitializeTCP(ServerPort, ref player); server.InitializeTCP(ServerPort, ref PlayerCollection);
server.Start(); server.Start();
} }
} }

View file

@ -6,6 +6,9 @@ using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Threading; using System.Threading;
using MudEngine.GameObjects.Characters;
using MudEngine.GameObjects.Characters.Controlled;
/* Usage: /* Usage:
* Server MUDServer = new Server(); * Server MUDServer = new Server();
* MUDServer.InitializeUDP(666); or MUDServer.InitializeTCP(666); * MUDServer.InitializeUDP(666); or MUDServer.InitializeTCP(666);
@ -32,22 +35,22 @@ namespace MudEngine.Networking
} }
server.CleanUp(); server.CleanUp();
} }
public bool InitializeTCP(int port, ref MudEngine.GameObjects.Characters.BaseCharacter[] pbs) public bool InitializeTCP(int port, ref List<PlayerBasic> pbs)
{ {
if (stage != 0) if (stage != 0)
return false; return false;
if (server.Initialize(port, ProtocolType.Tcp) < 0) if (server.Initialize(port, ProtocolType.Tcp) < 0)
return false; return false;
numberOfClients = pbs.Length; numberOfClients = pbs.Count;
clients = new ClientSocket[pbs.Length]; clients = new ClientSocket[pbs.Count];
clientThreads = new Thread[pbs.Length]; clientThreads = new Thread[pbs.Count];
players = pbs; players = pbs;
stage++; stage++;
return true; return true;
} }
public bool InitializeUDP(int port, ref MudEngine.GameObjects.Characters.BaseCharacter[] pbs) public bool InitializeUDP(int port, ref List<PlayerBasic> pbs)
{ {
if (stage != 0) if (stage != 0)
return false; return false;
@ -135,7 +138,7 @@ namespace MudEngine.Networking
private ServerSocket server; private ServerSocket server;
private int stage; private int stage;
MudEngine.GameObjects.Characters.BaseCharacter[] players; List<PlayerBasic> players;
// TCP Stuff: // TCP Stuff:
private ClientSocket[] clients; private ClientSocket[] clients;

View file

@ -97,7 +97,7 @@ namespace MudEngine.Scripting
Directory.Delete("temp", true); Directory.Delete("temp", true);
Directory.CreateDirectory("temp"); Directory.CreateDirectory("temp");
string source = "namespace MUDScripts\n{\n}"; string source = "namespace MudScripts\n{\n}";
foreach (string script in scripts) foreach (string script in scripts)
{ {
string tempPath = "temp"; string tempPath = "temp";