by frame skip off i mean that the game should just slow down if the fps drops, just like in terraria, i got this code currently and want to implement it to it:
static class Globals { static public Time dt = new Time(); static public Vector2f Friction { get { return new Vector2f(2 * dt.AsSeconds(), 0); } } } class Player { private void StartMoving(int _direction) { moving = true; direction = _direction; heldfor = 1; Move(direction); } public void Move(int _direction) { if(!moving) { StartMoving(_direction); return; } if(direction == _direction) { if(heldfor < heldforlimit) heldfor++; Velocity += new Vector2f(((speed * (heldfor / 10f)) * direction) * Globals.dt.AsSeconds(), 0); } else { direction = _direction; heldfor /= 2; Velocity = new Vector2f(Velocity.X / 1.5f, Velocity.Y); if (heldfor < heldforlimit) heldfor++; Velocity += new Vector2f(((speed * (heldfor / 10f)) * direction) * Globals.dt.AsSeconds(), 0); } } public void StopMoving() { moving = false; heldfor = 1; } public void Update(Time dt) { if(!moving) { if(Math.Abs(Velocity.X) - Globals.Friction.X < 0) { Velocity.X = 0; } else { // i really should make this direction independent and apply direction at end of the update Velocity.X = Velocity.X > 0 ? Velocity.X - Globals.Friction.X : Velocity.X + Globals.Friction.X; } if (Math.Abs(Velocity.X) <= velocitySnapX) Velocity.X = 0; if (Math.Abs(Velocity.Y) <= velocitySnapY) Velocity.Y = 0; } if (Math.Abs(Velocity.X) > XMaxvel) Velocity.X = XMaxvel * direction; if (Math.Abs(Velocity.Y) > YMaxvel) Velocity.Y = YMaxvel * direction; Position += Velocity; } } class Program { Player player = new Player(); while(game.isrunning) // this is made up as the genuine code is too messy { if (Keyboard.IsKeyPressed(Keyboard.Key.Right)) { player.Move(1); } if (Keyboard.IsKeyPressed(Keyboard.Key.Left)) { player.Move(-1); } window.Clear(Color.White); window.Draw(player); player.Update(Globals.dt); window.DispatchEvents(); window.Display(); window.SetView(mainview); Globals.dt = deltaclock.Restart(); } }