[Scummvm-git-logs] scummvm master -> 39e0c0c2014616e817b655da07b23d1b639581a4
mduggan
noreply at scummvm.org
Sun Jan 29 07:05:19 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
39e0c0c201 TETRAEDGE: Complete-ish bonus menu implementation
Commit: 39e0c0c2014616e817b655da07b23d1b639581a4
https://github.com/scummvm/scummvm/commit/39e0c0c2014616e817b655da07b23d1b639581a4
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-01-29T16:04:53+09:00
Commit Message:
TETRAEDGE: Complete-ish bonus menu implementation
Also save config for bonus artwork correctly
Changed paths:
engines/tetraedge/game/bonus_menu.cpp
engines/tetraedge/game/bonus_menu.h
engines/tetraedge/game/game.cpp
engines/tetraedge/game/game.h
diff --git a/engines/tetraedge/game/bonus_menu.cpp b/engines/tetraedge/game/bonus_menu.cpp
index a5b6ef92b1b..0c13ca42362 100644
--- a/engines/tetraedge/game/bonus_menu.cpp
+++ b/engines/tetraedge/game/bonus_menu.cpp
@@ -48,7 +48,7 @@ void BonusMenu::enter(const Common::String &scriptName) {
TeButtonLayout *btn = buttonLayout(btnNoStr);
if (!btn)
break;
- SaveButton *saveBtn = new SaveButton(btn, btnNoStr);
+ SaveButton *saveBtn = new SaveButton(btn, btnNoStr, this);
_saveButtons.push_back(saveBtn);
TeVector3f32 mainWinSz = g_engine->getApplication()->getMainWindow().size();
@@ -64,8 +64,8 @@ void BonusMenu::enter(const Common::String &scriptName) {
if (btn->childCount() <= 4)
error("expected save button to have >4 children");
- const Common::String &artName = btn->child(4)->name();
- btn->setEnable(g_engine->getGame()->unlockedArtwork().getValOrDefault(artName, false));
+ const Common::String artName = btn->child(4)->name();
+ btn->setEnable(g_engine->getGame()->isArtworkUnlocked(artName));
btnNo++;
}
@@ -224,7 +224,7 @@ bool BonusMenu::onSlideButtonDown() {
return false;
}
-BonusMenu::SaveButton::SaveButton(TeButtonLayout *btn, const Common::String &name) {
+BonusMenu::SaveButton::SaveButton(TeButtonLayout *btn, const Common::String &name, BonusMenu *owner) : _menu(owner) {
setName(name);
btn->setEnable(true);
addChild(btn);
@@ -236,7 +236,16 @@ Common::String BonusMenu::SaveButton::path() const {
}
bool BonusMenu::SaveButton::onLoadSave() {
- error("TODO: implement BonusMenu::SaveButton::onLoadSave");
+ _menu->buttonLayoutChecked("menu")->setVisible(false);
+ TeSpriteLayout *pic = _menu->spriteLayoutChecked("fullScreenPicture");
+ const Common::String picName = child(0)->child(4)->name();
+ pic->load(picName);
+
+ TeSpriteLayout *picLayout = _menu->spriteLayoutChecked("fullScreenPictureLayout");
+ g_engine->getApplication()->frontLayout().addChild(picLayout);
+ picLayout->setVisible(true);
+
+ return false;
}
} // end namespace Tetraedge
diff --git a/engines/tetraedge/game/bonus_menu.h b/engines/tetraedge/game/bonus_menu.h
index 5a57cdeb66a..e9ee8f19878 100644
--- a/engines/tetraedge/game/bonus_menu.h
+++ b/engines/tetraedge/game/bonus_menu.h
@@ -36,9 +36,11 @@ public:
class SaveButton : public TeLayout {
public:
- SaveButton(TeButtonLayout *btn, const Common::String &name);
+ SaveButton(TeButtonLayout *btn, const Common::String &name, BonusMenu *owner);
bool onLoadSave();
Common::String path() const;
+
+ BonusMenu *_menu;
};
virtual void enter() override;
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index e99ce276f77..7fb3e6b179d 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -102,15 +102,30 @@ bool Game::addAnimToSet(const Common::String &anim) {
return false;
}
+/*static*/
+Common::String Game::artworkConfName(const Common::String &name) {
+ Common::String configName = Common::String::format("artwork_%s", name.c_str());
+ for (uint i = 0; i < configName.size(); i++) {
+ if (configName[i] == '/' || configName[i] == '.')
+ configName.setChar('_', i);
+ }
+ return configName;
+}
+
void Game::addArtworkUnlocked(const Common::String &name, bool notify) {
- if (_unlockedArtwork.contains(name))
+ const Common::String configName = artworkConfName(name);
+ if (_unlockedArtwork.contains(configName))
return;
- Common::String configName = Common::String::format("artwork_%s", name.c_str());
ConfMan.setBool(configName, true);
- _unlockedArtwork[name] = true;
- if (notify) {
+ ConfMan.flushToDisk();
+ _unlockedArtwork[configName] = true;
+ if (notify)
_notifier.push("BONUS!", "Inventory/Objects/VPapierCrayon.png");
- }
+}
+
+bool Game::isArtworkUnlocked(const Common::String &name) const {
+ const Common::String configName = artworkConfName(name);
+ return _unlockedArtwork.getValOrDefault(configName, false);
}
void Game::addNoScale2Child(TeLayout *layout) {
@@ -812,7 +827,7 @@ void Game::loadUnlockedArtwork() {
Common::ConfigManager::Domain *domain = ConfMan.getActiveDomain();
for (auto &val : *domain) {
if (val._key.substr(0, 8) == "artwork_") {
- _unlockedArtwork[val._key.substr(8)] = true;
+ _unlockedArtwork[val._key] = true;
}
}
}
diff --git a/engines/tetraedge/game/game.h b/engines/tetraedge/game/game.h
index 4eb7c76361e..dde72dff733 100644
--- a/engines/tetraedge/game/game.h
+++ b/engines/tetraedge/game/game.h
@@ -202,7 +202,8 @@ public:
Common::RandomSource &randomSource() { return _randomSource; }
void setLoadName(const Common::String &loadName) { _loadName = loadName; }
bool hasLoadName() const { return !_loadName.empty(); }
- const Common::HashMap<Common::String, bool> unlockedArtwork() const { return _unlockedArtwork; }
+ bool isArtworkUnlocked(const Common::String &name) const;
+ static Common::String artworkConfName(const Common::String &name);
private:
bool _luaShowOwnerError;
More information about the Scummvm-git-logs
mailing list