[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