Add player health & a heart sprite.

GitOrigin-RevId: 3389f46044a3fbb48af8533370c0318982c9ad83
This commit is contained in:
Colin McMillen 2020-02-27 16:26:22 -05:00
parent c213009134
commit c189cfcc09
3 changed files with 19 additions and 5 deletions

View File

@ -36,8 +36,13 @@ namespace SemiColinGames {
private double jumpTime = 0; private double jumpTime = 0;
public Player() { public Player() {
Health = MaxHealth;
} }
public int MaxHealth { get; private set; } = 5;
public int Health { get; private set; }
public int Facing { get; private set; } = 1; public int Facing { get; private set; } = 1;
public Point Position { get { return position; } } public Point Position { get { return position; } }

View File

@ -95,15 +95,23 @@ namespace SemiColinGames {
Debug.Draw(graphics, basicEffect); Debug.Draw(graphics, basicEffect);
// Draw in-world UI on top of everything. // Draw in-world UI on top of everything.
if (paused) { spriteBatch.Begin(
spriteBatch.Begin( SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, null);
SpriteSortMode.Deferred, null, SamplerState.PointClamp, null, null, null, null); for (int i = 0; i < player.MaxHealth; i++) {
Vector2 pos = new Vector2(16 + 16 * i, 8);
if (player.Health > i) {
spriteBatch.Draw(Textures.Heart.Get, pos, new Rectangle(0, 0, 16, 16), Color.White);
} else {
spriteBatch.Draw(Textures.Heart.Get, pos, new Rectangle(16, 0, 16, 16), Color.White);
}
}
if (paused) {
string text = "Paused"; string text = "Paused";
Vector2 position = Textures.BannerFont.CenteredOn(text, camera.HalfSize); Vector2 position = Textures.BannerFont.CenteredOn(text, camera.HalfSize);
Text.DrawOutlined(spriteBatch, Textures.BannerFont, text, position, Color.White); Text.DrawOutlined(spriteBatch, Textures.BannerFont, text, position, Color.White);
spriteBatch.End();
} }
spriteBatch.End();
// Get ready to draw sceneTarget to screen. // Get ready to draw sceneTarget to screen.
graphics.SetRenderTarget(null); graphics.SetRenderTarget(null);
@ -124,7 +132,7 @@ namespace SemiColinGames {
} }
// Actually draw to screen. // Actually draw to screen.
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend,
SamplerState.PointClamp, DepthStencilState.Default, SamplerState.PointClamp, DepthStencilState.Default,
RasterizerState.CullNone); RasterizerState.CullNone);
spriteBatch.Draw(sceneTarget, drawRect, Color.White); spriteBatch.Draw(sceneTarget, drawRect, Color.White);

View File

@ -34,6 +34,7 @@ namespace SemiColinGames {
public static SpriteFont BannerFont; public static SpriteFont BannerFont;
public static TextureRef Player = new TextureRef("sprites/ccg/ninja_female"); public static TextureRef Player = new TextureRef("sprites/ccg/ninja_female");
public static TextureRef Heart = new TextureRef("sprites/semicolin/heart");
// Backgrounds are indexed by draw order; the first element should be drawn furthest back. // Backgrounds are indexed by draw order; the first element should be drawn furthest back.
public static TextureRef[] Backgrounds = new TextureRef[] { public static TextureRef[] Backgrounds = new TextureRef[] {