muddesigner/MudServer/Program.cs
Scionwest_cp 88378584ac MudEngine:
- Game now checks to see if there is a initial environment setup, if not an Abyss is created to store players in.
 - Game now compiles scripts prior to loading libary assemblies to ensure the latest assembly is loaded.
 - BaseCharacter now supports the Abyss room if no initial Game realm is set.
 - BaseCharacter will no longer load the player into a room that does not exist (was deleted or something), they are defaulted into the Abyss.
 - ScriptEngine checks for errors in the script prior to trying to reference the compiled assembly (was causing errors if scripts failed to compile; no assembly generated to reference)
 - Assembly libraries are now only loaded once.

MudServer:
 - Example MyGame.cs script now constructs a realm and sets default properties.
 - MyPlayer script added to show how to write your own player script.
 - Server loop restored and now working correctly.
 - Server now outputs additional info regarding startup.
 - Server now forces TCP protocol.
2010-08-05 19:07:12 -07:00

111 lines
3.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Net.Sockets;
using System.Text;
using MudEngine.FileSystem;
using MudEngine.GameManagement;
using MudEngine.GameObjects.Characters;
using MudEngine.Scripting;
using MUDGame; //Pulling this from the example game, no sense re-writing what already exists.
namespace MudServer
{
static class Program
{
static void Main(string[] args)
{
ScriptEngine scriptEngine;
Game game;
//Re-create the settings file if it is missing
if (!File.Exists("Settings.ini"))
{
Log.Write("Settings.ini missing!");
FileManager.WriteLine("Settings.ini", "Scripts", "ScriptPath");
FileManager.WriteLine("Settings.ini", ".cs", "ScriptExtension");
}
scriptEngine = new ScriptEngine(new Game(), ScriptEngine.ScriptTypes.SourceFiles);
scriptEngine.ScriptPath = FileManager.GetData("Settings.ini", "ScriptPath");
scriptEngine.ScriptExtension = FileManager.GetData("Settings.ini", "ScriptExtension");
//scriptEngine.CompileScripts();
scriptEngine.Initialize();
GameObject obj = scriptEngine.GetObjectOf("Game");
Log.Write(Log.GetMessages());
Log.FlushMessages();
if (obj == null)
{
Log.Write("Setting up the Engine Game Manager...");
game = new Game();
obj = new GameObject(game, "Game");
scriptEngine = new ScriptEngine((Game)obj.Instance, ScriptEngine.ScriptTypes.Assembly);
}
else
{
game = (Game)obj.Instance;
scriptEngine = new ScriptEngine(game, ScriptEngine.ScriptTypes.Assembly);
}
scriptEngine.ScriptPath = FileManager.GetDataPath(SaveDataTypes.Root);
//Force TCP
game.ServerType = ProtocolType.Tcp;
//Setup the scripting engine and load our script library
//MUST be called before game.Start()
//scriptEngine.Initialize();
//game.scriptEngine = scriptEngine; //Pass this script engine off to the game to use now.
game.Start();
while (game.IsRunning)
{
Console.Write(Log.GetMessages());
Log.FlushMessages();
System.Threading.Thread.Sleep(1);
}
/*
Game game = new Game();
Zeroth realm = new Zeroth(game);
realm.BuildZeroth();
//BaseCharacter serverAdmin = new BaseCharacter(game);
//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 = FileManager.GetDataPath(SaveDataTypes.Root);
game.TimeOfDay = Game.TimeOfDayOptions.Transition;
game.TimeOfDayTransition = 30;
game.Version = "0.1";
game.Website = "http://MudDesigner.Codeplex.com";
game.ServerType = ProtocolType.Tcp;
game.ServerPort = 555;
game.MaximumPlayers = 1000;
Game.IsDebug = false;
game.Start();
while (game.IsRunning)
{
Console.Write(Log.GetMessages());
Log.FlushMessages();
System.Threading.Thread.Sleep(1);
*/
}
}
}