Store enum type in the EnumValidator, in preparation for the options buttons to also show the enum value.

This commit is contained in:
UnknownShadow200 2016-03-30 18:03:52 +11:00
parent abf965b346
commit 37c6d8c84e
8 changed files with 23 additions and 38 deletions

View File

@ -61,7 +61,6 @@ namespace ClassicalSharp.Gui {
(g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
null, null,
};
widgets[7].Metadata = typeof(FpsLimitMethod);
MakeValidators();
}
@ -84,7 +83,7 @@ namespace ClassicalSharp.Gui {
new BooleanValidator(),
new BooleanValidator(),
new BooleanValidator(),
new EnumValidator(),
new EnumValidator( typeof(FpsLimitMethod) ),
game.ClassicHacks ? new BooleanValidator() : null,
};
}

View File

@ -91,7 +91,7 @@ namespace ClassicalSharp.Gui {
new HexColourValidator(),
new HexColourValidator(),
new EnumValidator(),
new EnumValidator( typeof(Weather) ),
new IntegerValidator( -2048, 2048 ),
};
}

View File

@ -43,9 +43,6 @@ namespace ClassicalSharp.Gui {
(g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
null, null,
};
widgets[0].Metadata = typeof(FpsLimitMethod);
widgets[2].Metadata = typeof(NameMode);
widgets[3].Metadata = typeof(EntityShadow);
MakeValidators();
MakeDescriptions();
}
@ -53,10 +50,10 @@ namespace ClassicalSharp.Gui {
void MakeValidators() {
INetworkProcessor network = game.Network;
validators = new MenuInputValidator[] {
new EnumValidator(),
new EnumValidator( typeof(FpsLimitMethod) ),
new IntegerValidator( 16, 4096 ),
new EnumValidator(),
new EnumValidator(),
new EnumValidator( typeof(NameMode) ),
new EnumValidator( typeof(EntityShadow) ),
};
}

View File

@ -236,7 +236,8 @@ namespace ClassicalSharp.Gui {
UpdateDescription( button );
return;
} else if( validator is EnumValidator ) {
HandleEnumOption( button );
Type type = ((EnumValidator)validator).EnumType;
HandleEnumOption( button, type );
return;
}
@ -253,9 +254,8 @@ namespace ClassicalSharp.Gui {
UpdateDescription( targetWidget );
}
void HandleEnumOption( ButtonWidget button ) {
void HandleEnumOption( ButtonWidget button, Type type ) {
string value = button.GetValue( game );
Type type = (Type)button.Metadata;
int enumValue = (int)Enum.Parse( type, value, true );
enumValue++;
// go back to first value

View File

@ -25,7 +25,7 @@ namespace ClassicalSharp.Gui {
MakeBool( -1, 0, "Classic player list", OptionsKey.UseClassicTabList,
OnWidgetClick, g => g.UseClassicTabList, (g, v) => g.UseClassicTabList = v ),
MakeBool( -1, 50, "Classic options menu", OptionsKey.UseClassicOptions,
MakeBool( -1, 50, "Classic options", OptionsKey.UseClassicOptions,
OnWidgetClick, g => g.UseClassicOptions, (g, v) => g.UseClassicOptions = v ),
// Column 2
@ -35,7 +35,7 @@ namespace ClassicalSharp.Gui {
MakeBool( 1, -50, "Use CPE", OptionsKey.UseCPE,
OnWidgetClick, g => g.UseCPE, (g, v) => g.UseCPE = v ),
MakeBool( 1, 0, "Allow server textures", OptionsKey.AllowServerTextures,
MakeBool( 1, 0, "Use server textures", OptionsKey.AllowServerTextures,
OnWidgetClick, g => g.AllowServerTextures, (g, v) => g.AllowServerTextures = v ),
MakeBack( false, titleFont,

View File

@ -117,9 +117,7 @@ namespace ClassicalSharp.Gui {
|| c == '<' || c == '>' || c == '|' || c == '"');
}
public override bool IsValidString( string s ) {
return true;
}
public override bool IsValidString( string s ) { return true; }
}
public sealed class BooleanValidator : MenuInputValidator {
@ -128,32 +126,25 @@ namespace ClassicalSharp.Gui {
Range = "&7(yes or no)";
}
public override bool IsValidChar( char c ) {
return c >= 'a' && c <= 'z';
}
public override bool IsValidChar( char c ) { return true; }
public override bool IsValidString( string s ) {
return s.Length <= 3;
}
public override bool IsValidString( string s ) { return true; }
public override bool IsValidValue( string s ) {
return s == "yes" || s == "no";
}
public override bool IsValidValue( string s ) { return true; }
}
public sealed class EnumValidator : MenuInputValidator {
public override bool IsValidChar( char c ) {
return true;
public Type EnumType;
public EnumValidator( Type type ) {
EnumType = type;
}
public override bool IsValidString( string s ) {
return true;
}
public override bool IsValidChar( char c ) { return true; }
public override bool IsValidValue( string s ) {
return true;
}
public override bool IsValidString( string s ) { return true; }
public override bool IsValidValue( string s ) { return true; }
}
public sealed class StringValidator : MenuInputValidator {

View File

@ -4,7 +4,7 @@
<ProjectGuid>{BEB1C785-5CAD-48FF-A886-876BF0A318D4}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Exe</OutputType>
<OutputType>WinExe</OutputType>
<RootNamespace>ClassicalSharp</RootNamespace>
<AssemblyName>ClassicalSharp</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>

View File

@ -271,14 +271,12 @@ namespace ClassicalSharp.Entities {
BoundingBox bb = CollisionBounds;
Vector3I P = Vector3I.Floor( spawn );
int bbMax = Utils.Floor( size.Y );
int minX = Utils.Floor( -size.X / 2 ), maxX = Utils.Floor( size.X / 2 );
int minZ = Utils.Floor( -size.Z / 2 ), maxZ = Utils.Floor( size.Z / 2 );
// Spawn player at highest valid position.
for( int y = P.Y; y <= game.World.Height; y++ ) {
bool anyHit = false;
Console.WriteLine( "~~~~~" );
for( int yy = 0; yy <= bbMax; yy++ )
for( int zz = minZ; zz <= maxZ; zz++ )
for ( int xx = minX; xx <= maxX; xx++ )