[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