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;
renderExtraTeamColor=0;
photoModeEnabled=false;
forcedHealthbars=false;
healthbarMode=hbvUndefined;
visibleHUD=false;
timeDisplay=false;
withRainEffect=false;
@ -236,7 +236,7 @@ void Game::resetMembers() {
scrollSpeed = Config::getInstance().getFloat("UiScrollSpeed","1.5");
photoModeEnabled = Config::getInstance().getBool("PhotoMode","false");
forcedHealthbars = Config::getInstance().getBool("ForcedHealthbars","false");
healthbarMode = Config::getInstance().getInt("HealthbarMode","0");
visibleHUD = Config::getInstance().getBool("VisibleHud","true");
timeDisplay = Config::getInstance().getBool("TimeDisplay","true");
withRainEffect = Config::getInstance().getBool("RainEffect","true");
@ -4659,7 +4659,32 @@ void Game::keyDown(SDL_KeyboardEvent key) {
}
//Toggle Healthbars
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
//else if(key == configKeys.getCharKey("ToggleMusic")) {
@ -5259,7 +5284,7 @@ void Game::render3d(){
//renderOnTopBars (aka Healthbars)
if(photoModeEnabled == false) {
renderer.renderHealthBars(forcedHealthbars);
renderer.renderHealthBars(healthbarMode);
}
//particles

View File

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

View File

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

View File

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