RenderType command should save between sessions. (Thanks classic1234)

This commit is contained in:
UnknownShadow200 2016-06-26 22:36:49 +10:00
parent 8bd253a455
commit b2d0737b18
5 changed files with 55 additions and 31 deletions

View File

@ -80,7 +80,7 @@ namespace ClassicalSharp.Commands {
public override void Execute( CommandReader reader ) {
string property = reader.Next();
if( property == null ) {
game.Chat.Add( "&e/client info: &cYou didn't specify a property." );
game.Chat.Add( "&e/client: &cYou didn't specify a property." );
} else if( Utils.CaselessEquals( property, "pos" ) ) {
game.Chat.Add( "Feet: " + game.LocalPlayer.Position );
game.Chat.Add( "Eye: " + game.LocalPlayer.EyePosition );
@ -99,7 +99,7 @@ namespace ClassicalSharp.Commands {
game.Chat.Add( "map height: " + game.World.Height );
game.Chat.Add( "map length: " + game.World.Length );
} else {
game.Chat.Add( "&e/client info: Unrecognised property: \"&f" + property + "&e\"." );
game.Chat.Add( "&e/client: Unrecognised property: \"&f" + property + "&e\"." );
}
}
}
@ -120,31 +120,11 @@ namespace ClassicalSharp.Commands {
public override void Execute( CommandReader reader ) {
string property = reader.Next();
if( property == null ) {
game.Chat.Add( "&e/client rendertype: &cYou didn't specify a new render type." );
} else if( Utils.CaselessEquals( property, "legacyfast" ) ) {
SetNewRenderType( true, true );
game.Chat.Add( "&e/client rendertype: &fRender type is now fast legacy." );
} else if( Utils.CaselessEquals( property, "legacy" ) ) {
SetNewRenderType( true, false );
game.Chat.Add( "&e/client rendertype: &fRender type is now legacy." );
} else if( Utils.CaselessEquals( property, "normal" ) ) {
SetNewRenderType( false, false );
game.Chat.Add( "&e/client rendertype: &fRender type is now normal." );
} else if( Utils.CaselessEquals( property, "normalfast" ) ) {
SetNewRenderType( false, true );
game.Chat.Add( "&e/client rendertype: &fRender type is now normalfast." );
}
}
void SetNewRenderType( bool legacy, bool minimal ) {
game.MapBordersRenderer.UseLegacyMode( legacy );
if( minimal ) {
game.ReplaceComponent( ref game.EnvRenderer, new MinimalEnvRenderer() );
game.Chat.Add( "&e/client: &cYou didn't specify a new render type." );
} else if( game.SetRenderType( property ) ) {
game.Chat.Add( "&e/client: &fRender type is now " + property + "." );
} else {
if( !(game.EnvRenderer is StandardEnvRenderer) ) {
game.ReplaceComponent( ref game.EnvRenderer, new StandardEnvRenderer() );
}
((StandardEnvRenderer)game.EnvRenderer).UseLegacyMode( legacy );
game.Chat.Add( "&e/client: &cUnrecognised render type &f\"" + property + "\"&c." );
}
}
}

View File

@ -95,9 +95,12 @@ namespace ClassicalSharp {
Entities[255] = LocalPlayer;
width = Width;
height = Height;
MapRenderer = new MapRenderer( this );
MapBordersRenderer = AddComponent( new MapBordersRenderer() );
EnvRenderer = AddComponent( new StandardEnvRenderer() );
string renType = Options.Get( OptionsKey.RenderType ) ?? "normal";
if( !SetRenderType( renType ) )
SetRenderType( "normal" );
if( IPAddress == null ) {
Network = new Singleplayer.SinglePlayerServer( this );
} else {
@ -592,7 +595,7 @@ namespace ClassicalSharp {
if( bmp.Width > maxSize || bmp.Height > maxSize ) {
Chat.Add( "&cUnable to use " + file + " from the texture pack." );
Chat.Add( "&c Its size is (" + bmp.Width + "," + bmp.Height
+ "), your GPU supports (" + maxSize + "," + maxSize + ") at most." );
+ "), your GPU supports (" + maxSize + "," + maxSize + ") at most." );
return false;
}
@ -610,6 +613,45 @@ namespace ClassicalSharp {
}
}
public bool SetRenderType( string type ) {
if( Utils.CaselessEquals( type, "legacyfast" ) ) {
SetNewRenderType( true, true );
} else if( Utils.CaselessEquals( type, "legacy" ) ) {
SetNewRenderType( true, false );
} else if( Utils.CaselessEquals( type, "normal" ) ) {
SetNewRenderType( false, false );
} else if( Utils.CaselessEquals( type, "normalfast" ) ) {
SetNewRenderType( false, true );
} else {
return false;
}
Options.Set( OptionsKey.RenderType, type );
return true;
}
void SetNewRenderType( bool legacy, bool minimal ) {
if( MapBordersRenderer == null ) {
MapBordersRenderer = AddComponent( new MapBordersRenderer() );
MapBordersRenderer.legacy = legacy;
} else {
MapBordersRenderer.UseLegacyMode( legacy );
}
if( minimal ) {
if( EnvRenderer == null )
EnvRenderer = AddComponent( new MinimalEnvRenderer() );
else
ReplaceComponent( ref EnvRenderer, new MinimalEnvRenderer() );
} else if( EnvRenderer == null ) {
EnvRenderer = AddComponent( new StandardEnvRenderer() );
((StandardEnvRenderer)EnvRenderer).legacy = legacy;
} else {
if( !(EnvRenderer is StandardEnvRenderer) )
ReplaceComponent( ref EnvRenderer, new StandardEnvRenderer() );
((StandardEnvRenderer)EnvRenderer).UseLegacyMode( legacy );
}
}
public Game( string username, string mppass, string skinServer,
bool nullContext, int width, int height ) {
window = new DesktopWindow( this, username, nullContext, width, height );

View File

@ -18,7 +18,8 @@ namespace ClassicalSharp.Renderers {
int sidesVb = -1, edgesVb = -1;
int edgeTexId, sideTexId;
int sidesVertices, edgesVertices;
bool legacy, fullColSides, fullColEdge;
internal bool legacy;
bool fullColSides, fullColEdge;
public void UseLegacyMode( bool legacy ) {
this.legacy = legacy;

View File

@ -9,7 +9,7 @@ namespace ClassicalSharp.Renderers {
public unsafe class StandardEnvRenderer : EnvRenderer {
int cloudsVb = -1, cloudVertices, skyVb = -1, skyVertices;
bool legacy;
internal bool legacy;
public void UseLegacyMode( bool legacy ) {
this.legacy = legacy;

View File

@ -22,6 +22,7 @@ namespace ClassicalSharp {
public const string AutoCloseLauncher = "autocloselauncher";
public const string ViewBobbing = "viewbobbing";
public const string EntityShadow = "entityshadow";
public const string RenderType = "normal";
public const string HacksEnabled = "hacks-hacksenabled";
public const string FieldOfView = "hacks-fov";