- Rooms can now be linked automatically via the new Zone.LinkRooms method. Room linking can no longer be done manually as the Doorways property is now read-only.
- Door.Description has been removed. Doorway description will need to be included in Room.Description or Room.DetailedDescription properties.
- Added DetailedDescription to make creating multi-line descriptions easier. Not supported by the Look command yet.
- Game.IsRunning is now read-only. The Game will manage this property on its own.
- BaseCharacter.ExecuteCommand now will always return a string. Simplifying the game loop for users as they no longer need to check what Type was returned by the command.
- Doors now contain a DepartureRoom and a ArrivalRoom property allowing for easy access to Rooms that are linked together.
- Fixed a bug where Game, Realms and Zones always assigned IsInitial to Realms, Zones and Rooms when added to the collections. Collection would contain multiple IsInitial objects.
- Removed Room.InstalledDoorways property as that was used only by the old Designer
- Removed Room.Load() as that implementation of it is obsolete.
MudGame:
- Revised Zeroth to build it's Zone and Rooms using the new Zone.LinkRooms function.
- Greatly revised Program.cs and the Game loop to take advantage of many of the automations provided by the Engine now.
- Player movement command now fully implemented.
- Game.GetRealm() added to retrieve a Realm within the games RealmCollection property
- Game.End() added to perform game ending duties and shut down the Server
- Server now loses opened threads.
- Player.Move() added to move the player from Room to Room.
- Room.DoorwayExist() tweaked to work with the new way Environments are managed.
MudGame:
- Now executes the Look command on startup so the player can see where they are located at.
- Implements the new Game.End() method and fixes the game hanging upon exit.
- Re-worked the command system. All commands now only need 2 arguments rather than 4. The actual command string and the Player
- All commands updated to work with the new command system
- Look command now works in the example MudGame
- Realm now contains InitialZone for the starting Zone within that Realm.
- Zone now contains InitialRoom for the starting Room within that Zone.
- All Environment objects now contains a Initial property and Add() method for adding child objects.
- BaseCharacter now contains a copy of Game
- Revised Realm.GetZone()
- Revised Zone.GetRoom()
- Removed Zone.RebuildRoomCollection as content is currently no longer stored using physical files.
- Added GameManagement.Log for logging errors and warnings to file. Use Log.Write().
- Deleted GameObjects.Characters.Controlled and GameObjects.Characters.NPC namespaces.
- Deleted PlayerBasic & PlayerAdmin classes.
- BaseCharacter now contains IsAdmin property for providing admin privileges to users.
- BaseCharacter now contains IsControlled property for setting user control or AI controlled
- Added startup.dat - This will supply information to the engine as to what Types will be used during runtime. Allowing for custom Types via scripts to be instanced and used (such as a custom player class rather than the default one).
- Created PlayerAdmin class. All admins will be instances of this class; allows for segregating admin code into a different class for easier management and maintenance.
- CommandRestart now checks to make sure the player is of Type PlayerAdmin instead of player.admin
- Added ExecuteCommand to BaseCharacter. All Characters (NPC & Players) can execute commands now. Allows for AI to roam the world at some point in the future by invoking the available move commands.
MUDGame:
- Updated the command execution from CommandEngine.Execute to user.ExecuteCommand to use the BaseCharacter version.
- Changed PlayerBasic to PlayerAdmin for testing purposes.
TODO: Remove command execution from game loop, server should sit and wait for telnet data to be transmitted to it within the loop. That will be the command and passed off to the BaseCharacter/Player/NPC ect ExecuteCommand