Skip to content

Commit

Permalink
KOTOR: Restructure option setting/getting
Browse files Browse the repository at this point in the history
This has several advantages:
- Cutting down code duplication
- No need to specify default values twice
- No reading of uninitialized variables when changes are adopted
  without having displayed all submenus first
  • Loading branch information
DrMcCoy committed Jul 8, 2018
1 parent f234822 commit 135831e
Show file tree
Hide file tree
Showing 15 changed files with 226 additions and 182 deletions.
76 changes: 37 additions & 39 deletions src/engines/kotor/gui/options/autopause.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,61 +39,31 @@ OptionsAutoPauseMenu::OptionsAutoPauseMenu(::Engines::Console *console) : GUI(co

addBackground(kBackgroundTypeMenu);

//Hardcoded, the gui file returns 1.0, 1.0, 1.0, 1.0
// Hardcoded, the gui file returns 1.0, 1.0, 1.0, 1.0
getCheckBox("CB_ENDROUND", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_ENEMYSIGHTED", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_MINESIGHTED", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_PARTYKILLED", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_ACTIONMENU", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_TRIGGERS", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);

readConfig();
}

OptionsAutoPauseMenu::~OptionsAutoPauseMenu() {

}

void OptionsAutoPauseMenu::show() {
GUI::show();

_endOfCombatRound = ConfigMan.getBool("endofcombatround", false);
setCheckBoxState("CB_ENDROUND", _endOfCombatRound);

_enemySighted = ConfigMan.getBool("enemysighted", false);
setCheckBoxState("CB_ENEMYSIGHTED", _enemySighted);

_mineSighted = ConfigMan.getBool("minesighted", false);
setCheckBoxState("CB_MINESIGHTED", _mineSighted);
readConfig();
displayConfig();

_partyMemberDown = ConfigMan.getBool("partymemberdown", false);
setCheckBoxState("CB_PARTYKILLED", _partyMemberDown);

_actionMenuUsed = ConfigMan.getBool("actionmenuused", false);
setCheckBoxState("CB_ACTIONMENU", _actionMenuUsed);

_newTargetSelected = ConfigMan.getBool("newtargetselected", false);
setCheckBoxState("CB_TRIGGERS", _newTargetSelected);
GUI::show();
}

void OptionsAutoPauseMenu::callbackActive(Widget &widget) {

if (widget.getTag() == "BTN_DEFAULT") {
_endOfCombatRound = false;
setCheckBoxState("CB_ENDROUND", _endOfCombatRound);

_enemySighted = true;
setCheckBoxState("CB_ENEMYSIGHTED", _enemySighted);

_mineSighted = true;
setCheckBoxState("CB_MINESIGHTED", _mineSighted);

_partyMemberDown = true;
setCheckBoxState("CB_PARTYKILLED", _partyMemberDown);

_actionMenuUsed = false;
setCheckBoxState("CB_ACTIONMENU", _actionMenuUsed);

_newTargetSelected = true;
setCheckBoxState("CB_TRIGGERS", _newTargetSelected);
setDefault();
displayConfig();
}

if (widget.getTag() == "BTN_BACK") {
Expand Down Expand Up @@ -133,6 +103,35 @@ void OptionsAutoPauseMenu::callbackActive(Widget &widget) {
}
}

void OptionsAutoPauseMenu::setDefault() {
_endOfCombatRound = false;
_enemySighted = true;
_mineSighted = true;
_partyMemberDown = true;
_actionMenuUsed = false;
_newTargetSelected = true;
}

void OptionsAutoPauseMenu::readConfig() {
setDefault();

_endOfCombatRound = ConfigMan.getBool("endofcombatround", _endOfCombatRound);
_enemySighted = ConfigMan.getBool("enemysighted", _enemySighted);
_mineSighted = ConfigMan.getBool("minesighted", _mineSighted);
_partyMemberDown = ConfigMan.getBool("partymemberdown", _partyMemberDown);
_actionMenuUsed = ConfigMan.getBool("actionmenuused", _actionMenuUsed);
_newTargetSelected = ConfigMan.getBool("newtargetselected", _newTargetSelected);
}

void OptionsAutoPauseMenu::displayConfig() {
setCheckBoxState("CB_ENDROUND", _endOfCombatRound);
setCheckBoxState("CB_ENEMYSIGHTED", _enemySighted);
setCheckBoxState("CB_MINESIGHTED", _mineSighted);
setCheckBoxState("CB_PARTYKILLED", _partyMemberDown);
setCheckBoxState("CB_ACTIONMENU", _actionMenuUsed);
setCheckBoxState("CB_TRIGGERS", _newTargetSelected);
}

void OptionsAutoPauseMenu::adoptChanges() {
ConfigMan.setBool("endofcombatround", _endOfCombatRound, true);
ConfigMan.setBool("enemysighted", _enemySighted, true);
Expand All @@ -145,4 +144,3 @@ void OptionsAutoPauseMenu::adoptChanges() {
} // End of namespace KotOR

} // End of namespace Engines

6 changes: 5 additions & 1 deletion src/engines/kotor/gui/options/autopause.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class OptionsAutoPauseMenu : public GUI {

virtual void show();

virtual void adoptChanges();
void adoptChanges();

protected:
void callbackActive(Widget &widget);
Expand All @@ -50,6 +50,10 @@ class OptionsAutoPauseMenu : public GUI {
bool _partyMemberDown;
bool _actionMenuUsed;
bool _newTargetSelected;

void setDefault();
void readConfig();
void displayConfig();
};

} // End of namespace KotOR
Expand Down
3 changes: 0 additions & 3 deletions src/engines/kotor/gui/options/feedback.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,10 @@ OptionsFeedbackMenu::OptionsFeedbackMenu(::Engines::Console *console) : GUI(cons
}

OptionsFeedbackMenu::~OptionsFeedbackMenu() {

}

void OptionsFeedbackMenu::callbackActive(Widget &widget) {

if (widget.getTag() == "BTN_DEFAULT") {

}

if (widget.getTag() == "BTN_BACK") {
Expand Down
81 changes: 40 additions & 41 deletions src/engines/kotor/gui/options/gameplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ OptionsGameplayMenu::OptionsGameplayMenu(::Engines::Console *console) : GUI(cons
_mousesettings.reset(new OptionsMouseSettingsMenu(_console));
_keyboardconfiguration.reset(new OptionsKeyboardConfigurationMenu(_console));

//Hardcoded, the gui file returns 1.0, 1.0, 1.0, 1.0
// Hardcoded, the gui file returns 1.0, 1.0, 1.0, 1.0
getButton("BTN_DIFFLEFT", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getButton("BTN_DIFFLEFT", true)->setStaticHighlight();
getButton("BTN_DIFFRIGHT", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
Expand All @@ -57,34 +57,20 @@ OptionsGameplayMenu::OptionsGameplayMenu(::Engines::Console *console) : GUI(cons
getCheckBox("CB_AUTOSAVE", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_REVERSE", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_DISABLEMOVE", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);

readConfig();
}

OptionsGameplayMenu::~OptionsGameplayMenu() {
}


void OptionsGameplayMenu::show() {
GUI::show();

_difficulty = CLIP(ConfigMan.getInt("difficultylevel", 1), 0, 2);
updateDifficulty(_difficulty);
readConfig();
displayConfig();

_autoLevelUp = ConfigMan.getBool("autolevelup", false);
setCheckBoxState("CB_LEVELUP", _autoLevelUp);

_mouseMove = ConfigMan.getBool("mousemove", false);
setCheckBoxState("CB_INVERTCAM", _mouseMove);

_autoSave = ConfigMan.getBool("autosave", true);
setCheckBoxState("CB_AUTOSAVE", _autoSave);

_reverseMinigameY = ConfigMan.getBool("reverseminigameyaxis", false);
setCheckBoxState("CB_REVERSE", _reverseMinigameY);

_combatMovement = ConfigMan.getBool("combatmovement", true);
setCheckBoxState("CB_DISABLEMOVE", _combatMovement);
GUI::show();
}


void OptionsGameplayMenu::callbackActive(Widget &widget) {

if (widget.getTag() == "BTN_DIFFRIGHT") {
Expand Down Expand Up @@ -118,23 +104,8 @@ void OptionsGameplayMenu::callbackActive(Widget &widget) {
}

if (widget.getTag() == "BTN_DEFAULT") {
_difficulty = 1;
updateDifficulty(_difficulty);

_autoLevelUp = false;
setCheckBoxState("CB_LEVELUP", _autoLevelUp);

_mouseMove = false;
setCheckBoxState("CB_INVERTCAM", _mouseMove);

_autoSave = true;
setCheckBoxState("CB_AUTOSAVE", _autoSave);

_reverseMinigameY = false;
setCheckBoxState("CB_REVERSE", _reverseMinigameY);

_combatMovement = true;
setCheckBoxState("CB_DISABLEMOVE", _combatMovement);
setDefault();
displayConfig();
}

if (widget.getTag() == "BTN_BACK") {
Expand Down Expand Up @@ -168,6 +139,37 @@ void OptionsGameplayMenu::callbackActive(Widget &widget) {
}
}

void OptionsGameplayMenu::setDefault() {
_difficulty = 1;
_autoLevelUp = false;
_mouseMove = false;
_autoSave = true;
_reverseMinigameY = false;
_combatMovement = true;
}

void OptionsGameplayMenu::readConfig() {
setDefault();

_difficulty = CLIP(ConfigMan.getInt("difficultylevel", _difficulty), 0, 2);

_autoLevelUp = ConfigMan.getBool("autolevelup", _autoLevelUp);
_mouseMove = ConfigMan.getBool("mousemove", _mouseMove);
_autoSave = ConfigMan.getBool("autosave", _autoSave);
_reverseMinigameY = ConfigMan.getBool("reverseminigameyaxis", _reverseMinigameY);
_combatMovement = ConfigMan.getBool("combatmovement", _combatMovement);
}

void OptionsGameplayMenu::displayConfig() {
updateDifficulty(_difficulty);

setCheckBoxState("CB_LEVELUP", _autoLevelUp);
setCheckBoxState("CB_INVERTCAM", _mouseMove);
setCheckBoxState("CB_AUTOSAVE", _autoSave);
setCheckBoxState("CB_REVERSE", _reverseMinigameY);
setCheckBoxState("CB_DISABLEMOVE", _combatMovement);
}

void OptionsGameplayMenu::updateDifficulty(int difficulty) {
WidgetButton &diffButton = *getButton("BTN_DIFFICULTY", true);
WidgetButton &leftButton = *getButton("BTN_DIFFLEFT", true);
Expand Down Expand Up @@ -200,6 +202,3 @@ void OptionsGameplayMenu::adoptChanges() {
} // End of namespace KotOR

} // End of namespace Engines



12 changes: 8 additions & 4 deletions src/engines/kotor/gui/options/gameplay.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ class OptionsGameplayMenu : public GUI {
OptionsGameplayMenu(::Engines::Console *console = 0);
~OptionsGameplayMenu();


void show();
virtual void show();

void adoptChanges();

protected:
void callbackActive(Widget &widget);

Expand All @@ -53,10 +53,14 @@ class OptionsGameplayMenu : public GUI {
bool _reverseMinigameY;
bool _combatMovement;

void updateDifficulty(int difficulty);

Common::ScopedPtr<GUI> _mousesettings;
Common::ScopedPtr<GUI> _keyboardconfiguration;

void setDefault();
void readConfig();
void displayConfig();

void updateDifficulty(int difficulty);
};

} // End of namespace KotOR
Expand Down
42 changes: 27 additions & 15 deletions src/engines/kotor/gui/options/graphics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,26 +44,24 @@ OptionsGraphicsMenu::OptionsGraphicsMenu(::Engines::Console *console) : GUI(cons
_advanced.reset(new OptionsGraphicsAdvancedMenu(_console));
_resolution.reset(new OptionsResolutionMenu(_console));

//Hardcoded, the gui file returns incorrect values
// Hardcoded, the gui file returns incorrect values
getCheckBox("CB_SHADOWS", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);
getCheckBox("CB_GRASS", true)->setColor(0.0f, 0.658824f, 0.980392f, 1.0f);

readConfig();
}

OptionsGraphicsMenu::~OptionsGraphicsMenu() {
}

void OptionsGraphicsMenu::show() {
GUI::show();
readConfig();
displayConfig();

_shadows = ConfigMan.getBool("shadows", true);
setCheckBoxState("CB_SHADOWS", _shadows);

_grass = ConfigMan.getBool("grass", true);
setCheckBoxState("CB_GRASS", _grass);
GUI::show();
}

void OptionsGraphicsMenu::callbackActive(Widget &widget) {

if (widget.getTag() == "BTN_ADVANCED") {
adoptChanges();
sub(*_advanced);
Expand All @@ -76,11 +74,8 @@ void OptionsGraphicsMenu::callbackActive(Widget &widget) {
}

if (widget.getTag() == "BTN_DEFAULT") {
_shadows = true;
setCheckBoxState("CB_SHADOWS", _shadows);

_grass = true;
setCheckBoxState("CB_GRASS", _grass);
setDefault();
displayConfig();
}

if (widget.getTag() == "BTN_BACK") {
Expand All @@ -100,9 +95,26 @@ void OptionsGraphicsMenu::callbackActive(Widget &widget) {
}
}

void OptionsGraphicsMenu::setDefault() {
_shadows = true;
_grass = true;
}

void OptionsGraphicsMenu::readConfig() {
setDefault();

_shadows = ConfigMan.getBool("shadows", _shadows);
_grass = ConfigMan.getBool("grass", _grass);
}

void OptionsGraphicsMenu::displayConfig() {
setCheckBoxState("CB_SHADOWS", _shadows);
setCheckBoxState("CB_GRASS", _grass);
}

void OptionsGraphicsMenu::adoptChanges() {
ConfigMan.setBool("shadows", _shadows, false);
ConfigMan.setBool("grass", _grass, false);
ConfigMan.setBool("shadows", _shadows, true);
ConfigMan.setBool("grass", _grass, true);
}

} // End of namespace KotOR
Expand Down
8 changes: 6 additions & 2 deletions src/engines/kotor/gui/options/graphics.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ class OptionsGraphicsMenu : public GUI {

virtual void show();

virtual void adoptChanges();

protected:
void callbackActive(Widget &widget);

Expand All @@ -51,6 +49,12 @@ class OptionsGraphicsMenu : public GUI {

Common::ScopedPtr<GUI> _resolution;
Common::ScopedPtr<GUI> _advanced;

void setDefault();
void readConfig();
void displayConfig();

void adoptChanges();
};

} // End of namespace KotOR
Expand Down

0 comments on commit 135831e

Please sign in to comment.