[Scummvm-git-logs] scummvm master -> 3a211c4cf6d0eeef58d271cebbc54cb823b14757

scemino noreply at scummvm.org
Wed Apr 24 20:33:04 UTC 2024


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

Summary:
c74c6fba40 TWP: Add dialog choices animation
35aab78f2b TWP: Add shake animation when mouse is over a choice
3a211c4cf6 TWP: Change key mapping descriptions


Commit: c74c6fba400a76602ee919f4dc1bd5f14413c0fd
    https://github.com/scummvm/scummvm/commit/c74c6fba400a76602ee919f4dc1bd5f14413c0fd
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-24T22:32:48+02:00

Commit Message:
TWP: Add dialog choices animation

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


diff --git a/engines/twp/dialog.cpp b/engines/twp/dialog.cpp
index bf172bc6087..e538b362316 100644
--- a/engines/twp/dialog.cpp
+++ b/engines/twp/dialog.cpp
@@ -233,6 +233,7 @@ void Dialog::start(const Common::String &actor, const Common::String &name, cons
 }
 
 void Dialog::update(float dt) {
+	_fadeTime += dt;
 	switch (_state) {
 	case DialogState::None:
 		break;
@@ -358,6 +359,7 @@ void Dialog::gotoNextLabel() {
 
 void Dialog::updateChoiceStates() {
 	_state = WaitingForChoice;
+	_fadeTime = 0.f;
 	for (auto &_slot : _slots) {
 		DialogSlot *slot = &_slot;
 		if (slot->_isValid) {
@@ -481,12 +483,19 @@ void Dialog::drawCore(const Math::Matrix4 &trsf) {
 		g_twp->getGfx().drawSprite(backingFrame.frame, *gameTexture, Color(0, 0, 0, alpha * getAlpha()), trsf);
 	}
 
+	const float slotDelay = 0.1f;
+	float fadeTime = MIN(_fadeTime, 1.0f + slotDelay * MAXCHOICES);
+	int slotNum = 0;
 	for (auto &_slot : _slots) {
 		DialogSlot *slot = &_slot;
 		if (slot->_isValid) {
+			Color c = slot->_text.getColor();
 			Math::Matrix4 t(trsf);
-			t.translate(Math::Vector3d(slot->getPos().getX(), slot->getPos().getY(), 0.f));
+			float alpha = CLIP(6.f * (fadeTime - slotNum * slotDelay), 0.f, 1.f);
+			t.translate(Math::Vector3d(slot->getPos().getX(), slot->getPos().getY() + (6.f * alpha), 0.f));
+			slot->_text.setColor(Color::withAlpha(c, alpha));
 			slot->_text.draw(g_twp->getGfx(), t);
+			slotNum++;
 		}
 	}
 }
diff --git a/engines/twp/dialog.h b/engines/twp/dialog.h
index e2dc7e57779..cb797def314 100644
--- a/engines/twp/dialog.h
+++ b/engines/twp/dialog.h
@@ -230,6 +230,7 @@ private:
 	Common::SharedPtr<YLabel> _lbl;
 	DialogSlot _slots[MAXDIALOGSLOTS];
 	Math::Vector2d _mousePos;
+	float _fadeTime = 0.f;
 };
 
 } // namespace Twp


Commit: 35aab78f2b33d7b8f73577486f9d2d9e09178411
    https://github.com/scummvm/scummvm/commit/35aab78f2b33d7b8f73577486f9d2d9e09178411
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-24T22:32:48+02:00

Commit Message:
TWP: Add shake animation when mouse is over a choice

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


diff --git a/engines/twp/dialog.cpp b/engines/twp/dialog.cpp
index e538b362316..0643fdd042f 100644
--- a/engines/twp/dialog.cpp
+++ b/engines/twp/dialog.cpp
@@ -248,6 +248,23 @@ void Dialog::update(float dt) {
 			if (slot->_isValid) {
 				Rectf rect = Rectf::fromPosAndSize(slot->getPos() - Math::Vector2d(0.f, -slot->getSize().getY() / 2.f), slot->getSize());
 				bool over = rect.contains(_mousePos);
+				// shake choice when cursor is over
+				if ((slot->_shakeTime > 0.0f) && slot->_shake) {
+					slot->_shake->update(dt);
+					slot->_shakeTime -= dt;
+					if (slot->_shakeTime < 0.f) {
+						slot->_shakeTime = 0.f;
+					}
+				}
+				if (over && !slot->_over && slot->_shakeTime < 0.1f) {
+					slot->_shakeTime = 0.25f;
+					slot->_shake = Common::ScopedPtr<Motor>(new Shake(slot, 0.6f));
+					slot->_over = over;
+				}
+				if (!over) {
+					slot->_over = false;
+				}
+				// slide choice text wen text is too large
 				if (rect.r.w > (SCREEN_WIDTH - SLOTMARGIN)) {
 					if (over) {
 						if ((rect.r.w + slot->getPos().getX()) > (SCREEN_WIDTH - SLOTMARGIN)) {
@@ -490,9 +507,9 @@ void Dialog::drawCore(const Math::Matrix4 &trsf) {
 		DialogSlot *slot = &_slot;
 		if (slot->_isValid) {
 			Color c = slot->_text.getColor();
-			Math::Matrix4 t(trsf);
+			Math::Matrix4 t(slot->getTrsf(trsf));
 			float alpha = CLIP(6.f * (fadeTime - slotNum * slotDelay), 0.f, 1.f);
-			t.translate(Math::Vector3d(slot->getPos().getX(), slot->getPos().getY() + (6.f * alpha), 0.f));
+			t.translate(Math::Vector3d(0.f, (6.f * alpha), 0.f));
 			slot->_text.setColor(Color::withAlpha(c, alpha));
 			slot->_text.draw(g_twp->getGfx(), t);
 			slotNum++;
diff --git a/engines/twp/dialog.h b/engines/twp/dialog.h
index cb797def314..ed17308ba74 100644
--- a/engines/twp/dialog.h
+++ b/engines/twp/dialog.h
@@ -47,6 +47,9 @@ public:
 	Text _text;
 	Common::SharedPtr<YStatement> _stmt;
 	Dialog *_dlg = nullptr;
+	float _shakeTime = 0.f;
+	bool _over = false;
+	Common::ScopedPtr<Motor> _shake;
 };
 
 struct DialogContext {


Commit: 3a211c4cf6d0eeef58d271cebbc54cb823b14757
    https://github.com/scummvm/scummvm/commit/3a211c4cf6d0eeef58d271cebbc54cb823b14757
Author: scemino (scemino74 at gmail.com)
Date: 2024-04-24T22:32:48+02:00

Commit Message:
TWP: Change key mapping descriptions

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 e53ce5c0742..7c3d9cc4093 100644
--- a/engines/twp/actions.h
+++ b/engines/twp/actions.h
@@ -42,15 +42,15 @@ enum TwpAction {
 	kSelectNextActor,
 	kSkipText,
 	kShowHotspots,
-	kOpenAction,
-	kCloseAction,
-	kGiveAction,
-	kPickUpAction,
-	kLookAtAction,
-	kTalkToAction,
-	kPushAction,
-	kPullAction,
-	kUseAction
+	kOpen,
+	kClose,
+	kGive,
+	kPickUp,
+	kLookAt,
+	kTalkTo,
+	kPush,
+	kPull,
+	kUse
 };
 
 }
diff --git a/engines/twp/metaengine.cpp b/engines/twp/metaengine.cpp
index 6c30c8a26a4..77c9719d33d 100644
--- a/engines/twp/metaengine.cpp
+++ b/engines/twp/metaengine.cpp
@@ -161,15 +161,15 @@ Common::Array<Common::Keymap *> TwpMetaEngine::initKeymaps(const char *target) c
 		{"SELECTPREVACTOR", _s("Select Previous Actor"), Twp::kSelectPreviousActor, "9"},
 		{"SKIPTEXT", _s("Skip Text"), Twp::kSkipText, "PERIOD"},
 		{"SHOWHOTSPOTS", _s("Show hotspots"), Twp::kShowHotspots, "TAB"},
-		{"OPEN", _s("Open action"), Twp::kOpenAction, "q"},
-		{"CLOSE", _s("Close action"), Twp::kCloseAction, "a"},
-		{"GIVE", _s("Give action"), Twp::kGiveAction, "z"},
-		{"PICKUP", _s("Pick up action"), Twp::kPickUpAction, "w"},
-		{"LOOKAT", _s("Look at action"), Twp::kLookAtAction, "s"},
-		{"TALKTO", _s("Talk to action"), Twp::kTalkToAction, "x"},
-		{"PUSH", _s("Push action"), Twp::kPushAction, "e"},
-		{"PULL", _s("Pull action"), Twp::kPullAction, "d"},
-		{"USE", _s("Use action"), Twp::kUseAction, "c"},
+		{"OPEN", _s("Open"), Twp::kOpen, "q"},
+		{"CLOSE", _s("Close"), Twp::kClose, "a"},
+		{"GIVE", _s("Give"), Twp::kGive, "z"},
+		{"PICKUP", _s("Pick up"), Twp::kPickUp, "w"},
+		{"LOOKAT", _s("Look at"), Twp::kLookAt, "s"},
+		{"TALKTO", _s("Talk to"), Twp::kTalkTo, "x"},
+		{"PUSH", _s("Push"), Twp::kPush, "e"},
+		{"PULL", _s("Pull"), Twp::kPull, "d"},
+		{"USE", _s("Use"), Twp::kUse, "c"},
 		{0, 0, Twp::kSkipCutscene, 0}};
 
 	Common::Action *act;
diff --git a/engines/twp/twp.cpp b/engines/twp/twp.cpp
index e08d6a9fc1d..1106a1345f9 100644
--- a/engines/twp/twp.cpp
+++ b/engines/twp/twp.cpp
@@ -954,16 +954,16 @@ Common::Error TwpEngine::run() {
 				case TwpAction::kShowHotspots:
 					_hotspotMarker->setVisible(!_hotspotMarker->isVisible());
 					break;
-				case TwpAction::kOpenAction:
-				case TwpAction::kCloseAction:
-				case TwpAction::kGiveAction:
-				case TwpAction::kPickUpAction:
-				case TwpAction::kLookAtAction:
-				case TwpAction::kTalkToAction:
-				case TwpAction::kPushAction:
-				case TwpAction::kPullAction:
-				case TwpAction::kUseAction:
-					setVerbAction(1 + (int)e.customType - (int)TwpAction::kOpenAction);
+				case TwpAction::kOpen:
+				case TwpAction::kClose:
+				case TwpAction::kGive:
+				case TwpAction::kPickUp:
+				case TwpAction::kLookAt:
+				case TwpAction::kTalkTo:
+				case TwpAction::kPush:
+				case TwpAction::kPull:
+				case TwpAction::kUse:
+					setVerbAction(1 + (int)e.customType - (int)TwpAction::kOpen);
 					break;
 				}
 				break;




More information about the Scummvm-git-logs mailing list