[Scummvm-git-logs] scummvm master -> b9002c210960abf26eb2db91879099500d23e698

scemino noreply at scummvm.org
Tue Apr 23 14:50:22 UTC 2024


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a6b3a80eb1 DEVTOOLS: Add steam achievements for Thimbleweed Park
8f6d53f53d TWP: Add steam achievements
8f9713eccc TWP: Fix text width with sayLineAt
b9002c2109 TWP: Fix stopTalking should stop also sayLineAt


Commit: a6b3a80eb19a59c88f6a7881ec8259ffa80798bd
    https://github.com/scummvm/scummvm/commit/a6b3a80eb19a59c88f6a7881ec8259ffa80798bd
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-23T16:33:26+02:00

Commit Message:
DEVTOOLS: Add steam achievements for Thimbleweed Park

Changed paths:
  A devtools/create_achievements/gen/steam-569860.ini
    devtools/create_achievements/create_achievements.sh
    dists/engine-data/achievements.dat


diff --git a/devtools/create_achievements/create_achievements.sh b/devtools/create_achievements/create_achievements.sh
old mode 100644
new mode 100755
index c53135be8d2..a64fc323ebd
--- a/devtools/create_achievements/create_achievements.sh
+++ b/devtools/create_achievements/create_achievements.sh
@@ -185,6 +185,9 @@ add_steam 1642970
 #ASYLUM games:
 add_steam 284050
 
+#TWP games:
+add_steam 569860
+
 #TODO: check for 7zip, since it produces smaller files
 
 touch --date="2000-01-01 00:00:00" gen/* static/*
diff --git a/devtools/create_achievements/gen/steam-569860.ini b/devtools/create_achievements/gen/steam-569860.ini
new file mode 100644
index 00000000000..76925d92707
--- /dev/null
+++ b/devtools/create_achievements/gen/steam-569860.ini
@@ -0,0 +1,133 @@
+[stats:en]
+item_0_id=STDust1
+item_0_title=Dust Appreciator
+item_0_comment=Collect 25 specks of dust.
+item_0_start=0
+item_1_id=STLibraryBooks
+item_1_title=Book Worm
+item_1_comment=Read 100 books in the library.
+item_1_start=0
+item_2_id=STHeadlines
+item_2_title=Well Informed
+item_2_comment=Read all the Thimbleweed Nickel newspapers.
+item_2_start=0
+item_3_id=STVisitAllFloors
+item_3_title=Hotel Tourist
+item_3_comment=Visited every floor in the hotel.
+item_3_start=0
+item_4_id=STDust2
+item_4_title=Dust Collector
+item_4_comment=Collect 50 specks of dust.
+item_4_start=0
+item_5_id=STVoicemail
+item_5_title=No One Is Home
+item_5_comment=Listen to 100 Voicemail messages.
+item_5_start=0
+item_6_id=STCrying
+item_6_title=Mean Person
+item_6_comment=Make everyone cry about their life.
+item_6_start=0
+item_7_id=STDust3
+item_7_title=Dust Hoarder
+item_7_comment=Collected 75 specks of dust.
+item_7_start=0
+[achievements:en]
+item_0_id=ACHPart1
+item_0_title=Part 1
+item_0_comment=Begin Part One.
+item_1_id=ACHPart2
+item_1_title=Part 2
+item_1_comment=Begin Part Two.
+item_2_id=ACHRansomeFB
+item_2_title=*Beephole*
+item_2_comment=Complete Ransome's Flashback.
+item_3_id=ACHDeloresFB
+item_3_title=Out Of The Will
+item_3_comment=Complete Delores's Flashback.
+item_4_id=ACHPart3
+item_4_title=Part 3
+item_4_comment=Begin Part Three.
+item_5_id=ACHFranklinFB
+item_5_title=Secret Meeting
+item_5_comment=Complete Franklin's Flashback.
+item_6_id=ACHCatchKiller
+item_6_title=Justice
+item_6_comment=Catch the killer.
+item_7_id=ACHPart4
+item_7_title=Part 4
+item_7_comment=Begin Part Four.
+item_8_id=ACHPenthouse
+item_8_title=Sky High
+item_8_comment=Get an alive character into the Hotel penthouse.
+item_9_id=ACHPart5
+item_9_title=Part 5
+item_9_comment=Begin Part Five.
+item_10_id=ACHPart6
+item_10_title=Part 6
+item_10_hidden=true
+item_11_id=ACHPart7
+item_11_title=Part 7
+item_11_hidden=true
+item_12_id=ACHPart8
+item_12_title=Part 8
+item_12_hidden=true
+item_13_id=ACHPart9
+item_13_title=Part 9
+item_13_hidden=true
+item_14_id=ACHWinEasy
+item_14_title=Easy Win
+item_14_comment=Complete the game in casual mode.
+item_15_id=ACHWinHard
+item_15_title=Hard Won
+item_15_comment=Complete the game in hard mode.
+item_16_id=ACHCredits
+item_16_title=Last One Out
+item_16_hidden=true
+item_17_id=ACHSewerEscape
+item_17_title=Great Escape
+item_17_comment=Escape from the sewers.
+item_18_id=ACHPushMime
+item_18_title=*Beephole* Mime
+item_18_hidden=true
+item_19_id=ACHDust1
+item_19_title=Dust Appreciator
+item_19_comment=Collect 25 specks of dust.
+item_20_id=ACHLibraryBooks
+item_20_title=Book Worm
+item_20_comment=Read 100 books in the library.
+item_21_id=ACHHeadlines
+item_21_title=Well Informed
+item_21_comment=Read all the Thimbleweed Nickel newspapers.
+item_22_id=ACHVisitAllFloors
+item_22_title=Hotel Tourist
+item_22_comment=Visited every floor in the hotel.
+item_23_id=ACHItchCream
+item_23_title=Itchy Fingers
+item_23_hidden=true
+item_24_id=ACHNuke
+item_24_title=Nuke It
+item_24_hidden=true
+item_25_id=ACHDust2
+item_25_title=Dust Collector
+item_25_comment=Collect 50 specks of dust.
+item_26_id=ACHVoicemail
+item_26_title=No One Is Home
+item_26_comment=Listen to 100 Voicemail messages.
+item_27_id=ACHCrying
+item_27_title=Mean Person
+item_27_comment=Make everyone cry about their life.
+item_28_id=ACHTreasure
+item_28_title=Buried Treasure
+item_28_hidden=true
+item_29_id=ACHPlant
+item_29_title=Plantastic
+item_29_hidden=true
+item_30_id=ACHDust3
+item_30_title=Dust Hoarder
+item_30_comment=Collected 75 specks of dust.
+item_31_id=ACHRansomeJerk
+item_31_title=*Beephole* Redux
+item_31_hidden=true
+item_32_id=ACHNoDust
+item_32_title=Messy World
+item_32_comment=Didn't pick up any specks of dust.
diff --git a/dists/engine-data/achievements.dat b/dists/engine-data/achievements.dat
index 316090b07a7..eae9cd98b68 100644
Binary files a/dists/engine-data/achievements.dat and b/dists/engine-data/achievements.dat differ


Commit: 8f6d53f53dc92f1871b49fc0cbe3e39c6207032e
    https://github.com/scummvm/scummvm/commit/8f6d53f53dc92f1871b49fc0cbe3e39c6207032e
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-23T16:36:47+02:00

Commit Message:
TWP: Add steam achievements

Changed paths:
  A engines/twp/achievements_tables.h
    engines/twp/genlib.cpp
    engines/twp/metaengine.cpp
    engines/twp/metaengine.h
    engines/twp/twp.cpp


diff --git a/engines/twp/achievements_tables.h b/engines/twp/achievements_tables.h
new file mode 100644
index 00000000000..3cfa6ef5ecf
--- /dev/null
+++ b/engines/twp/achievements_tables.h
@@ -0,0 +1,36 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef TWP_ACHIEVEMENTS_H
+#define TWP_ACHIEVEMENTS_H
+
+#include "engines/achievements.h"
+
+namespace Twp {
+
+static const Common::AchievementDescriptionList achievementDescriptionList[] = {
+	{"twp", Common::STEAM_ACHIEVEMENTS, "569860"},
+
+	ACHIEVEMENT_DESC_TABLE_END_MARKER};
+
+} // namespace Twp
+
+#endif // TWP_ACHIEVEMENTS_H
diff --git a/engines/twp/genlib.cpp b/engines/twp/genlib.cpp
index 21b5024586c..0c78c61ce42 100644
--- a/engines/twp/genlib.cpp
+++ b/engines/twp/genlib.cpp
@@ -19,6 +19,7 @@
  *
  */
 
+#include "common/config-manager.h"
 #include "common/crc.h"
 #include "twp/twp.h"
 #include "twp/detection.h"
@@ -364,8 +365,14 @@ static SQInteger getPrivatePref(HSQUIRRELVM v) {
 	Common::String key;
 	if (SQ_FAILED(sqget(v, 2, key))) {
 		return sq_throwerror(v, "failed to get key");
-		// } else if (g_twp->getPrefs().hasPrivPref(key)) {
-		// 	return sqpush(v, g_twp->getPrefs().privPrefAsJson(key));
+	} else if (ConfMan.hasKey(key)) {
+		Common::String value = ConfMan.get(key);
+		char *errpos;
+		int ivalue = (int)strtol(value.c_str(), &errpos, 0);
+		if (value.c_str() == errpos) {
+			return sqpush(v, ConfMan.get(key));
+		}
+		return sqpush(v, ivalue);
 	} else if (sq_gettop(v) == 3) {
 		HSQOBJECT obj;
 		sq_getstackobj(v, 3, &obj);
@@ -492,20 +499,40 @@ static SQInteger loadArray(HSQUIRRELVM v) {
 }
 
 static SQInteger markAchievement(HSQUIRRELVM v) {
-	// TODO: markAchievement
-	warning("markAchievement not implemented");
+	Common::String id;
+	if (SQ_FAILED(sqget(v, 2, id)))
+		return sq_throwerror(v, "failed to get id");
+
+	SQInteger numArgs = sq_gettop(v);
+	switch (numArgs) {
+	case 2:
+		AchMan.setAchievement(id);
+		break;
+	case 4: {
+		SQInteger count, total;
+		if (SQ_FAILED(sqget(v, 3, count)))
+			return sq_throwerror(v, "failed to get count");
+		if (SQ_FAILED(sqget(v, 4, total)))
+			return sq_throwerror(v, "failed to get total");
+		AchMan.setStatInt(Common::String::format("ST%s", id.substr(3).c_str()), count);
+		if (count == total) {
+			AchMan.setAchievement(id);
+		}
+	} break;
+	default:
+		error("TODO: markAchievement not implemented");
+		break;
+	}
 	return 0;
 }
 
 static SQInteger markProgress(HSQUIRRELVM v) {
-	// TODO: markProgress
-	warning("markProgress not implemented");
+	warning("TODO: markProgress not implemented");
 	return 0;
 }
 
 static SQInteger markStat(HSQUIRRELVM v) {
-	// TODO: markStat
-	warning("markStat not implemented");
+	warning("TODO: markStat not implemented");
 	return 0;
 }
 
@@ -669,7 +696,30 @@ static SQInteger setDebugger(HSQUIRRELVM v) {
 }
 
 static SQInteger setPrivatePref(HSQUIRRELVM v) {
-	// TODO: setPrivatePref
+	Common::String key;
+	if (SQ_FAILED(sqget(v, 2, key))) {
+		return sq_throwerror(v, _SC("failed to get key"));
+	}
+	SQObjectType type = sq_gettype(v, 3);
+	switch (type) {
+	case SQObjectType::OT_STRING: {
+		Common::String str;
+		if (SQ_FAILED(sqget(v, 3, str))) {
+			return sq_throwerror(v, _SC("failed to get str"));
+		}
+		ConfMan.set(key, str);
+		return 0;
+	}
+	case SQObjectType::OT_INTEGER:
+		SQInteger integer;
+		if (SQ_FAILED(sqget(v, 3, integer))) {
+			return sq_throwerror(v, _SC("failed to get integer"));
+		}
+		ConfMan.setInt(key, (int)integer);
+		return 0;
+	default:
+		break;
+	}
 	warning("setPrivatePref not implemented");
 	return 0;
 }
diff --git a/engines/twp/metaengine.cpp b/engines/twp/metaengine.cpp
index 2a71951ff39..269fea8b02f 100644
--- a/engines/twp/metaengine.cpp
+++ b/engines/twp/metaengine.cpp
@@ -31,6 +31,7 @@
 #include "gui/ThemeEval.h"
 #include "image/png.h"
 #include "twp/twp.h"
+#include "twp/achievements_tables.h"
 #include "twp/detection.h"
 #include "twp/metaengine.h"
 #include "twp/detection.h"
@@ -72,6 +73,14 @@ void TwpMetaEngine::registerDefaultSettings(const Common::String &) const {
 	ConfMan.registerDefault("language", "en");
 }
 
+Common::AchievementsPlatform TwpMetaEngine::getAchievementsPlatform(const Common::String &target) const {
+	return Common::STEAM_ACHIEVEMENTS;
+}
+
+const Common::AchievementDescriptionList *TwpMetaEngine::getAchievementDescriptionList() const {
+	return Twp::achievementDescriptionList;
+}
+
 static Common::String getDesc(const Twp::SaveGame &savegame) {
 	Common::String desc = Twp::formatTime(savegame.time, "%b %d at %H:%M");
 	if (savegame.easyMode)
diff --git a/engines/twp/metaengine.h b/engines/twp/metaengine.h
index 0fdb84a8d6b..19dfc464bf8 100644
--- a/engines/twp/metaengine.h
+++ b/engines/twp/metaengine.h
@@ -42,11 +42,14 @@ public:
 	SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
 	void registerDefaultSettings(const Common::String &) const override;
 
+	Common::AchievementsPlatform getAchievementsPlatform(const Common::String &target) const override;
+	const Common::AchievementDescriptionList *getAchievementDescriptionList() const override;
+
 	GUI::OptionsContainerWidget *buildEngineOptionsWidget(GUI::GuiObject *boss, const Common::String &name, const Common::String &target) const override;
 
-	virtual Common::Array<Common::Keymap *> initKeymaps(const char *target) const override;
+	Common::Array<Common::Keymap *> initKeymaps(const char *target) const override;
 
-	virtual void getSavegameThumbnail(Graphics::Surface &thumb) override;
+	void getSavegameThumbnail(Graphics::Surface &thumb) override;
 };
 
 #endif // TWP_METAENGINE_H
diff --git a/engines/twp/twp.cpp b/engines/twp/twp.cpp
index a8b75b8c016..f81b493db41 100644
--- a/engines/twp/twp.cpp
+++ b/engines/twp/twp.cpp
@@ -798,6 +798,9 @@ void TwpEngine::updateSettingVars() {
 }
 
 Common::Error TwpEngine::run() {
+	const Common::String &gameTarget = ConfMan.getActiveDomainName();
+	AchMan.setActiveDomain(getMetaEngine()->getAchievementsInfo(gameTarget));
+
 	initGraphics3d(SCREEN_WIDTH, SCREEN_HEIGHT);
 	_screen = new Graphics::Screen(SCREEN_WIDTH, SCREEN_HEIGHT);
 


Commit: 8f9713ecccedfb2b20972fe57b7aab924ccbf447
    https://github.com/scummvm/scummvm/commit/8f9713ecccedfb2b20972fe57b7aab924ccbf447
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-23T16:47:04+02:00

Commit Message:
TWP: Fix text width with sayLineAt

Changed paths:
    engines/twp/motor.cpp


diff --git a/engines/twp/motor.cpp b/engines/twp/motor.cpp
index a42fe08ce64..dfd9c852fc3 100644
--- a/engines/twp/motor.cpp
+++ b/engines/twp/motor.cpp
@@ -629,7 +629,7 @@ void SayLineAt::say(const Common::String &text) {
 	Math::Vector2d talkingSize(320.f, 180.f);
 	Math::Vector2d pos(Math::Vector2d(SCREEN_WIDTH, SCREEN_HEIGHT) * _pos / talkingSize);
 
-	Text text2("sayline", txt, thCenter, tvTop, 0.f, _color);
+	Text text2("sayline", txt, thCenter, tvTop, SCREEN_WIDTH * 3.f / 4.f, _color);
 	_node = Common::SharedPtr<TextNode>(new TextNode());
 	_node->setText(text2);
 	_node->setPos(pos);


Commit: b9002c210960abf26eb2db91879099500d23e698
    https://github.com/scummvm/scummvm/commit/b9002c210960abf26eb2db91879099500d23e698
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-23T16:47:52+02:00

Commit Message:
TWP: Fix stopTalking should stop also sayLineAt

Changed paths:
    engines/twp/twp.cpp


diff --git a/engines/twp/twp.cpp b/engines/twp/twp.cpp
index f81b493db41..4a4dbbb8ee3 100644
--- a/engines/twp/twp.cpp
+++ b/engines/twp/twp.cpp
@@ -1384,6 +1384,8 @@ void TwpEngine::actorEnter(Common::SharedPtr<Object> actor) {
 void TwpEngine::exitRoom(Common::SharedPtr<Room> nextRoom) {
 	HSQUIRRELVM v = getVm();
 	_mixer->stopAll();
+	_talking.reset();
+
 	if (_room) {
 		_room->_triggers.clear();
 		_room->_scalingTriggers.clear();
@@ -1766,6 +1768,7 @@ void TwpEngine::sayLineAt(const Math::Vector2d &pos, const Color &color, Common:
 }
 
 void TwpEngine::stopTalking() {
+	_talking.reset();
 	if (!_room)
 		return;
 	for (auto it = _room->_layers.begin(); it != _room->_layers.end(); it++) {




More information about the Scummvm-git-logs mailing list