[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