private static void SetFontHandler( Player player, Command cmd )
{
string Param = cmd.Next();
if ( Param == null ) {
CdSetFont.PrintUsage( player );
return;
}
if ( Param.ToLower() == "reset" ) {
player.font = new Font( "Times New Roman", 20, FontStyle.Regular );
player.Message( "SetFont: Font reverted back to default ({0} size {1})",
player.font.FontFamily.Name, player.font.Size );
return;
}
if ( Param.ToLower() == "font" ) {
string sectionName = cmd.NextAll();
if ( !Directory.Exists( Paths.FontsPath ) ) {
Directory.CreateDirectory( Paths.FontsPath );
player.Message( "There are no fonts available for this server. Font is set to default: {0}", player.font.FontFamily.Name );
return;
}
string fontFileName = null;
string[] sectionFiles = Directory.GetFiles( Paths.FontsPath, "*.ttf", SearchOption.TopDirectoryOnly );
if ( sectionName.Length < 1 ) {
var sectionList = GetFontSectionList();
player.Message( "{0} fonts Available: {1}", sectionList.Length, sectionList.JoinToString() ); //print the folder contents
return;
}
foreach (string t in sectionFiles)
{
string sectionFullName = Path.GetFileNameWithoutExtension( t );
if ( sectionFullName == null )
continue;
if ( sectionFullName.StartsWith( sectionName, StringComparison.OrdinalIgnoreCase ) ) {
if ( sectionFullName.Equals( sectionName, StringComparison.OrdinalIgnoreCase ) ) {
fontFileName = t;
break;
} else if ( fontFileName == null ) {
fontFileName = t;
} else {
var matches = sectionFiles.Select( f => Path.GetFileNameWithoutExtension( f ) )
.Where( sn => sn != null && sn.StartsWith( sectionName, StringComparison.OrdinalIgnoreCase ) );
player.Message( "Multiple font files matched \"{0}\": {1}",
sectionName, matches.JoinToString() );
return;
}
}
}
if ( fontFileName != null ) {
string sectionFullName = Path.GetFileNameWithoutExtension( fontFileName );
player.Message( "Your font has changed to \"{0}\":", sectionFullName );
//change font here
player.font = new System.Drawing.Font( player.LoadFontFamily( fontFileName ), player.font.Size );
return;
} else {
var sectionList = GetFontSectionList();
if ( sectionList == null ) {
player.Message( "No fonts have been found." );
} else {
player.Message( "No fonts found for \"{0}\". Available fonts: {1}",
sectionName, sectionList.JoinToString() );
}
}
}
if ( Param.ToLower() == "size" ) {
int Size = -1;
if ( cmd.NextInt( out Size ) ) {
if ( Size > 48 || Size < 10 ) {
player.Message( "&WIncorrect font size ({0}): Size needs to be between 10 and 48", Size );
return;
}
player.Message( "SetFont: Size changed from {0} to {1} ({2})", player.font.Size, Size, player.font.FontFamily.Name );
player.font = new System.Drawing.Font( player.font.FontFamily, Size );
} else {
player.Message( "&WInvalid size, use /SetFont Size FontSize. Example: /SetFont Size 14" );
return;
}
return;
} else {
CdSetFont.PrintUsage( player );
return;
}
}