[Scummvm-git-logs] scummvm master -> 3054d7d58a967dd8a144a5a1d5d0f27223a97e2e
OMGPizzaGuy
noreply at scummvm.org
Sat Jan 7 21:48:59 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3054d7d58a ULTIMA8: Allow keyboard jump to climb when hanging
Commit: 3054d7d58a967dd8a144a5a1d5d0f27223a97e2e
https://github.com/scummvm/scummvm/commit/3054d7d58a967dd8a144a5a1d5d0f27223a97e2e
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-01-07T15:48:13-06:00
Commit Message:
ULTIMA8: Allow keyboard jump to climb when hanging
Changed paths:
engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
engines/ultima/ultima8/world/item_sorter.cpp
diff --git a/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp b/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
index 3223a8da291..267f995aab5 100644
--- a/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
@@ -20,6 +20,7 @@
*/
#include "ultima/ultima8/world/actors/avatar_gravity_process.h"
+#include "ultima/ultima8/world/actors/avatar_mover_process.h"
#include "ultima/ultima8/world/actors/main_actor.h"
#include "ultima/ultima8/ultima8.h"
#include "ultima/ultima8/kernel/mouse.h"
@@ -41,34 +42,26 @@ AvatarGravityProcess::AvatarGravityProcess(MainActor *avatar, int gravity)
}
void AvatarGravityProcess::run() {
- if (!Mouse::get_instance()->isMouseDownEvent(Mouse::BUTTON_RIGHT)) {
- // right mouse button not down, so fall normally
-
- GravityProcess::run();
- return;
+ AvatarMoverProcess *amp = Ultima8Engine::get_instance()->getAvatarMoverProcess();
+ if (amp && amp->hasMovementFlags(AvatarMoverProcess::MOVE_ANY_DIRECTION)) {
+ // See if we can cling to a ledge
+ MainActor *avatar = getMainActor();
+ if (avatar->tryAnim(Animation::climb40, dir_current) == Animation::SUCCESS) {
+
+ // We can climb, so perform a hang animation
+ // CHECKME: do we need to perform any other checks?
+ if (avatar->getLastAnim() != Animation::hang)
+ avatar->doAnim(Animation::hang, dir_current);
+
+ return;
+ }
}
- // right mouse button down, so see if we can cling to a ledge
- MainActor *avatar = getMainActor();
- Direction direction = avatar->getDir();
- if (avatar->tryAnim(Animation::climb40, direction) == Animation::SUCCESS) {
-
- // we can, so perform a hang animation
- // CHECKME: do we need to perform any other checks?
-
- if (avatar->getLastAnim() != Animation::hang)
- avatar->doAnim(Animation::hang, dir_current);
-
- return;
- } else {
-
- // fall normally
- GravityProcess::run();
- return;
- }
+ // fall normally
+ GravityProcess::run();
+ return;
}
-
void AvatarGravityProcess::saveData(Common::WriteStream *ws) {
GravityProcess::saveData(ws);
}
diff --git a/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
index 61c9affecfe..ba42463950b 100644
--- a/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
@@ -66,13 +66,17 @@ void U8AvatarMoverProcess::handleHangingMode() {
}
// if left mouse is down, try to climb up
-
if (_mouseButton[0].isState(MBS_DOWN) &&
(!_mouseButton[0].isState(MBS_HANDLED) || m0clicked)) {
_mouseButton[0].setState(MBS_HANDLED);
_mouseButton[0]._lastDown = 0;
- MainActor *avatar = getMainActor();
+ setMovementFlag(MOVE_JUMP);
+ }
+ if (hasMovementFlags(MOVE_JUMP)) {
+ clearMovementFlag(MOVE_JUMP);
+
+ MainActor *avatar = getMainActor();
if (avatar->tryAnim(Animation::climb40, dir_current) == Animation::SUCCESS) {
avatar->ensureGravityProcess()->terminate();
waitFor(avatar->doAnim(Animation::climb40, dir_current));
diff --git a/engines/ultima/ultima8/world/item_sorter.cpp b/engines/ultima/ultima8/world/item_sorter.cpp
index d16d508684f..079ee409fe9 100644
--- a/engines/ultima/ultima8/world/item_sorter.cpp
+++ b/engines/ultima/ultima8/world/item_sorter.cpp
@@ -254,9 +254,7 @@ void ItemSorter::AddItem(const Item *add) {
void ItemSorter::PaintDisplayList(RenderSurface *surf, bool item_highlight) {
if (_sortLimit) {
// Clear the surface when debugging the sorter
- Rect r;
- surf->GetClippingRect(r);
- surf->Fill32(0, r);
+ surf->Fill32(0, _clipWindow);
}
SortItem *it = _items;
More information about the Scummvm-git-logs
mailing list