- 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.
51 lines
1.8 KiB
C#
51 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
using MudEngine.FileSystem;
|
|
using MudEngine.GameObjects.Characters;
|
|
using MudEngine.GameManagement;
|
|
using MudEngine.Commands;
|
|
using MudEngine.GameObjects.Environment;
|
|
|
|
namespace MudEngine.Commands
|
|
{
|
|
public class CommandExit : IGameCommand
|
|
{
|
|
public Boolean Override { get; set; }
|
|
public String Name { get; set; }
|
|
|
|
public void Execute(String command, BaseCharacter player)
|
|
{
|
|
if (player.ActiveGame.IsMultiplayer)
|
|
{
|
|
//Let other players know that the user walked in.
|
|
for (Int32 i = 0; i != player.ActiveGame.PlayerCollection.Length; i++)
|
|
{
|
|
if (player.ActiveGame.PlayerCollection[i].Name == player.Name)
|
|
continue;
|
|
|
|
String room = player.ActiveGame.PlayerCollection[i].CurrentRoom.Name;
|
|
String realm = player.ActiveGame.PlayerCollection[i].CurrentRoom.Realm;
|
|
String zone = player.ActiveGame.PlayerCollection[i].CurrentRoom.Zone;
|
|
|
|
if ((room == player.CurrentRoom.Name) && (realm == player.CurrentRoom.Realm) && (zone == player.CurrentRoom.Zone))
|
|
{
|
|
player.ActiveGame.PlayerCollection[i].Send(player.Name + " has left.");
|
|
}
|
|
}
|
|
|
|
player.Disconnect();
|
|
}
|
|
else
|
|
{
|
|
//Save the player prior to attempting to shutdown.
|
|
//Player saving is handled in the server disconnect code but not in game shutdown.
|
|
player.Save(player.ActiveGame.DataPaths.Players);
|
|
player.ActiveGame.Shutdown();
|
|
}
|
|
}
|
|
}
|
|
}
|