mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 10:35:11 -04:00
Treat solid white and black pixels in humanoid hats as transparent, allowed speed multiplier to be less than 1.
This commit is contained in:
parent
caaafaf754
commit
cca0b81f20
@ -17,7 +17,7 @@ namespace ClassicalSharp {
|
|||||||
// Column 1
|
// Column 1
|
||||||
Make( -140, -100, "Speed multiplier", Anchor.Centre, OnWidgetClick,
|
Make( -140, -100, "Speed multiplier", Anchor.Centre, OnWidgetClick,
|
||||||
g => g.LocalPlayer.SpeedMultiplier.ToString(),
|
g => g.LocalPlayer.SpeedMultiplier.ToString(),
|
||||||
(g, v) => { g.LocalPlayer.SpeedMultiplier = Int32.Parse( v );
|
(g, v) => { g.LocalPlayer.SpeedMultiplier = Single.Parse( v );
|
||||||
Options.Set( OptionsKey.Speed, v ); } ),
|
Options.Set( OptionsKey.Speed, v ); } ),
|
||||||
|
|
||||||
Make( -140, -50, "Show FPS", Anchor.Centre, OnWidgetClick,
|
Make( -140, -50, "Show FPS", Anchor.Centre, OnWidgetClick,
|
||||||
@ -89,13 +89,13 @@ namespace ClassicalSharp {
|
|||||||
null,
|
null,
|
||||||
};
|
};
|
||||||
validators = new MenuInputValidator[] {
|
validators = new MenuInputValidator[] {
|
||||||
new IntegerValidator( 1, 50 ),
|
new RealValidator( 0.1f, 50 ),
|
||||||
new BooleanValidator(),
|
new BooleanValidator(),
|
||||||
new BooleanValidator(),
|
new BooleanValidator(),
|
||||||
new IntegerValidator( 16, 4096 ),
|
new IntegerValidator( 16, 4096 ),
|
||||||
|
|
||||||
new IntegerValidator( 1, 100 ),
|
new IntegerValidator( 1, 100 ),
|
||||||
new RealValidator( 0.5f, 2f ),
|
new RealValidator( 0.25f, 2f ),
|
||||||
new IntegerValidator( 1, 30 ),
|
new IntegerValidator( 1, 30 ),
|
||||||
new BooleanValidator(),
|
new BooleanValidator(),
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ namespace ClassicalSharp {
|
|||||||
public Vector3 SpawnPoint;
|
public Vector3 SpawnPoint;
|
||||||
|
|
||||||
public float ReachDistance = 5f;
|
public float ReachDistance = 5f;
|
||||||
public int SpeedMultiplier = 10;
|
public float SpeedMultiplier = 10;
|
||||||
|
|
||||||
public byte UserType;
|
public byte UserType;
|
||||||
public bool PushbackBlockPlacing;
|
public bool PushbackBlockPlacing;
|
||||||
|
@ -9,7 +9,6 @@ namespace ClassicalSharp {
|
|||||||
|
|
||||||
protected Texture nameTex;
|
protected Texture nameTex;
|
||||||
protected internal int PlayerTextureId = -1, MobTextureId = -1;
|
protected internal int PlayerTextureId = -1, MobTextureId = -1;
|
||||||
internal bool RenderHat = true;
|
|
||||||
|
|
||||||
public override void Despawn() {
|
public override void Despawn() {
|
||||||
game.Graphics.DeleteTexture( ref PlayerTextureId );
|
game.Graphics.DeleteTexture( ref PlayerTextureId );
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using ClassicalSharp.Network;
|
using ClassicalSharp.Model;
|
||||||
using OpenTK;
|
using ClassicalSharp.Network;
|
||||||
|
using OpenTK;
|
||||||
|
|
||||||
namespace ClassicalSharp {
|
namespace ClassicalSharp {
|
||||||
|
|
||||||
@ -51,13 +52,14 @@ namespace ClassicalSharp {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
SkinType = Utils.GetSkinType( bmp );
|
SkinType = Utils.GetSkinType( bmp );
|
||||||
|
if( Model is PlayerModel )
|
||||||
|
ClearHat( bmp, SkinType );
|
||||||
PlayerTextureId = game.Graphics.CreateTexture( bmp );
|
PlayerTextureId = game.Graphics.CreateTexture( bmp );
|
||||||
MobTextureId = -1;
|
MobTextureId = -1;
|
||||||
|
|
||||||
// Custom mob textures.
|
// Custom mob textures.
|
||||||
if( Utils.IsUrlPrefix( SkinName ) && item.TimeAdded > lastModelChange )
|
if( Utils.IsUrlPrefix( SkinName ) && item.TimeAdded > lastModelChange )
|
||||||
MobTextureId = PlayerTextureId;
|
MobTextureId = PlayerTextureId;
|
||||||
RenderHat = HasHat( bmp, SkinType );
|
|
||||||
} catch( NotSupportedException ) {
|
} catch( NotSupportedException ) {
|
||||||
ResetSkin( bmp );
|
ResetSkin( bmp );
|
||||||
}
|
}
|
||||||
@ -71,7 +73,6 @@ namespace ClassicalSharp {
|
|||||||
MobTextureId = -1;
|
MobTextureId = -1;
|
||||||
PlayerTextureId = -1;
|
PlayerTextureId = -1;
|
||||||
SkinType = game.DefaultPlayerSkinType;
|
SkinType = game.DefaultPlayerSkinType;
|
||||||
RenderHat = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DateTime lastModelChange = new DateTime( 1, 1, 1 );
|
DateTime lastModelChange = new DateTime( 1, 1, 1 );
|
||||||
@ -82,7 +83,7 @@ namespace ClassicalSharp {
|
|||||||
MobTextureId = -1;
|
MobTextureId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe static bool HasHat( Bitmap bmp, SkinType skinType ) {
|
unsafe static void ClearHat( Bitmap bmp, SkinType skinType ) {
|
||||||
using( FastBitmap fastBmp = new FastBitmap( bmp, true ) ) {
|
using( FastBitmap fastBmp = new FastBitmap( bmp, true ) ) {
|
||||||
int sizeX = (bmp.Width / 64) * 32;
|
int sizeX = (bmp.Width / 64) * 32;
|
||||||
int yScale = skinType == SkinType.Type64x32 ? 32 : 64;
|
int yScale = skinType == SkinType.Type64x32 ? 32 : 64;
|
||||||
@ -95,13 +96,14 @@ namespace ClassicalSharp {
|
|||||||
row += sizeX;
|
row += sizeX;
|
||||||
for( int x = 0; x < sizeX; x++ ) {
|
for( int x = 0; x < sizeX; x++ ) {
|
||||||
int pixel = row[x];
|
int pixel = row[x];
|
||||||
if( !(pixel == fullWhite || pixel == fullBlack) ) {
|
Console.WriteLine( pixel.ToString( "X8" ) );
|
||||||
return true;
|
if( pixel == fullWhite ) row[x] = 0;
|
||||||
}
|
if( pixel == fullBlack ) row[x] = 0;
|
||||||
|
Console.WriteLine( row[x].ToString( "X8" ) );
|
||||||
|
Console.WriteLine( "====" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -72,7 +72,7 @@ namespace ClassicalSharp {
|
|||||||
public int MouseSensitivity = 30;
|
public int MouseSensitivity = 30;
|
||||||
public int ChatLines = 12;
|
public int ChatLines = 12;
|
||||||
public bool HideGui = false, ShowFPS = true;
|
public bool HideGui = false, ShowFPS = true;
|
||||||
internal float HudScale = 1f;
|
internal float HudScale = 1.0f;
|
||||||
|
|
||||||
public Animations Animations;
|
public Animations Animations;
|
||||||
internal int CloudsTextureId, RainTextureId, SnowTextureId;
|
internal int CloudsTextureId, RainTextureId, SnowTextureId;
|
||||||
@ -124,7 +124,7 @@ namespace ClassicalSharp {
|
|||||||
ViewDistance = Options.GetInt( OptionsKey.ViewDist, 16, 4096, 512 );
|
ViewDistance = Options.GetInt( OptionsKey.ViewDist, 16, 4096, 512 );
|
||||||
InputHandler = new InputHandler( this );
|
InputHandler = new InputHandler( this );
|
||||||
Chat = new ChatLog( this );
|
Chat = new ChatLog( this );
|
||||||
HudScale = Options.GetFloat( OptionsKey.HudScale, 0.5f, 2f, 1 );
|
HudScale = Options.GetFloat( OptionsKey.HudScale, 0.25f, 2f, 1 );
|
||||||
defaultIb = Graphics.MakeDefaultIb();
|
defaultIb = Graphics.MakeDefaultIb();
|
||||||
MouseSensitivity = Options.GetInt( OptionsKey.Sensitivity, 1, 100, 30 );
|
MouseSensitivity = Options.GetInt( OptionsKey.Sensitivity, 1, 100, 30 );
|
||||||
BlockInfo = new BlockInfo();
|
BlockInfo = new BlockInfo();
|
||||||
@ -149,7 +149,7 @@ namespace ClassicalSharp {
|
|||||||
BlockInfo.SetDefaultBlockPermissions( Inventory.CanPlace, Inventory.CanDelete );
|
BlockInfo.SetDefaultBlockPermissions( Inventory.CanPlace, Inventory.CanDelete );
|
||||||
Map = new Map( this );
|
Map = new Map( this );
|
||||||
LocalPlayer = new LocalPlayer( this );
|
LocalPlayer = new LocalPlayer( this );
|
||||||
LocalPlayer.SpeedMultiplier = Options.GetInt( OptionsKey.Speed, 1, 50, 10 );
|
LocalPlayer.SpeedMultiplier = Options.GetFloat( OptionsKey.Speed, 0.1f, 50, 10 );
|
||||||
Players[255] = LocalPlayer;
|
Players[255] = LocalPlayer;
|
||||||
width = Width;
|
width = Width;
|
||||||
height = Height;
|
height = Height;
|
||||||
|
@ -74,11 +74,9 @@ namespace ClassicalSharp.Model {
|
|||||||
graphics.UpdateDynamicIndexedVb( DrawMode.Triangles, cache.vb, cache.vertices, index, index * 6 / 4 );
|
graphics.UpdateDynamicIndexedVb( DrawMode.Triangles, cache.vb, cache.vertices, index, index * 6 / 4 );
|
||||||
|
|
||||||
graphics.AlphaTest = true;
|
graphics.AlphaTest = true;
|
||||||
if( p.RenderHat ) {
|
index = 0;
|
||||||
index = 0;
|
DrawRotate( 0, 24f/16f, 0, -p.PitchRadians, 0, 0, model.Hat );
|
||||||
DrawRotate( 0, 24f/16f, 0, -p.PitchRadians, 0, 0, model.Hat );
|
graphics.UpdateDynamicIndexedVb( DrawMode.Triangles, cache.vb, cache.vertices, index, index * 6 / 4 );
|
||||||
graphics.UpdateDynamicIndexedVb( DrawMode.Triangles, cache.vb, cache.vertices, index, index * 6 / 4 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ModelSet {
|
class ModelSet {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user