- FileManager.GetDataPath now returns the actual Root directory when Root is requested rather than Root/Projects. That was considered Root for the older Designer. - CommandEngine.GetCommands is now a method rather than a property. - CommandEngine.LoadAllCommands replaced with CommandEngine.LoadBaseCommands for loading Engine specific Game commands. This is called from within Game.Start. A possible property for disabling default commands could be looked at in the future. - CommandEngine.LoadCommandLibrary method added for loading custom user commands. This is fully implemented. - CommandEngine.ClearCommands method added for clearing all currently loaded commands. - Game.IsDebug static property added. - Added additional logging for testing purposes throughout the project. Changing Game.IsDebug to false will remove the majority of the logged messages. - Game.IsMultiplayer property added for enabling or disabling the server for Online/Offline support. Fully implemented. - Game no longer loads user script libraries as this was being handled already by ScriptEngine.Initialize() - Log now caches messages so consoles can print only content that was logged since the last loop. Using Log.FlushMessages() will clear the cached messages allowing each loop to show only the new logged messages. - BaseCharacter IsAdmin argument in the constructor has been removed. No longer needed for testing. - ScriptEngine can now compile more than 1 script without error. - ScriptEngine.Assembly property added for accessing the currently loaded script library. This should be a List<Assembly> in the future for multiple libraries. - Removed the last of my BlitScript engine code from ScriptEngine.cs as it was XNA specific. Need to look at StartupObject.cs as I believe that is XNA specific as well and not needed. MudGame: - Renamed MudGame to MudOfflineExample as it will be used for testing the game with Game.IsMultiplayer disabled. Makes testing easier then needing to stop/restart the server and connect via telnet constantly. MudServer: - Added MudServer project. This is a dedicated server that runs with Game.IsMultiplayer enabled. Developers can connect to it via telnet clients. All engine game commands are implemented. - MudServer includes bin/Debug/Scripts.dll, which is a compiled library of scripts generated via MudCompiler. MudEngine.Game handles loading the library and there is no additional code required by the developers to implement their libraries into their games provided the name is 'Scripts.dll'
93 lines
3.2 KiB
C#
93 lines
3.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
|
|
using MUDGame.Environments;
|
|
using MudEngine.GameManagement;
|
|
using MudEngine.GameObjects;
|
|
using MudEngine.GameObjects.Characters;
|
|
using MudEngine.GameObjects.Environment;
|
|
using MudEngine.FileSystem;
|
|
|
|
namespace MUDGame
|
|
{
|
|
class Program
|
|
{
|
|
//Setup our Fields
|
|
static Game game;
|
|
static BaseCharacter player;
|
|
|
|
static void Main(string[] args)
|
|
{
|
|
//Initialize them
|
|
game = new 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.IsMultiplayer = false; //Disables the server
|
|
|
|
//Create the world
|
|
BuildRealms();
|
|
|
|
// Start the game & server.
|
|
game.Start();
|
|
|
|
if (!game.IsRunning)
|
|
Console.WriteLine("Error starting game!\nReview Log file for details.");
|
|
|
|
//Player must be instanced AFTER BuildRealms as it needs Game.InitialRealm.InitialZone.InitialRoom
|
|
//property so that it can set it's starting room correctly.
|
|
player = new BaseCharacter(game);
|
|
//Add the player to the game.
|
|
//Note once the server is fully implemented the player will be generated automatically by Game.
|
|
//game.PlayerCollection.Add(player);
|
|
|
|
//Send game info to player
|
|
Console.WriteLine(game.GameTitle);
|
|
Console.WriteLine(game.Version);
|
|
Console.WriteLine(game.Website);
|
|
Console.WriteLine(game.Story);
|
|
Console.WriteLine();
|
|
|
|
//Simple Help info
|
|
Console.WriteLine("Available Commands are\n Look\n Exit\n Walk 'direction' where direction = north/south/east/west/up/down\n");
|
|
|
|
//Invoke the Look command so the player knows whats around him/her
|
|
Console.WriteLine(player.ExecuteCommand("Look"));
|
|
|
|
while (game.IsRunning)
|
|
{
|
|
Console.Write("Command: ");
|
|
Console.WriteLine(player.ExecuteCommand(Console.ReadLine()));
|
|
}
|
|
|
|
// - Exit command handles this now - game.Shutdown();
|
|
Console.WriteLine("Press Enter to exit.");
|
|
Console.ReadKey();
|
|
}
|
|
|
|
static private void BuildRealms()
|
|
{
|
|
Zeroth zeroth = new Zeroth(game);
|
|
zeroth.BuildZeroth();
|
|
}
|
|
}
|
|
}
|