Restructured the project save data folder layout when the engine starts.
The XMLData class now creates directories if they are missing. Individual classes no longer need to check if a path is valid before saving.
Filenames are now automatically generated and no longer assigned by developers. This change has been made across all classes that are savable which required some changing of the Save() method arguments.
Some classes have some protection in place now in the event the class attempts to load a property that does not exist in the save file.
CommandSystem instances now use their instanced CommandCollection property instead of the static class property.
CharacterRole class created with helper static methods for converting strings to their correct CharacterRoles enum value.
Environment class has save/load support however Realms/Zones/Rooms do not yet.
DataPath class is now completed and includes a new SetExtension() method for setting game object file extensions.
Scripting support fully implemented.
StandardGame now contains a Initialize() method for compiling scripts and searching for sub-classes of StandardGame
Server app will now use a Scripted game class instead of the default StandardGame if one is present.
StandardGame.Start() is now virtual so child classes can override it.
Sample Game script created to show how to create a custom game script, including how to setup the game and create Rooms pragamatically.
ScriptFactory has a new method for searching all scripts and scripts that inherit from a specified class.
Renamed all of the Command scripts. They no longer start with 'Command'. Example: "CommandSay" has now become "Say". There is no need to preceed the command name with the word "Command" anymore.
Newly created characters are assigned to the new World.StartLocation.
Rooms can now be connected.
Realms and Zones can create Zones and Rooms accordingly
Force moving of a character is now supported. Walking has yet to be implemented.
* Added a new Command. SetRole allows Admins to assign a Server Role (Admin, Player, GM etc) to a specified character. Server.ServerOwner is the only Character that can use this command regardless of server role. Any other Character must have a Role of Admin in order to use it.
* StandardCharacter now checks if the character is connected as well as being enabled during execution of commands.
* Re-organized how the StandardCharacter save code was invoked during disconnection from server.
* StandardCharacter.Role is now saved and loaded from file.
* XMLData now contains a GetData() method for returning data from the stored data collection.
* XMLData now contains a Load() method for loading a previously saved XML data file.
* StandardCharacter now automatically generates a filename.
* StandardCharacter.Connected added. Use Connected to check if they are connected to the server regardless of the values for Enabled and LoggedIn. LoggedIn is now true once the Login command is completed.
* Default Character Role is now Player.
* Server.ServerOwner property added. When a character is logged in matching the ServerOwner name, it will automatically be assigned the Admin role.
* StandardCharacter.ExecuteSilentCommand() method added for executing a command and not having the "Command: " line printed to the screen when the command is completed. Useful for daisy chained commands.
* StandardCharacter login code is now 100% completed. Including save/load code and new character creation.
* StandardCharacter.SetRole() method added. Admins can set the role of any other character in the game if they want to.
* BaseScript & StandardCharacter now have their Load() code fully implemented. They can save and load their files now.
* Player creation command added. Can only be executed from within the login command. If it is executed from any other object it will bail.
* Stop command now only works when a Character with Role = Admin issues the command. During development of a MUD Game, this would typically be the Server.ServerOwner character who will have Admin rights.
* ConnectionManager had some bugs fixed such as not removing Threads from the Thread collection when a character disconnected. Also re-organized the character connection code some.
* Login command now checks to make sure no illegal characters exist in the characters name such as underscores and asteriks. Only letters and numbers are allowed.
* Only 1 word names are supported however I provided support for first and last name based characters within the Login command. It is commented out and can be easily implemented by uncommenting.
* Telnet client header information is now successfully (finally) stripped out of the first stream received.
* Command System underwent some optimizations along with now always returning a Boolean value once execution of a command is completed.
* ICommand interface now forces all ICommand.Execute methods to return a Boolean value.
* DataPaths class re-wrote and is now simi in-use by StandardGame and the Login command
* Minor adjustments to how characters are initialized upon connection in various classes.
* Added better commenting to the majority of the projects files.
* Removed command support from the server console.
* Added a Client side command STOP that can be used to shut down the server. In the future that will be specific to Admins only.
* Characters now have their save code invoked during server shut down.
* Server shut down code added. Server.Stop() fully implemented.
* StandardCharacter re-wrote to support the new Server code. Also added event method support for various states.
* ConnectionManager re-wrote to support the new server.
* Work on Log message importance started
* INetworked.Connect now requires a Socket as its parameter.
* StandardGame no longer has Properties for MaxConnections and MaxQueuedConnections. This is handle via StandardGame.Start() parameters.
* CommandLogin command added. Initial check-in and not fully implemented.
Added rScript files to the engine. These have not been implemented and currently don't work with the engine.
BaseScript has been modified to support the new XMLData class for saving data.
Removed old forms and prepared for new designer layouts
MudEngine:
Server - Now starts and runs, however sending information to the client crashes telnet clients for some reason.
BaseCharacter - Removed OnConnect() source code and changed method into an abstract method. This is now implemented via MudGame.MudCharacter
BaseCommand - BaseCommand.Name now implemented. Constructor defaults to the Type name. Note all command names must begin with 'Command'
BaseGame - Now has a Server propety
BaseServer - Added IsRunning property
ICharacter - Added Send() method
ICommunicate - Added Shutdown() method for use with servers.
CommandSystem - Bug fix. Was checking to see if the command was an Interface rather than checking if it inherits from one.
CommandSystem - Bug fix. No longer attempts to add abstract commands to collection
ScriptSystem - Bug fix. Corrected the name of the Mud Compiler during compiler loading.
MudGame:
Added initial MudCharacter class. Will be the standard class that all characters will inherit from.
Added CommandLogin for processing user server logins.
MudGame - Now calls Server.Initialize during Game.Initialize()
MudGame - Uses Server.IsRunning property checks rather than Server.EnableServer
MudGame - Added initial code for player connections.
BaseGame.IsRunning property added.
MudGame:
Removed all of the old scripts. They will be re-wrote.
MudGame will become a template project. Including a template Game that inherits from BaseGame, along with template characters and items.
MudGame.cs added. Initial Game class. It does not support environment loading at this time.
Program.cs re-wrote to run the game in a while() loop checking MudGame.IsRunning propery and calling the MudGame.Update() method each iteration.
Deleted the Settings.ini file. I want to use something different.
MudCompiler:
No longer works. Needs to be re-wrote to support the new Alpha 2.0 engine
MudDesigenr:
Removed most of the forms since we are not working on it. Only form left is Project Manager, which will be removed shortly as well.
MudGame:
No longer runs. All of the source code was removed due to MudEngine Alpha 2.0 source changing drastically.
MudEngine:
Alpha 2.0 source code finally checked-in. It contains the full re-build of the engine. A lot of new abstract classes have been added.
Now 3rd party users can see how restarting the server takes place, saving the world and logging into the game world.
CommandEditRealm, EditRoom and EditZone was deleted. They will be re-built at a later date. For the time being, use the pre-built example scripts within the MudGame project.
Moved rScript source files into the Mud Engine.Scripting files. Planning on removing the reference to rScript.dll and keep everything within the MudEngine.
Deleted ParseProperty Attribute. A different approach will be used for dynamic Type saving.
Removed BaseObject.NewSave(). The re-write on save code will be done at a later date.
Deleted the Attributes folder as it is no longer used.
Moved Server.cs from Networking to Communication folder.
Classes all still reside within their original namespaces, just migrating files into their new folders. Namespace migration will take place afterwards.