mirror of https://github.com/stella-emu/stella.git
Added logic to Game Properties/Controllers to prevent invalid selections.
This commit is contained in:
parent
cd189050ec
commit
9ac4a57498
|
@ -392,7 +392,7 @@ void GameInfoDialog::loadConfig()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enableEraseEEButton();
|
updateStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -546,26 +546,52 @@ void GameInfoDialog::setDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void GameInfoDialog::enableEraseEEButton()
|
void GameInfoDialog::updateStates(int cmd)
|
||||||
{
|
{
|
||||||
bool enable = false;
|
string contrP0 = myP0Controller->getSelectedTag().toString();
|
||||||
|
string contrP1 = myP1Controller->getSelectedTag().toString();
|
||||||
|
bool enableEEEraseButton = false;
|
||||||
|
bool enableSwapPaddles = false;
|
||||||
|
bool enableSwapPorts = false;
|
||||||
|
|
||||||
|
// make sure the CompuMate is always selected for both controllers
|
||||||
|
if(cmd == kLeftCChanged)
|
||||||
|
if(contrP0 == "COMPUMATE")
|
||||||
|
myP1Controller->setSelected("COMPUMATE");
|
||||||
|
else if(contrP1 == "COMPUMATE")
|
||||||
|
myP1Controller->setSelected(contrP0);
|
||||||
|
if(cmd == kRightCChanged)
|
||||||
|
if(contrP1 == "COMPUMATE")
|
||||||
|
myP0Controller->setSelected("COMPUMATE");
|
||||||
|
else if(contrP0 == "COMPUMATE")
|
||||||
|
myP0Controller->setSelected(contrP1);
|
||||||
|
|
||||||
|
enableSwapPorts = myP0Controller->getSelectedTag().toString() != "COMPUMATE";
|
||||||
|
enableSwapPaddles = string::npos != contrP0.find("PADDLES")
|
||||||
|
|| string::npos != contrP1.find("PADDLES");
|
||||||
|
|
||||||
if(instance().hasConsole())
|
if(instance().hasConsole())
|
||||||
{
|
{
|
||||||
Controller& lport = instance().console().leftController();
|
Controller& lport = instance().console().leftController();
|
||||||
Controller& rport = instance().console().rightController();
|
Controller& rport = instance().console().rightController();
|
||||||
string contrP0 = myP0Controller->getSelectedTag().toString();
|
|
||||||
string contrP1 = myP1Controller->getSelectedTag().toString();
|
|
||||||
// we only enable the button if we have a valid previous and new controller.
|
// we only enable the button if we have a valid previous and new controller.
|
||||||
enable = ((lport.type() == Controller::SaveKey && contrP0 == "SAVEKEY")
|
enableEEEraseButton = ((lport.type() == Controller::SaveKey && contrP0 == "SAVEKEY")
|
||||||
|| (lport.type() == Controller::AtariVox && contrP0 == "ATARIVOX")
|
|| (lport.type() == Controller::AtariVox && contrP0 == "ATARIVOX")
|
||||||
|| (rport.type() == Controller::SaveKey && contrP1 == "SAVEKEY")
|
|| (rport.type() == Controller::SaveKey && contrP1 == "SAVEKEY")
|
||||||
|| (rport.type() == Controller::AtariVox && contrP1 == "ATARIVOX"));
|
|| (rport.type() == Controller::AtariVox && contrP1 == "ATARIVOX"));
|
||||||
}
|
}
|
||||||
|
|
||||||
myEraseEEPROMLabel->setEnabled(enable);
|
mySwapPorts->setEnabled(enableSwapPorts);
|
||||||
myEraseEEPROMButton->setEnabled(enable);
|
if(!enableSwapPaddles)
|
||||||
myEraseEEPROMInfo->setEnabled(enable);
|
mySwapPorts->setState(false);
|
||||||
|
mySwapPaddles->setEnabled(enableSwapPaddles);
|
||||||
|
if(!enableSwapPaddles)
|
||||||
|
mySwapPaddles->setState(false);
|
||||||
|
|
||||||
|
myEraseEEPROMLabel->setEnabled(enableEEEraseButton);
|
||||||
|
myEraseEEPROMButton->setEnabled(enableEEEraseButton);
|
||||||
|
myEraseEEPROMInfo->setEnabled(enableEEEraseButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -604,7 +630,7 @@ void GameInfoDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
|
|
||||||
case kLeftCChanged:
|
case kLeftCChanged:
|
||||||
case kRightCChanged:
|
case kRightCChanged:
|
||||||
enableEraseEEButton();
|
updateStates(cmd);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kEEButtonPressed:
|
case kEEButtonPressed:
|
||||||
|
|
|
@ -45,7 +45,7 @@ class GameInfoDialog : public Dialog, public CommandSender
|
||||||
void setDefaults() override;
|
void setDefaults() override;
|
||||||
void loadView();
|
void loadView();
|
||||||
|
|
||||||
void enableEraseEEButton();
|
void updateStates(int cmd = 0);
|
||||||
void eraseEEPROM();
|
void eraseEEPROM();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue