# HG changeset patch # User Wuzzy # Date 1546534651 -3600 # Node ID 5230c063214a6c66dcd796fbe5d58ce27e1ee72f # Parent 3b6976beb58b91608b64f9461007df26450fd7c2 Fix force-locked schemes getting unlocked when changing map types (bug 378) diff -r 3b6976beb58b -r 5230c063214a ChangeLog.txt --- a/ChangeLog.txt Wed Jan 02 17:45:12 2019 +0100 +++ b/ChangeLog.txt Thu Jan 03 17:57:31 2019 +0100 @@ -18,6 +18,7 @@ * Fix poison damage not working in first round * Hide most HUD elements in cinematic mode * Don't show "F1", "F2", etc. in ammo menu if these aren't the actual slot keys + * Fix force-locked schemes getting unlocked when changing map types Lua API: + New call: SaveMissionVar(varname, value): Save value to mission variable (variable for non-campaign mission) diff -r 3b6976beb58b -r 5230c063214a QTfrontend/ui/widget/gamecfgwidget.cpp --- a/QTfrontend/ui/widget/gamecfgwidget.cpp Wed Jan 02 17:45:12 2019 +0100 +++ b/QTfrontend/ui/widget/gamecfgwidget.cpp Thu Jan 03 17:57:31 2019 +0100 @@ -545,6 +545,60 @@ } } +void GameCFGWidget::updateSchemeEnabledStates(int scriptIndex) +{ + QString scheme; + QString weapons; + if(scriptIndex > 0) + { + scheme = Scripts->itemData(scriptIndex, GameStyleModel::SchemeRole).toString(); + weapons = Scripts->itemData(scriptIndex, GameStyleModel::WeaponsRole).toString(); + } + else + { + scheme = pMapContainer->getCurrentScheme(); + weapons = pMapContainer->getCurrentWeapons(); + } + if (scheme == "locked") + { + GameSchemes->setEnabled(false); + goToSchemePage->setEnabled(false); + lblScheme->setEnabled(false); + GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); + } + else if(m_master) + { + GameSchemes->setEnabled(true); + goToSchemePage->setEnabled(true); + lblScheme->setEnabled(true); + int num = GameSchemes->findText(scheme); + if (num != -1) + GameSchemes->setCurrentIndex(num); + } + + if (weapons == "locked") + { + WeaponsName->setEnabled(false); + goToWeaponPage->setEnabled(false); + lblWeapons->setEnabled(false); + WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); + } + else if(m_master) + { + WeaponsName->setEnabled(true); + goToWeaponPage->setEnabled(true); + lblWeapons->setEnabled(true); + int num = WeaponsName->findText(weapons); + if (num != -1) + WeaponsName->setCurrentIndex(num); + } + + if (scheme != "locked" && weapons != "locked") + bindEntries->setEnabled(true); + else + bindEntries->setEnabled(false); +} + void GameCFGWidget::mapChanged(const QString & value) { if(isEnabled() && pMapContainer->getCurrentIsMission()) @@ -552,49 +606,7 @@ Scripts->setEnabled(false); lblScript->setEnabled(false); Scripts->setCurrentIndex(0); - - if (pMapContainer->getCurrentScheme() == "locked") - { - GameSchemes->setEnabled(false); - goToSchemePage->setEnabled(false); - lblScheme->setEnabled(false); - GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); - } - else - { - GameSchemes->setEnabled(true); - goToSchemePage->setEnabled(true); - lblScheme->setEnabled(true); - int num = GameSchemes->findText(pMapContainer->getCurrentScheme()); - if (num != -1) - GameSchemes->setCurrentIndex(num); - //else - // GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); - } - - if (pMapContainer->getCurrentWeapons() == "locked") - { - WeaponsName->setEnabled(false); - goToWeaponPage->setEnabled(false); - lblWeapons->setEnabled(false); - WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); - } - else - { - WeaponsName->setEnabled(true); - goToWeaponPage->setEnabled(true); - lblWeapons->setEnabled(true); - int num = WeaponsName->findText(pMapContainer->getCurrentWeapons()); - if (num != -1) - WeaponsName->setCurrentIndex(num); - //else - // WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); - } - - if (pMapContainer->getCurrentScheme() != "locked" && pMapContainer->getCurrentWeapons() != "locked") - bindEntries->setEnabled(true); - else - bindEntries->setEnabled(false); + updateSchemeEnabledStates(0); } else { @@ -671,51 +683,7 @@ if(isEnabled() && index > 0) { - QString scheme = Scripts->itemData(index, GameStyleModel::SchemeRole).toString(); - QString weapons = Scripts->itemData(index, GameStyleModel::WeaponsRole).toString(); - - if (scheme == "locked") - { - GameSchemes->setEnabled(false); - goToSchemePage->setEnabled(false); - lblScheme->setEnabled(false); - GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); - } - else if (m_master) - { - GameSchemes->setEnabled(true); - goToSchemePage->setEnabled(true); - lblScheme->setEnabled(true); - int num = GameSchemes->findText(scheme); - if (num != -1) - GameSchemes->setCurrentIndex(num); - //else - // GameSchemes->setCurrentIndex(GameSchemes->findText("Default")); - } - - if (weapons == "locked") - { - WeaponsName->setEnabled(false); - goToWeaponPage->setEnabled(false); - lblWeapons->setEnabled(false); - WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); - } - else if (m_master) - { - WeaponsName->setEnabled(true); - goToWeaponPage->setEnabled(true); - lblWeapons->setEnabled(true); - int num = WeaponsName->findText(weapons); - if (num != -1) - WeaponsName->setCurrentIndex(num); - //else - // WeaponsName->setCurrentIndex(WeaponsName->findText("Default")); - } - - if (scheme != "locked" && weapons != "locked") - bindEntries->setEnabled(true); - else - bindEntries->setEnabled(false); + updateSchemeEnabledStates(index); } else { @@ -744,6 +712,8 @@ void GameCFGWidget::mapgenChanged(MapGenerator m) { + int scriptIndex = Scripts->currentIndex(); + updateSchemeEnabledStates(scriptIndex); emit paramChanged("MAPGEN", QStringList(QString::number(m))); } diff -r 3b6976beb58b -r 5230c063214a QTfrontend/ui/widget/gamecfgwidget.h --- a/QTfrontend/ui/widget/gamecfgwidget.h Wed Jan 02 17:45:12 2019 +0100 +++ b/QTfrontend/ui/widget/gamecfgwidget.h Thu Jan 03 17:57:31 2019 +0100 @@ -81,6 +81,7 @@ void jumpToSchemes(); void jumpToWeapons(); void mapgenChanged(MapGenerator m); + void updateSchemeEnabledStates(int scriptIndex); void maze_sizeChanged(int s); void slMapFeatureSizeChanged(int s); void onDrawnMapChanged(const QByteArray & data);