- 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.
111 lines
3.8 KiB
C#
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);
|
|
*/
|
|
}
|
|
}
|
|
}
|