From e565fb700776f8904529fc04afc458a64af24a1d Mon Sep 17 00:00:00 2001 From: Tamir Atias Date: Sun, 15 Jan 2012 16:55:11 +0200 Subject: [PATCH] [Add] Health bar for player. --- src/Unuk/Game.cpp | 45 +++++++++++++++++++++++++++++++-------------- src/Unuk/Game.h | 6 +++++- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/src/Unuk/Game.cpp b/src/Unuk/Game.cpp index d8c0078..4b18f39 100644 --- a/src/Unuk/Game.cpp +++ b/src/Unuk/Game.cpp @@ -34,24 +34,32 @@ gameNavVal_t Game::Run(const string savegameIDArg) { Timer renderTimer; Timer updateTimer; - _gameRenderTime.SetXY(10, 10); + _gameRenderTime.SetXY(10, 50); _gameRenderTime.SetTextBlended("Render - XX", vsmall, COLOUR_BLACK); - _gameUpdateTime.SetXY(10, 30); + _gameUpdateTime.SetXY(10, 70); _gameUpdateTime.SetTextBlended("Update - XX", vsmall, COLOUR_BLACK); stringstream playerXYString; - _playerXY.SetXY(10, 50); + _playerXY.SetXY(10, 90); _playerXY.SetTextBlended("Player coords - XX XX", vsmall, COLOUR_BLACK); - stringstream playerHealth; - _playerHealth.SetXY(10, 80); - _playerHealth.SetTextBlended("Player Health - XX", vsmall, COLOUR_BLACK); - stringstream npcHealth; - _npcHealth.SetXY(10, 100); + _npcHealth.SetXY(10, 110); _npcHealth.SetTextBlended("NPC 0 Health - XX", vsmall, COLOUR_BLACK); + _healthBarBg.SetRGB(0, 0, 0); + _healthBarBg.SetXY(10, 20); + _healthBarBg.SetWidthHeight(200, 25); + + _healthBar.SetRGB(255, 0, 0); + _healthBar.SetXY(10, 20); + _healthBar.SetWidthHeight(200, 25); + + stringstream playerHealth; + _playerHealth.SetXY(15, 27); + _playerHealth.SetTextBlended("Player Health - XX", vsmall, COLOUR_WHITE); + _gameRunning = true; while(_gameRunning) { bool stillRunning = true; @@ -90,6 +98,14 @@ gameNavVal_t Game::Run(const string savegameIDArg) { fpsCalc.Start(); frame = 0; + playerHealth.str(""); + playerHealth << "Player Health: " << _player->GetHealth(); + _playerHealth.SetTextBlended(playerHealth.str(), vsmall, COLOUR_WHITE); + + _healthBar.SetWidthHeight( + (int)(((float)_player->GetHealth() / 100.0f) * 200.0f), + _healthBar.GetHeight()); + // Check to see if we are allowed to display debug info. if(debugEnabled) { _gameUpdateTime.SetTextBlended("Update - " + updateTimer.GetTicksStr(), vsmall, COLOUR_BLACK); @@ -99,10 +115,6 @@ gameNavVal_t Game::Run(const string savegameIDArg) { playerXYString << "Player coords: x" << _player->GetX() << ", y" << _player->GetY(); _playerXY.SetTextBlended(playerXYString.str(), vsmall, COLOUR_BLACK); - playerHealth.str(""); - playerHealth << "Player Health: " << _player->GetHealth(); - _playerHealth.SetTextBlended(playerHealth.str(), vsmall, COLOUR_BLACK); - int npc0Health = 0; if(_map.GetWorld().GetNPCCount() == 0) { npc0Health = 0; @@ -139,6 +151,7 @@ void Game::HandleInput(void) { _ingameMenu.SetStatus(true); if(event.key.keysym.sym == SDLK_p) debugEnabled = !debugEnabled; + _player->SetHealth(50); } else if(event.type == SDL_QUIT) { _gameRunning = false; @@ -188,18 +201,22 @@ void Game::UpdateGame(void) { } void Game::Render(void) { - // SDL_FillRect(screen, NULL, 0); // You might want to clear the buffer! --konom + //SDL_FillRect(screen, NULL, 0); // You might want to clear the buffer! --konom if(_ingameMenu.GetStatus() == false) { _map.Render(); _player->Render(); + _healthBarBg.DrawLiteral(); + _healthBar.DrawLiteral(); + _playerHealth.RenderLiteral(); + if(debugEnabled) { _gameRenderTime.RenderLiteral(); _gameUpdateTime.RenderLiteral(); _playerXY.RenderLiteral(); - _playerHealth.RenderLiteral(); _npcHealth.RenderLiteral(); } + } else { _ingameMenu.Render(); } diff --git a/src/Unuk/Game.h b/src/Unuk/Game.h index 24aee2a..d0c7172 100644 --- a/src/Unuk/Game.h +++ b/src/Unuk/Game.h @@ -16,6 +16,7 @@ #include "../libUnuk/System/Debug.h" #include "../libUnuk/UI/Text.h" #include "../libUnuk/Engine/MemClass.h" +#include "../libUnuk/System/Rect.h" using namespace std; enum gameNavVal_t { gameMainMenu, gameQuitGame }; @@ -49,11 +50,14 @@ private: Text _gameUpdateTime; Text _gameRenderTime; Text _playerXY; - Text _playerHealth; Text _npcHealth; IngameMenu _ingameMenu; Map _map; Player* _player; + + Text _playerHealth; + Rect _healthBarBg; + Rect _healthBar; };