From 851f430a401863e0c9075e6aa19e095c2c4330ea Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Mon, 21 Dec 2015 17:23:36 +1100 Subject: [PATCH] When opening block select screen, selected block should be at bottom of visible portion of table not top (thanks imjonnyboy). Noclip should not have drag applied when no movement keys are behind held down. --- ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs | 3 +-- ClassicalSharp/2D/Screens/BlockSelectScreen.cs | 3 ++- ClassicalSharp/Entities/LocalPlayer.Physics.cs | 5 ++++- ClassicalSharp/Entities/LocalPlayer.cs | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs b/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs index d6d253958..7af6a823a 100644 --- a/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs +++ b/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs @@ -35,8 +35,7 @@ namespace ClassicalSharp { } return true; } - int scrollY; - + int scrollY; void UpdateScrollY() { scrollY = selIndex / blocksPerRow; diff --git a/ClassicalSharp/2D/Screens/BlockSelectScreen.cs b/ClassicalSharp/2D/Screens/BlockSelectScreen.cs index 1ae4ff677..323931bfc 100644 --- a/ClassicalSharp/2D/Screens/BlockSelectScreen.cs +++ b/ClassicalSharp/2D/Screens/BlockSelectScreen.cs @@ -93,7 +93,8 @@ namespace ClassicalSharp { RecreateBlockTable(); Block held = game.Inventory.HeldBlock; selIndex = Array.IndexOf( blocksTable, held ); - UpdateScrollY(); + scrollY = (selIndex / blocksPerRow) - (maxRows - 1); + ClampScrollY(); MoveCursorToSelected(); game.Keyboard.KeyRepeat = true; diff --git a/ClassicalSharp/Entities/LocalPlayer.Physics.cs b/ClassicalSharp/Entities/LocalPlayer.Physics.cs index ea535fd77..fdc02ff65 100644 --- a/ClassicalSharp/Entities/LocalPlayer.Physics.cs +++ b/ClassicalSharp/Entities/LocalPlayer.Physics.cs @@ -10,7 +10,10 @@ namespace ClassicalSharp { bool useLiquidGravity = false; // used by BlockDefinitions. bool canLiquidJump = true; - void UpdateVelocityYState() { + void UpdateVelocityState( float xMoving, float zMoving ) { + if( noClip && xMoving == 0 && zMoving == 0 ) + Velocity = Vector3.Zero; + if( flying || noClip ) { Velocity.Y = 0; // eliminate the effect of gravity if( flyingUp || jumping ) { diff --git a/ClassicalSharp/Entities/LocalPlayer.cs b/ClassicalSharp/Entities/LocalPlayer.cs index c2d29d8ba..f54f706d7 100644 --- a/ClassicalSharp/Entities/LocalPlayer.cs +++ b/ClassicalSharp/Entities/LocalPlayer.cs @@ -100,7 +100,7 @@ namespace ClassicalSharp { lastPitch = nextPitch; HandleInput( ref xMoving, ref zMoving ); - UpdateVelocityYState(); + UpdateVelocityState( xMoving, zMoving ); PhysicsTick( xMoving, zMoving ); nextPos = Position;