//Microsoft .NET Framework using System; using System.Collections.Generic; using System.Linq; using System.Text; //MUD Engine using MudEngine.FileSystem; using MudEngine.Commands; using MudEngine.GameManagement; using MudEngine.GameObjects; using MudEngine.GameObjects.Environment; using MudEngine.GameObjects.Items; namespace MudEngine.GameObjects.Characters { public class BaseCharacter : BaseObject { /// /// The current Room this Character is located at. /// public Room CurrentRoom { get; set; } /// /// Gets or Sets if this Character is controlled by the user. If not user controlled then it will be AI controlled. /// public Boolean IsControlled { get; set; } /// /// Gets or Sets if this user has Admin privileges or not. /// public Boolean IsAdmin { get; private set; } /// /// Gets a reference to the currently running game. /// public Game Game { get; private set; } public BaseCharacter(Game game) { Game = game; IsAdmin = true; CurrentRoom = game.InitialRealm.InitialZone.InitialRoom; } /// /// Moves the player from one Room to another if the supplied direction contains a doorway. /// Returns false if no doorway is available. /// /// /// public bool Move(AvailableTravelDirections travelDirection) { //Check if the current room has a doorway in the supplied direction of travel. if (!CurrentRoom.DoorwayExist(travelDirection)) { return false; } //We have a doorway, lets move to the next room. CurrentRoom = CurrentRoom.GetDoor(travelDirection).ArrivalRoom; OnTravel(travelDirection); return true; } public virtual void OnTravel(AvailableTravelDirections travelDirection) { //TODO: Check the Room/Zone/Realm to see if anything needs to occure during travel. } public String ExecuteCommand(string command) { //TODO: Character class can handle a lot of the command management here, checking various things prior to sending //the command off to the command engine for execution. CommandResults result = CommandEngine.ExecuteCommand(command, this); if (result.Result != null) { StringBuilder sb = new StringBuilder(); foreach (object item in result.Result) { if (item is string) sb.AppendLine(item.ToString()); } return sb.ToString(); } return ""; } public void Initialize(ref MudEngine.Networking.ClientSocket rcs) { CurrentRoom = Game.InitialRealm.InitialZone.InitialRoom; sock = rcs; } public MudEngine.Networking.ClientSocket sock; } }