Commit graph

17 commits

Author SHA1 Message Date
Scionwest_cp
386d90df19 MudEngine:
- All commands are now required to have a Help property.

MudGame:
 - Finished the Create command. Now allows for creating Realms, Zones and Rooms
 - Added LinkRoom command for linking Rooms. Not finished.
 - Added Help command. Typing Help prints all of the currently available commands. Typing Help 'CommandName' prints that Commands help property. Default commands print a help document.
2010-08-19 19:09:45 -07:00
Scionwest_cp
bbd411fdd1 MudEngine:
- Removed the need for the old CommandResult Type to be a returned value on all commands. Command.Execute() is now just void.
 - All commands updated to now return a value. They use player.Send() to direct messages to the player instead.
 - Removed CommandClear from the project and made it a script so that developers can see how to write custom command scripts.
2010-08-15 13:06:51 -07:00
Scionwest_cp
9792bfcd32 MudEngine:
- Bug fixes with object saving and restoration
 - Game Deconstructor removed.
 - Player Password saving, restoring and varification implemented fully.

MudGame:
 - Revised scripts to demonstrate the latest environment creation updates.
2010-08-15 12:24:54 -07:00
Scionwest_cp
a52ccf8da9 MudEngine:
- Converted all Types from C# types to .NET Types (such as bool changed to Boolean, and int changed to Int32).
 - Zone no longer gets saved from within GameWorld.Save, but rather in Realm.Save()
 - Room no longer gets saved from within GameWorld.Save(), but rather in Zone.Save();
 - Added new SaveWorld command that admins only can execute to force save the world. It's not fully implemented at this time.

MudGame:
 - began work on command execution from within the server while it's running.
2010-08-14 00:20:43 -07:00
Scionwest_cp
9585cede63 MudEngine:
- Added BaseCharacter.FlushConsole() method. Sends a hex sequence to the clients telnet terminal that clears the screen. If IsMultiplayer=false then it just clears the C# Console.
 - Added a 'Clear' command for users to use. It invokes the new FlushConsole command.
 - Removed the need for a full file path and filename when calling an objects save method. Now it just needs the path.
 - Adjusted the Exit command, Login command and Save command to reflect the objects save parameter changes.
 - Removed the Unique ID from objects. 
 - All objects now reference each other via their filenames rather than their object names. Allows for 3 objects with the name Bedroom to exist, but with different filenames such as Bedroom1, Bedroom2 etc.
 - Zone now has a GetRoomByName method that replace the removed GetRoomByID method. Returns a List<> collection of Rooms found with a matching filename.
 - BaseCharacter updated to work with the new Zone.GetRoomByName method.
 - Realm.GetZoneByID renamed to GetZoneByName()
2010-08-13 21:35:46 -07:00
Scionwest_cp
d212f5b854 MudEngine:
- Player login now creates the directories needed if they don't exist.
 - Added Update method that serves as the game loop now.
 - Added additional save code to Game.Save() now saves all realms, zones, rooms and players. Called during server shutdown (Game.Shutdown())
 - Began work on implementing a Unique Identifier system for all game objects. 
 - Renamed GetRealm() and GetZone() to GetRealmByID() and GetZoneByID. Now accepts a Int32 instead of a string as the parameter, returning a reference to the object.
 - Added GetRealmByName() and GetZoneByName(). Similar to the old GetRealm and GetZone methods. Accepts a string as a parameter, however it returns a list<> collection of the found objects due to objects with duplicate names are allowed to co-exist in the game world.
 - Temp directory that was being generated during server startup within Game.Start() is now deleted once script compilation is completed.
 - Added GameTime.cs; contains all the properties and methods needed to have a working time system built into the engine for the game world. Not fully complete.
 - Added CommandGetTime.cs which prints the current date and time to the players console. Prints the GameTime.DayNames and GameTime.MonthNames to the player. Defaults to real-world names, however these can be configured and changed, along with the number of days per week, weeks per month, months per year, seconds per minute, minutes per hour and hours per day.

MudGame:
 - Now supports Game.AutoSave. If AutoSave is true, then the server loop will call Game.Save() automatically.
 - Server Game Loop now calls Game.Update() every loop cycle.
2010-08-10 15:10:25 -07:00
Scionwest_cp
aade5f797f MudEngine:
- Login command now supports Offline games. Skips various things that are server related only.
 - Added a constructor to SaveDataPaths for quickly being able to assign paths.
 - Game.Start is now Virtual so that scripts may override it.
 - Game.Start now supports single player games and initializes players within it.
 - Log now provides a Verbose mode so that Singleplayer games no longer gets flooded with Game startup messages.
 - BaseCharacter.Initialize() Initialize no longer crashes when called with IsMultiplayer set to false.
 - BaseCharacter.ReadInput() now supports IsMultiplayer being false.

MudServer:
 - Now supports singleplayer and multiplayer games within a single application. 
 - MudServer is now ready to be re-named to MudGame and will be used for both Offline and Online games.
2010-08-08 18:05:21 -07:00
Scionwest_cp
ef7cc5d2c2 MudEngine:
- Players that are within the same Room a leaving or entering player are told of the player entering or leaving.
 - Players within a occupied Room are now informed when a player enters the Room or leaves
 - Players onTravel now sends move messages to other players within the same Room.
2010-08-07 22:43:24 -07:00
Scionwest_cp
8b1be3d1eb MudEngine:
- CommandLogin no longer invokes the Look Command
 - Fixed CommandWalk no longer telling the player an invalid direction message when trying to walk to someplace that does not exist.
 - Moved PlayerCollection array referencing from Game.Start() to the Game's constructor so that scripts may change the player class during its startup.
 - BaseCharacter now invokes the Look command after Login command is completed.
 - ScriptEngine no longer sets the output path for a compiled script if the script is designated as compile to memory.
 - Fixed custom players not being able to access their own Methods and Properties during runtime.

MudServer:
 - Additional Console Log Messages added.
2010-08-06 23:37:52 -07:00
Scionwest_cp
c3c2d22ec7 MudEngine:
- Login command now automatically disconnects a user if they are currently logged into the server when another user attempts to login with the same credentials.
 - Login command now loads saved players when a character name is entered that has previously been saved.
 - FileManager.GetData() now supports ignoring simi-colons in data files. These can be used as comments if needed.
 - MudEngine.GameManagement.Game.TimeOfDayOptions has been removed from the Game Type. It is now just MudEngine.GameManagement.TimeOfDayOptions.
 - BaseCharacter will no longer try to save the character if the supplied filename is blank
 - BaseCharacter will now send a disconnect message of 'Goodbye!' upon the player being disconnected from the server.
 - ScriptEngine.ScriptPath now returns a absolute path.
 - Script File compilation within ScriptEngine.Initialization is now supported. This allows developers to write their MUD's using Scripts and letting the server compile them during server startup rather than use the ScriptCompiler.exe to pre-compile scripts now.
 - Custom Game Types are now supported. Only 1 Type may inherit from MudEngine.GameManagement.Game at a time. To use, create a file, write a script that inherits from Game and run the server.
 - ScriptEngine.GetObjectOf(string) method adding. Returns a object that inherits from the Type supplied in the parameter.
 - Deleted StartupObject.cs
 - Deleted Startup.dat 

MudOfflineExample:
 - Updated to reflect the TimeOfDayOptions change in MudEngine.csproj

MudServer:
 - Added MyGame.cs inside Debug/bin/scripts. This is a example script showing how to inherit from Game and write a custom Game Type. This Type is used when the Server runs rather than the Engine Game Type.
 - Server startup re-wrote to compile scripts during startup, scan them via the script engine for any custom Types that inherit from Game, and use the if needed instead of the default Engine Type.
 - Server now uses a Settings.ini file to allow configuration of the Script Engine by users. Provides them the ability to now customize where scripts are stored and their file extension.
 - Deleted Scripts.dll, as the Server now generates one at runtime each time it is ran.

As of this commit, users will not need to use C# to compile their MUD's any longer. Compile the Server and run it. Scripts are now fully implemented (however not fully tested).
2010-08-05 17:46:30 -07:00
Scionwest_cp
0f45ecec53 MudEngine:
- Updated all game commands to support the new Player.Send() method. Returning CommandResults is no longer supported.
 - Login command now executes the Look command upon completing login.
 - Look command now supports Rooms DetailDescription property. Use this for multi-line descriptions.
 - Several changes to the Restart command. Still not working fully however, it no longer calls duplicate methods.
 - Fixed Walk command not moving players around.
 - Loading engine commands no longer happens more than once.
 - Added additional Server Console log output
 - BaseCharacter.Send() now correctly displays content to the user and prints the "Command:" message to the player after every command completed.
 - The Server now sets Player.IsControlled to true when a player connects.
 - BaseCharacter.Send() checks if the game is multi-player or not. If it is, it prints to Console, if not then prints to telnet clients.

Mud Offline Example:
 - Updated Zeroth Realm creation to use Room.DetailDescription now that the Look command supports it.
 - Updated the Game loop. No longer needs to print to the console due to the player.Execute() command automatically printing content to the console.

Mud Server:
 - Removed player from server as it was not being used any longer.
2010-08-03 20:20:24 -07:00
u8sand_cp
5c8c5b6ba1 - Fixed strange errors with client
- No longer holds on startup for other Players
- Was crashing when I exited with multiple players because the filename was "", so I uncommented the line making the filename and that did the trick.
- Fix: Does it really save? lol.
- Fix: On startup I get a spam of "Loaded MudDesigner.dll", I'd fix but I don't know where it is o.O
2010-08-02 06:40:18 -07:00
Scionwest_cp
7c6ca6a2b9 MudEngine:
- Fixed command engine stalling when waiting for one users command to finish before starting another users command.
 - Commands are loaded into static List collections, but the Execute command itself is now no longer static.
 - Player.CommandSystem property added so each player has their own commandengine to process their input.
2010-08-01 20:50:21 -07:00
u8sand_cp
b3a672503f Few Fixes
- Receives junk sent by telnet client upon established connection
- Fixed up some problems with ReadInput
- Fixed up Disconnect
- Replaced some Log() calls.
- Commented out Initialize on a new thread, will be uncommented when CommandEngine is fixed.
- CommandEngine doesn't want to do things while other things are happening even though they are on different threads... Fix that?
2010-08-01 20:07:29 -07:00
Scionwest_cp
bc05eba56e MudEngine:
- Some minor changes to removal of unwanted characters in commands.
2010-08-01 19:26:26 -07:00
Scionwest_cp
29cdae3b1a MudEngine:
- Corrected CommandLogin to support the Player.Send/Receive methods.
 - Re-organized the Game class source code and added additional commenting.
 - Began adding code to remove un-wanted characters in the received byte stream in Player.Receive()
2010-08-01 17:34:59 -07:00
Scionwest_cp
607bd673a5 MudEngine:
- Sending messages to the client from the server is now an added feature. Use Game.SendMessage()
 - Added Load and Save commands for players.
 - Added Missing SaveDataPaths struct file.
2010-07-30 19:31:49 -07:00