Healthbars

* Hotkey now toggles between Default/Off/Always/Damaged/Selected
* Code clean up
This commit is contained in:
titison 2014-11-06 21:12:47 +01:00
parent 791e1edec6
commit 2f60d179e9
4 changed files with 43 additions and 11 deletions

View File

@ -115,7 +115,7 @@ Game::Game() : ProgramState(NULL) {
renderFpsAvgTest=0; renderFpsAvgTest=0;
renderExtraTeamColor=0; renderExtraTeamColor=0;
photoModeEnabled=false; photoModeEnabled=false;
forcedHealthbars=false; healthbarMode=hbvUndefined;
visibleHUD=false; visibleHUD=false;
timeDisplay=false; timeDisplay=false;
withRainEffect=false; withRainEffect=false;
@ -236,7 +236,7 @@ void Game::resetMembers() {
scrollSpeed = Config::getInstance().getFloat("UiScrollSpeed","1.5"); scrollSpeed = Config::getInstance().getFloat("UiScrollSpeed","1.5");
photoModeEnabled = Config::getInstance().getBool("PhotoMode","false"); photoModeEnabled = Config::getInstance().getBool("PhotoMode","false");
forcedHealthbars = Config::getInstance().getBool("ForcedHealthbars","false"); healthbarMode = Config::getInstance().getInt("HealthbarMode","0");
visibleHUD = Config::getInstance().getBool("VisibleHud","true"); visibleHUD = Config::getInstance().getBool("VisibleHud","true");
timeDisplay = Config::getInstance().getBool("TimeDisplay","true"); timeDisplay = Config::getInstance().getBool("TimeDisplay","true");
withRainEffect = Config::getInstance().getBool("RainEffect","true"); withRainEffect = Config::getInstance().getBool("RainEffect","true");
@ -4659,7 +4659,32 @@ void Game::keyDown(SDL_KeyboardEvent key) {
} }
//Toggle Healthbars //Toggle Healthbars
else if(isKeyPressed(configKeys.getSDLKey("ToggleHealthbars"),key, false) == true) { else if(isKeyPressed(configKeys.getSDLKey("ToggleHealthbars"),key, false) == true) {
forcedHealthbars = !forcedHealthbars; switch (healthbarMode) {
case hbvUndefined:
healthbarMode=hbvOff;
console.addLine(lang.getString("HealthbarsOff"));
break;
case hbvOff:
healthbarMode=hbvAlways;
console.addLine(lang.getString("HealthbarsAlways"));
break;
case hbvAlways:
healthbarMode=hbvDamaged;
console.addLine(lang.getString("HealthbarsDamaged"));
break;
case hbvDamaged:
healthbarMode=hbvSelected;
console.addLine(lang.getString("HealthbarsSelected"));
break;
case hbvSelected:
healthbarMode=hbvUndefined;
console.addLine(lang.getString("HealthbarsDefault"));
break;
default:
printf("In [%s::%s Line: %d] Toggle Healthbars Hotkey - Invalid Value. Setting to default.\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
healthbarMode=hbvUndefined;
break;
}
} }
//Toggle music //Toggle music
//else if(key == configKeys.getCharKey("ToggleMusic")) { //else if(key == configKeys.getCharKey("ToggleMusic")) {
@ -5259,7 +5284,7 @@ void Game::render3d(){
//renderOnTopBars (aka Healthbars) //renderOnTopBars (aka Healthbars)
if(photoModeEnabled == false) { if(photoModeEnabled == false) {
renderer.renderHealthBars(forcedHealthbars); renderer.renderHealthBars(healthbarMode);
} }
//particles //particles

View File

@ -141,7 +141,7 @@ private:
static const int renderTeamColorPlaneBit=2; static const int renderTeamColorPlaneBit=2;
bool photoModeEnabled; bool photoModeEnabled;
bool forcedHealthbars; int healthbarMode;
bool visibleHUD; bool visibleHUD;
bool timeDisplay; bool timeDisplay;
bool withRainEffect; bool withRainEffect;

View File

@ -5610,7 +5610,7 @@ void Renderer::renderSelectionEffects() {
glPopAttrib(); glPopAttrib();
} }
void Renderer::renderHealthBars(bool forceHealthbars){ void Renderer::renderHealthBars(int healthbarMode){
if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == true) { if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == true) {
return; return;
} }
@ -5641,7 +5641,7 @@ void Renderer::renderHealthBars(bool forceHealthbars){
float healthbarheight; float healthbarheight;
float healthbarthickness; float healthbarthickness;
int healthbarVisible; int healthbarVisible=hbvUndefined;
const Texture2D *healthbarTexture; const Texture2D *healthbarTexture;
const Texture2D *healthbarBackgroundTexture; const Texture2D *healthbarBackgroundTexture;
bool healthbarLineBorder; bool healthbarLineBorder;
@ -5649,7 +5649,12 @@ void Renderer::renderHealthBars(bool forceHealthbars){
//get settings of the faction //get settings of the faction
healthbarheight=unit->getFaction()->getType()->getHealthbarHeight(); healthbarheight=unit->getFaction()->getType()->getHealthbarHeight();
healthbarthickness=unit->getFaction()->getType()->getHealthbarThickness(); healthbarthickness=unit->getFaction()->getType()->getHealthbarThickness();
healthbarVisible=unit->getFaction()->getType()->getHealthbarVisible(); //check options (hotkey)
if(healthbarMode==hbvUndefined) {
healthbarVisible=unit->getFaction()->getType()->getHealthbarVisible();
} else {
healthbarVisible=healthbarMode;
}
healthbarLineBorder=unit->getFaction()->getType()->isHealthbarLineBorder(); healthbarLineBorder=unit->getFaction()->getType()->isHealthbarLineBorder();
CoreData &coreData= CoreData::getInstance(); CoreData &coreData= CoreData::getInstance();
//First try faction texture then use core Texture //First try faction texture then use core Texture
@ -5678,7 +5683,9 @@ void Renderer::renderHealthBars(bool forceHealthbars){
if(unit->getType()->getHealthbarThickness()!=-1.0f) { if(unit->getType()->getHealthbarThickness()!=-1.0f) {
healthbarthickness=unit->getType()->getHealthbarThickness(); healthbarthickness=unit->getType()->getHealthbarThickness();
} }
healthbarVisible=unit->getType()->getHealthbarVisible(); if(healthbarMode==hbvUndefined) { //don't override the visible setting when hotkey is not hbvUndefined
healthbarVisible=unit->getType()->getHealthbarVisible();
}
} }
bool settingsWantToRenderThem=!(healthbarVisible==hbvUndefined || (healthbarVisible&hbvOff)) bool settingsWantToRenderThem=!(healthbarVisible==hbvUndefined || (healthbarVisible&hbvOff))
@ -5686,7 +5693,7 @@ void Renderer::renderHealthBars(bool forceHealthbars){
|| ((healthbarVisible&hbvDamaged) && unit->getHp()!=unit->getType()->getMaxHp()) || ((healthbarVisible&hbvDamaged) && unit->getHp()!=unit->getType()->getMaxHp())
|| ((healthbarVisible&hbvSelected) && game->getGui()->isSelected(unit))); || ((healthbarVisible&hbvSelected) && game->getGui()->isSelected(unit)));
if(unit->isAlive() && (settingsWantToRenderThem || forceHealthbars)) { if(unit->isAlive() && (settingsWantToRenderThem)) {
Vec3f currVec= unit->getCurrVectorFlat(); Vec3f currVec= unit->getCurrVectorFlat();
if(healthbarheight==-100.0f) { if(healthbarheight==-100.0f) {
currVec.y+=unit->getType()->getHeight(); currVec.y+=unit->getType()->getHeight();

View File

@ -549,7 +549,7 @@ public:
void renderUnitsToBuild(const int renderFps); void renderUnitsToBuild(const int renderFps);
void renderSelectionEffects(); void renderSelectionEffects();
void renderHealthBars(bool forceHealthbars=false); void renderHealthBars(int forceHealthbars=hbvUndefined);
void renderWaterEffects(); void renderWaterEffects();
void renderHud(); void renderHud();
void renderMinimap(); void renderMinimap();