Skip to content

Commit

Permalink
Base info UI changes (optional)
Browse files Browse the repository at this point in the history
  • Loading branch information
MeridianOXC committed Jan 4, 2024
1 parent da2fc00 commit d518460
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 14 deletions.
92 changes: 78 additions & 14 deletions src/Basescape/BaseInfoState.cpp
Expand Up @@ -273,51 +273,111 @@ void BaseInfoState::init()
ss << _base->getAvailableSoldiers() << ":" << _base->getTotalSoldiers();
_numSoldiers->setText(ss.str());

_barSoldiers->setMax(_base->getTotalSoldiers());
_barSoldiers->setValue(_base->getAvailableSoldiers());
if (!Options::oxceBaseInfoScaleEnabled || _base->getTotalSoldiers() * _barSoldiers->getScale() < MAX_BAR_WIDTH)
{
_barSoldiers->setMax(_base->getTotalSoldiers());
_barSoldiers->setValue(_base->getAvailableSoldiers());
}
else
{
_barSoldiers->setMax(MAX_BAR_WIDTH);
_barSoldiers->setValue(_base->getAvailableSoldiers() * MAX_BAR_WIDTH / _base->getTotalSoldiers());
}

std::ostringstream ss2;
ss2 << _base->getAvailableEngineers() << ":" << _base->getTotalEngineers();
_numEngineers->setText(ss2.str());

_barEngineers->setMax(_base->getTotalEngineers());
_barEngineers->setValue(_base->getAvailableEngineers());
if (!Options::oxceBaseInfoScaleEnabled || _base->getTotalEngineers() * _barEngineers->getScale() < MAX_BAR_WIDTH)
{
_barEngineers->setMax(_base->getTotalEngineers());
_barEngineers->setValue(_base->getAvailableEngineers());
}
else
{
_barEngineers->setMax(MAX_BAR_WIDTH);
_barEngineers->setValue(_base->getAvailableEngineers() * MAX_BAR_WIDTH / _base->getTotalEngineers());
}

std::ostringstream ss3;
ss3 << _base->getAvailableScientists() << ":" << _base->getTotalScientists();
_numScientists->setText(ss3.str());

_barScientists->setMax(_base->getTotalScientists());
_barScientists->setValue(_base->getAvailableScientists());
if (!Options::oxceBaseInfoScaleEnabled || _base->getTotalScientists() * _barScientists->getScale() < MAX_BAR_WIDTH)
{
_barScientists->setMax(_base->getTotalScientists());
_barScientists->setValue(_base->getAvailableScientists());
}
else
{
_barScientists->setMax(MAX_BAR_WIDTH);
_barScientists->setValue(_base->getAvailableScientists() * MAX_BAR_WIDTH / _base->getTotalScientists());
}


std::ostringstream ss4;
ss4 << _base->getUsedQuarters() << ":" << _base->getAvailableQuarters();
_numQuarters->setText(ss4.str());

_barQuarters->setMax(_base->getAvailableQuarters());
_barQuarters->setValue(_base->getUsedQuarters());
if (!Options::oxceBaseInfoScaleEnabled || _base->getAvailableQuarters() * _barQuarters->getScale() < MAX_BAR_WIDTH)
{
_barQuarters->setMax(_base->getAvailableQuarters());
_barQuarters->setValue(_base->getUsedQuarters());
}
else
{
_barQuarters->setMax(MAX_BAR_WIDTH);
_barQuarters->setValue(_base->getUsedQuarters() * MAX_BAR_WIDTH / _base->getAvailableQuarters());
_barQuarters->setScale(1.0);
}

std::ostringstream ss5;
ss5 << (int)floor(_base->getUsedStores() + 0.05) << ":" << _base->getAvailableStores();
_numStores->setText(ss5.str());

_barStores->setMax(_base->getAvailableStores());
_barStores->setValue((int)floor(_base->getUsedStores() + 0.05));
if (!Options::oxceBaseInfoScaleEnabled || _base->getAvailableStores() * _barStores->getScale() < MAX_BAR_WIDTH)
{
_barStores->setMax(_base->getAvailableStores());
_barStores->setValue((int)floor(_base->getUsedStores() + 0.05));
}
else
{
_barStores->setMax(MAX_BAR_WIDTH);
_barStores->setValue(((int)floor(_base->getUsedStores() + 0.05)) * MAX_BAR_WIDTH / _base->getAvailableStores());
_barStores->setScale(1.0);
}

std::ostringstream ss6;
ss6 << _base->getUsedLaboratories() << ":" << _base->getAvailableLaboratories();
_numLaboratories->setText(ss6.str());

_barLaboratories->setMax(_base->getAvailableLaboratories());
_barLaboratories->setValue(_base->getUsedLaboratories());
if (!Options::oxceBaseInfoScaleEnabled || _base->getAvailableLaboratories() * _barLaboratories->getScale() < MAX_BAR_WIDTH)
{
_barLaboratories->setMax(_base->getAvailableLaboratories());
_barLaboratories->setValue(_base->getUsedLaboratories());
}
else
{
_barLaboratories->setMax(MAX_BAR_WIDTH);
_barLaboratories->setValue(_base->getUsedLaboratories() * MAX_BAR_WIDTH / _base->getAvailableLaboratories());
_barLaboratories->setScale(1.0);
}

std::ostringstream ss7;
ss7 << _base->getUsedWorkshops() << ":" << _base->getAvailableWorkshops();
_numWorkshops->setText(ss7.str());

_barWorkshops->setMax(_base->getAvailableWorkshops());
_barWorkshops->setValue(_base->getUsedWorkshops());
if (!Options::oxceBaseInfoScaleEnabled || _base->getAvailableWorkshops() * _barWorkshops->getScale() < MAX_BAR_WIDTH)
{
_barWorkshops->setMax(_base->getAvailableWorkshops());
_barWorkshops->setValue(_base->getUsedWorkshops());
}
else
{
_barWorkshops->setMax(MAX_BAR_WIDTH);
_barWorkshops->setValue(_base->getUsedWorkshops() * MAX_BAR_WIDTH / _base->getAvailableWorkshops());
_barWorkshops->setScale(1.0);
}

if (Options::storageLimitsEnforced)
{
Expand All @@ -343,6 +403,10 @@ void BaseInfoState::init()

_barDefense->setMax(_base->getDefenseValue());
_barDefense->setValue(_base->getDefenseValue());
if (Options::oxceBaseInfoDefenseScaleMultiplier != 100)
{
_barDefense->setScale(0.125 * Options::oxceBaseInfoDefenseScaleMultiplier / 100.0);
}

std::ostringstream ss10;
int shortRangeDetection = _base->getShortRangeDetection();
Expand Down
2 changes: 2 additions & 0 deletions src/Basescape/BaseInfoState.h
Expand Up @@ -38,6 +38,8 @@ class Bar;
class BaseInfoState : public State
{
private:
static const int MAX_BAR_WIDTH = 140;

Base *_base;
BasescapeState *_state;

Expand Down
2 changes: 2 additions & 0 deletions src/Engine/Options.cpp
Expand Up @@ -278,6 +278,8 @@ void create()
_info.push_back(OptionInfo("oxceHiddenMovementBackgroundChangeFrequency", &oxceHiddenMovementBackgroundChangeFrequency, 1, "", "HIDDEN"));
_info.push_back(OptionInfo("oxcePediaShowClipSize", &oxcePediaShowClipSize, false, "", "HIDDEN"));
_info.push_back(OptionInfo("oxceShowETAMode", &oxceShowETAMode, 0, "", "HIDDEN"));
_info.push_back(OptionInfo("oxceBaseInfoScaleEnabled", &oxceBaseInfoScaleEnabled, false, "", "HIDDEN"));
_info.push_back(OptionInfo("oxceBaseInfoDefenseScaleMultiplier", &oxceBaseInfoDefenseScaleMultiplier, 100, "", "HIDDEN"));

// controls
_info.push_back(OptionInfo("keyOk", &keyOk, SDLK_RETURN, "STR_OK", "STR_GENERAL"));
Expand Down
2 changes: 2 additions & 0 deletions src/Engine/Options.inc.h
Expand Up @@ -130,6 +130,8 @@ OPT bool oxceGeoscapeEventsInstantDelivery;
OPT int oxceHiddenMovementBackgroundChangeFrequency;
OPT bool oxcePediaShowClipSize;
OPT int oxceShowETAMode;
OPT bool oxceBaseInfoScaleEnabled;
OPT int oxceBaseInfoDefenseScaleMultiplier;

// Flags and other stuff that don't need OptionInfo's.
OPT bool mute, reload, newOpenGL, newScaleFilter, newHQXFilter, newXBRZFilter, newRootWindowedMode, newFullscreen, newAllowResize, newBorderless;
Expand Down

0 comments on commit d518460

Please sign in to comment.