ClassiCube/ClassicalSharp/2D/Widgets/Menu/MenuInputValidator.cs

167 lines
3.9 KiB
C#

// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT
using System;
namespace ClassicalSharp.Gui {
public abstract class MenuInputValidator {
public string Range;
public abstract bool IsValidChar( char c );
public abstract bool IsValidString( string s );
public virtual bool IsValidValue( string s ) {
return IsValidString( s );
}
protected void MakeRange( string min, string max ) {
Range = "&7(" + min + " - " + max + ")";
}
}
public sealed class HexColourValidator : MenuInputValidator {
public HexColourValidator() {
Range = "&7(#000000 - #FFFFFF)";
}
public override bool IsValidChar( char c ) {
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')
|| (c >= 'a' && c <= 'f');
}
public override bool IsValidString( string s ) {
return s.Length <= 6;
}
public override bool IsValidValue( string s ) {
FastColour col;
return FastColour.TryParse( s, out col );
}
}
public class IntegerValidator : MenuInputValidator {
int min, max;
public IntegerValidator( int min, int max ) {
this.min = min;
this.max = max;
SetRange();
}
protected virtual void SetRange() {
MakeRange( min.ToString(), max.ToString() );
}
public override bool IsValidChar( char c ) {
return (c >= '0' && c <= '9') || c == '-';
}
public override bool IsValidString( string s ) {
int value;
if( s.Length == 1 && s[0] == '-' ) return true;
return Int32.TryParse( s, out value );
}
public override bool IsValidValue( string s ) {
int value;
if( !Int32.TryParse( s, out value ) ) return false;
return min <= value && value <= max;
}
}
public sealed class SeedValidator : IntegerValidator {
public SeedValidator() : base( int.MinValue, int.MaxValue ) { }
protected override void SetRange() {
Range = "&7(an integer)";
}
}
public sealed class RealValidator : MenuInputValidator {
float min, max;
public RealValidator( float min, float max ) {
this.min = min;
this.max = max;
MakeRange( min.ToString(), max.ToString() );
}
public override bool IsValidChar( char c ) {
return (c >= '0' && c <= '9') || c == '-' || c == '.' || c == ',';
}
public override bool IsValidString( string s ) {
float value;
if( s.Length == 1 && IsValidChar( s[0] ) ) return true;
return Single.TryParse( s, out value );
}
public override bool IsValidValue( string s ) {
float value;
if( !Single.TryParse( s, out value ) ) return false;
return min <= value && value <= max;
}
}
public sealed class PathValidator : MenuInputValidator {
public PathValidator() {
Range = "&7(Enter name)";
}
public override bool IsValidChar( char c ) {
return !(c == '/' || c == '\\' || c == '?' || c == '*' || c == ':'
|| c == '<' || c == '>' || c == '|' || c == '"' || c == '.');
}
public override bool IsValidString( string s ) { return true; }
}
public sealed class BooleanValidator : MenuInputValidator {
public BooleanValidator() {
Range = "&7(yes or no)";
}
public override bool IsValidChar( char c ) { return true; }
public override bool IsValidString( string s ) { return true; }
public override bool IsValidValue( string s ) { return true; }
}
public sealed class EnumValidator : MenuInputValidator {
public Type EnumType;
public EnumValidator( Type type ) {
EnumType = type;
}
public override bool IsValidChar( char c ) { return true; }
public override bool IsValidString( string s ) { return true; }
public override bool IsValidValue( string s ) { return true; }
}
public sealed class StringValidator : MenuInputValidator {
int maxLen;
public StringValidator( int len ) {
Range = "&7(Enter text)";
maxLen = len;
}
public override bool IsValidChar( char c ) {
return !(c < ' ' || c == '&' || c > '~');
}
public override bool IsValidString( string s ) {
return s.Length <= maxLen;
}
}
}