[Scummvm-git-logs] scummvm master -> 0e6b95ba6da1caf3aec35d73e5a02452407bab97

scemino noreply at scummvm.org
Fri Apr 26 21:03:41 UTC 2024


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

Summary:
10a73fe03e TWP Fix regression in sayLineAt
367263d34d TWP: Remove unused "Select actor 6"
66e2d2a36a TWP: Add verb highlight
b91e0ac5d6 TWP: Add Select Highlighted Verb
0e6b95ba6d TWP: Add user preferences management


Commit: 10a73fe03e865483955f59e361e6a178aa3381f2
    https://github.com/scummvm/scummvm/commit/10a73fe03e865483955f59e361e6a178aa3381f2
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-26T23:03:32+02:00

Commit Message:
TWP Fix regression in sayLineAt

Changed paths:
    engines/twp/motor.cpp


diff --git a/engines/twp/motor.cpp b/engines/twp/motor.cpp
index 9883cf20508..977d49e5c73 100644
--- a/engines/twp/motor.cpp
+++ b/engines/twp/motor.cpp
@@ -372,7 +372,7 @@ void TalkingBase::setDuration(const Common::String &text) {
 }
 
 float TalkingBase::getTalkSpeed() const {
-	return _actor->_sound ? 1.f : (ConfMan.getInt("talkspeed") + 1) / 60.f;
+	return (_actor && _actor->_sound) ? 1.f : (ConfMan.getInt("talkspeed") + 1) / 60.f;
 }
 
 Talking::Talking(Common::SharedPtr<Object> obj, const Common::StringArray &texts, const Color &color) : TalkingBase(obj, 0.f) {


Commit: 367263d34dcac2e70914ed5fd6d256fa5644b2cd
    https://github.com/scummvm/scummvm/commit/367263d34dcac2e70914ed5fd6d256fa5644b2cd
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-26T23:03:32+02:00

Commit Message:
TWP: Remove unused "Select actor 6"

Changed paths:
    engines/twp/actions.h
    engines/twp/metaengine.cpp
    engines/twp/twp.cpp


diff --git a/engines/twp/actions.h b/engines/twp/actions.h
index 199c0f3ea01..409558be4b7 100644
--- a/engines/twp/actions.h
+++ b/engines/twp/actions.h
@@ -36,7 +36,6 @@ enum TwpAction {
 	kSelectActor3,
 	kSelectActor4,
 	kSelectActor5,
-	kSelectActor6,
 	kSelectChoice1,
 	kSelectChoice2,
 	kSelectChoice3,
diff --git a/engines/twp/metaengine.cpp b/engines/twp/metaengine.cpp
index d2b233def7f..322b65e11c9 100644
--- a/engines/twp/metaengine.cpp
+++ b/engines/twp/metaengine.cpp
@@ -158,7 +158,6 @@ Common::Array<Common::Keymap *> TwpMetaEngine::initKeymaps(const char *target) c
 		{"SELECTACTOR3", _s("Select Actor 3"), Twp::kSelectActor3, "3", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTACTOR4", _s("Select Actor 4"), Twp::kSelectActor4, "4", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTACTOR5", _s("Select Actor 5"), Twp::kSelectActor5, "5", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
-		{"SELECTACTOR6", _s("Select Actor 6"), Twp::kSelectActor6, "6", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTCHOICE1", _s("Select Choice 1"), Twp::kSelectChoice1, "1", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTCHOICE2", _s("Select Choice 2"), Twp::kSelectChoice2, "2", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTCHOICE3", _s("Select Choice 3"), Twp::kSelectChoice3, "3", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
diff --git a/engines/twp/twp.cpp b/engines/twp/twp.cpp
index 157b202cf89..79f353988d5 100644
--- a/engines/twp/twp.cpp
+++ b/engines/twp/twp.cpp
@@ -902,7 +902,6 @@ Common::Error TwpEngine::run() {
 				case TwpAction::kSelectActor3:
 				case TwpAction::kSelectActor4:
 				case TwpAction::kSelectActor5:
-				case TwpAction::kSelectActor6:
 					if (_actorSwitcher._mode == asOn) {
 						int index = (TwpAction)e.customType - kSelectActor1;
 						ActorSlot *slot = &_hud->_actorSlots[index];


Commit: 66e2d2a36a147f390546436b9be6de80005fe4f7
    https://github.com/scummvm/scummvm/commit/66e2d2a36a147f390546436b9be6de80005fe4f7
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-26T23:03:32+02:00

Commit Message:
TWP: Add verb highlight

Changed paths:
    engines/twp/hud.cpp
    engines/twp/hud.h


diff --git a/engines/twp/hud.cpp b/engines/twp/hud.cpp
index 2a8fa8b9ab6..d4057d6c965 100644
--- a/engines/twp/hud.cpp
+++ b/engines/twp/hud.cpp
@@ -199,7 +199,7 @@ void Hud::drawCore(const Math::Matrix4 &trsf) {
 		const VerbSlot &verbSlot = slot->verbSlots[i];
 		if (verbSlot._verb.image.size() > 0) {
 			const SpriteSheetFrame &verbFrame = verbSheet->getFrame(Common::String::format("%s%s_%s", verbSlot._verb.image.c_str(), verbSuffix.c_str(), lang.c_str()));
-			Color color = (verbSlot._over || (verbSlot._verb.id.id == _defaultVerbId)) ? verbHighlight : verbColor;
+			Color color = (verbSlot._over || (verbSlot._hightlight)) ? verbHighlight : verbColor;
 			Math::Matrix4 t(trsf);
 			t.translate(Math::Vector3d(verbSlot._shakeOffset.getX(), verbSlot._shakeOffset.getY(), 0.f));
 			drawSprite(verbFrame, verbTexture, Color::withAlpha(color, getAlpha()), t);
@@ -234,12 +234,20 @@ void Hud::update(float elapsed, const Math::Vector2d &pos, Common::SharedPtr<Obj
 	Common::String lang = ConfMan.get("language");
 	Common::String verbSuffix = retroVerbs ? "_retro" : "";
 	SpriteSheet *verbSheet = g_twp->_resManager->spriteSheet("VerbSheet");
+
+	// get the verb to highlight
+	int defaultVerbId = slot->verbSlots[0]._verb.id.id;
+	if (g_twp->_noun1 && (this->_verb.id.id == slot->verbSlots[0]._verb.id.id)) {
+		defaultVerbId = g_twp->_noun1->defaultVerbId();
+	}
+
 	bool isOver = false;
 	for (int i = 1; i < MAX_VERBS; i++) {
 		VerbSlot &verbSlot = slot->verbSlots[i];
 		if (verbSlot._verb.image.size() > 0) {
 			const SpriteSheetFrame &verbFrame = verbSheet->getFrame(Common::String::format("%s%s_%s", verbSlot._verb.image.c_str(), verbSuffix.c_str(), lang.c_str()));
 			bool over = verbFrame.spriteSourceSize.contains(_mousePos.getX(), _mousePos.getY());
+			verbSlot._hightlight = (verbSlot._verb.id.id == defaultVerbId);
 			// shake choice when cursor is over
 			if ((verbSlot._shakeTime > 0.0f) && verbSlot._shake) {
 				verbSlot._shake->update(elapsed);
diff --git a/engines/twp/hud.h b/engines/twp/hud.h
index a8ffaa46675..d7617c44f87 100644
--- a/engines/twp/hud.h
+++ b/engines/twp/hud.h
@@ -66,6 +66,7 @@ struct VerbSlot {
 	Common::ScopedPtr<Motor> _shake;
 	Math::Vector2d _shakeOffset;
 	bool _over = false;
+	bool _hightlight = false;
 
 	VerbSlot() {}
 	VerbSlot(Verb verb) : _verb(verb) {}


Commit: b91e0ac5d672af653794d088d01ab199b880da37
    https://github.com/scummvm/scummvm/commit/b91e0ac5d672af653794d088d01ab199b880da37
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-26T23:03:32+02:00

Commit Message:
TWP: Add Select Highlighted Verb

Changed paths:
    engines/twp/actions.h
    engines/twp/metaengine.cpp


diff --git a/engines/twp/actions.h b/engines/twp/actions.h
index 409558be4b7..472d692f5ff 100644
--- a/engines/twp/actions.h
+++ b/engines/twp/actions.h
@@ -26,6 +26,7 @@ namespace Twp {
 
 enum TwpAction {
 	kDefaultAction,
+	kSelectHighlightedVerb,
 	kMoveLeft,
 	kMoveRight,
 	kMoveUp,
diff --git a/engines/twp/metaengine.cpp b/engines/twp/metaengine.cpp
index 322b65e11c9..0494eb40c2c 100644
--- a/engines/twp/metaengine.cpp
+++ b/engines/twp/metaengine.cpp
@@ -148,6 +148,7 @@ Common::Array<Common::Keymap *> TwpMetaEngine::initKeymaps(const char *target) c
 		Common::KeyCode key;
 	} actions[] = {
 		{"ACTION", _s("Action"), Twp::kDefaultAction, "MOUSE_LEFT|JOY_A|RETURN", Common::EVENT_LBUTTONDOWN, Common::KEYCODE_INVALID},
+		{"SELECTHIGHLIGHTEDVERB", _s("Select highlighted verb"), Twp::kSelectHighlightedVerb, "MOUSE_RIGHT|JOY_X", Common::EVENT_RBUTTONDOWN, Common::KEYCODE_INVALID},
 		{Common::kStandardActionMoveLeft, _s("Left"), Twp::kMoveLeft, "LEFT|JOY_LEFT", Common::EVENT_INVALID, Common::KEYCODE_LEFT},
 		{Common::kStandardActionMoveRight, _s("Right"), Twp::kMoveRight, "RIGHT|JOY_RIGHT", Common::EVENT_INVALID, Common::KEYCODE_RIGHT},
 		{Common::kStandardActionMoveUp, _s("Up"), Twp::kMoveUp, "UP|JOY_UP", Common::EVENT_INVALID, Common::KEYCODE_UP},
@@ -166,7 +167,7 @@ Common::Array<Common::Keymap *> TwpMetaEngine::initKeymaps(const char *target) c
 		{"SELECTCHOICE6", _s("Select Choice 6"), Twp::kSelectChoice6, "6", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTNEXTACTOR", _s("Select Next Actor"), Twp::kSelectNextActor, "0", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SELECTPREVACTOR", _s("Select Previous Actor"), Twp::kSelectPreviousActor, "9", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
-		{"SKIPTEXT", _s("Skip Text"), Twp::kSkipText, "MOUSE_MIDDLE|PERIOD", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
+		{"SKIPTEXT", _s("Skip Text"), Twp::kSkipText, "MOUSE_MIDDLE|PERIOD|JOY_Y", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"SHOWHOTSPOTS", _s("Show hotspots"), Twp::kShowHotspots, "TAB", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"OPEN", _s("Open"), Twp::kOpen, "q", Common::EVENT_INVALID, Common::KEYCODE_INVALID},
 		{"CLOSE", _s("Close"), Twp::kClose, "a", Common::EVENT_INVALID, Common::KEYCODE_INVALID},


Commit: 0e6b95ba6da1caf3aec35d73e5a02452407bab97
    https://github.com/scummvm/scummvm/commit/0e6b95ba6da1caf3aec35d73e5a02452407bab97
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-26T23:03:32+02:00

Commit Message:
TWP: Add user preferences management

Changed paths:
    engines/twp/genlib.cpp


diff --git a/engines/twp/genlib.cpp b/engines/twp/genlib.cpp
index c554a76b05d..2c7f39eff58 100644
--- a/engines/twp/genlib.cpp
+++ b/engines/twp/genlib.cpp
@@ -346,19 +346,72 @@ static SQInteger frameCounter(HSQUIRRELVM v) {
 static SQInteger getUserPref(HSQUIRRELVM v) {
 	Common::String key;
 	if (SQ_FAILED(sqget(v, 2, key))) {
-		return sq_throwerror(v, "failed to get key");
+		return sq_throwerror(v, _SC("failed to get key"));
 	}
-	// TODO: use ConfMan to search for key
+	SQInteger numArgs = sq_gettop(v) - 1;
+	// is there a fault value as argument ?
+	if (numArgs > 1) {
+		SQObjectType type = sq_gettype(v, 3);
+		if (type == SQObjectType::OT_STRING) {
+			Common::String str;
+			sqget(v, 3, str);
+			sqpush(v, ConfMan.hasKey(key) ? ConfMan.get(key) : str);
+			return 1;
+		}
+		if (type == SQObjectType::OT_INTEGER) {
+			SQInteger integer;
+			sqget(v, 3, integer);
+			if (ConfMan.hasKey(key)) {
+				Common::String value = ConfMan.get(key);
+				bool bValue = false;
+				if (parseBool(value, bValue)) {
+					sqpush(v, bValue);
+					return 1;
+				}
+				sqpush(v, ConfMan.getInt(key));
+				return 1;
+			}
 
-	// if configuration
-	int numArgs = sq_gettop(v);
-	if (numArgs == 3) {
-		HSQOBJECT obj;
-		sq_getstackobj(v, 3, &obj);
-		sqpush(v, obj);
+			sqpush(v, integer);
+			return 1;
+		}
+		if (type == SQObjectType::OT_FLOAT) {
+			SQFloat fl;
+			sqget(v, 3, fl);
+			sqpush(v, ConfMan.hasKey(key) ? atof(ConfMan.get(key).c_str()) : fl);
+			return 1;
+		}
+		return sq_throwerror(v, _SC("failed to get user preferences"));
+	}
+
+	if (ConfMan.hasKey(key)) {
+		Common::String value = ConfMan.get(key);
+		bool isNumber = !value.empty();
+		bool isFloat = false;
+		for (size_t i = 0; i < value.size(); i++) {
+			if (!isFloat && value[i] == '.') {
+				isFloat = true;
+				continue;
+			}
+			if (!Common::isDigit(value[i])) {
+				isNumber = false;
+				break;
+			}
+		}
+		if (!isNumber) {
+			sqpush(v, value);
+			return 1;
+		}
+		if (isFloat) {
+			sqpush(v, atof(value.c_str()));
+			return 1;
+		}
+		sqpush(v, (SQInteger)atol(value.c_str()));
 		return 1;
 	}
-	return 0;
+
+	sq_pushnull(v);
+	return 1;
 }
 
 static SQInteger getPrivatePref(HSQUIRRELVM v) {
@@ -725,7 +778,30 @@ static SQInteger setPrivatePref(HSQUIRRELVM v) {
 }
 
 static SQInteger setUserPref(HSQUIRRELVM v) {
-	// TODO: setUserPref
+	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("setUserPref not implemented");
 	return 0;
 }




More information about the Scummvm-git-logs mailing list