Some sample game work (still broken)

This commit is contained in:
Maddy Thorson 2021-12-22 16:57:20 -08:00
parent 11732daf5d
commit d3bf09f173
2 changed files with 31 additions and 17 deletions

View File

@ -6,7 +6,8 @@ namespace Strawberry.Sample
public this()
{
Add(new Player(.(50, 50)));
Add(Player.Create(.(50, 50)));
Add(new OldSolid(.(0, 168), .(0, 0, 320, 12)));
Add(new OldJumpThru(.(200, 132), 48));
Add(new MovingJumpThru(.(136, 100), 32, .(124, 140), 2f));

View File

@ -2,20 +2,36 @@ using System;
namespace Strawberry.Sample
{
public class Player : Component, IUpdate
public class Player : Component, IUpdate, IDraw
{
static public Entity Create(Point pos)
{
let e = new Entity(pos);
e.Add(new Player());
let hitbox = e.Add(new Hitbox(-4, -8, 16, 16));
e.Add(new Physics(hitbox));
return e;
}
public Vector Speed;
private Physics physics;
private Timer tJumpGrace;
private Timer tVarJump;
public this(Point pos)
: base(pos)
public override void Added()
{
Hitbox = Rect(-4, -8, 16, 16);
base.Added();
Add(tJumpGrace = new Timer());
Add(tVarJump = new Timer());
tJumpGrace = Entity.Add(new Timer());
tVarJump = Entity.Add(new Timer());
}
public override void Awake()
{
physics = Entity.First<Physics>();
}
public void Update()
@ -31,7 +47,7 @@ namespace Strawberry.Sample
const float runAccel = 800;
const float runAccelAirMult = 0.8f; // Gives you slightly less control of horizontal motion in the air
let onGround = GroundCheck();
let onGround = physics.GroundCheck();
if (onGround)
tJumpGrace.Value = coyoteTime;
@ -80,28 +96,25 @@ namespace Strawberry.Sample
}
//Resolve Speed
MoveX(Speed.X * Time.Delta, scope => OnCollideX);
MoveY(Speed.Y * Time.Delta, scope => OnCollideY);
physics.MoveX(Speed.X * Time.Delta, scope => OnCollideX);
physics.MoveY(Speed.Y * Time.Delta, scope => OnCollideY);
}
private void OnCollideX(Collision col)
{
Speed.X = 0;
ZeroRemainderX();
physics.ZeroRemainderX();
}
private void OnCollideY(Collision col)
{
Speed.Y = 0;
ZeroRemainderY();
physics.ZeroRemainderY();
}
public override void Draw()
public void Draw()
{
base.Draw();
DrawHitboxOutline(.Green);
Game.Batcher.Tex(Assets.Textures["test"], X - 4, Y - 8);
physics.Hitbox.DebugDraw();
}
}
}