[Scummvm-git-logs] scummvm master -> bfb32aaeb3c79f379de4be282d4c57b0a3baffc3
mduggan
mgithub at guarana.org
Mon May 11 10:23:57 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3666253a60 ULTIMA8: Correct capitalization of mouse functions
bfb32aaeb3 ULTIMA8: Add basic avatar keyboard movement
Commit: 3666253a60b372c5165e08503de1a2d38148938f
https://github.com/scummvm/scummvm/commit/3666253a60b372c5165e08503de1a2d38148938f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-05-11T17:32:54+09:00
Commit Message:
ULTIMA8: Correct capitalization of mouse functions
Changed paths:
engines/ultima/ultima8/gumps/bark_gump.cpp
engines/ultima/ultima8/gumps/bark_gump.h
engines/ultima/ultima8/gumps/book_gump.cpp
engines/ultima/ultima8/gumps/book_gump.h
engines/ultima/ultima8/gumps/container_gump.cpp
engines/ultima/ultima8/gumps/container_gump.h
engines/ultima/ultima8/gumps/game_map_gump.cpp
engines/ultima/ultima8/gumps/game_map_gump.h
engines/ultima/ultima8/gumps/gump.cpp
engines/ultima/ultima8/gumps/gump.h
engines/ultima/ultima8/gumps/mini_stats_gump.cpp
engines/ultima/ultima8/gumps/mini_stats_gump.h
engines/ultima/ultima8/gumps/modal_gump.cpp
engines/ultima/ultima8/gumps/modal_gump.h
engines/ultima/ultima8/gumps/readable_gump.cpp
engines/ultima/ultima8/gumps/readable_gump.h
engines/ultima/ultima8/gumps/scroll_gump.cpp
engines/ultima/ultima8/gumps/scroll_gump.h
engines/ultima/ultima8/gumps/target_gump.cpp
engines/ultima/ultima8/gumps/target_gump.h
engines/ultima/ultima8/gumps/u8_save_gump.cpp
engines/ultima/ultima8/gumps/u8_save_gump.h
engines/ultima/ultima8/gumps/widgets/button_widget.cpp
engines/ultima/ultima8/gumps/widgets/button_widget.h
engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
engines/ultima/ultima8/gumps/widgets/edit_widget.h
engines/ultima/ultima8/gumps/widgets/text_widget.cpp
engines/ultima/ultima8/gumps/widgets/text_widget.h
engines/ultima/ultima8/kernel/mouse.cpp
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
engines/ultima/ultima8/world/actors/avatar_mover_process.h
diff --git a/engines/ultima/ultima8/gumps/bark_gump.cpp b/engines/ultima/ultima8/gumps/bark_gump.cpp
index b38d84c2d4..3e5cb572a4 100644
--- a/engines/ultima/ultima8/gumps/bark_gump.cpp
+++ b/engines/ultima/ultima8/gumps/bark_gump.cpp
@@ -162,8 +162,8 @@ void BarkGump::run() {
}
}
-Gump *BarkGump::OnMouseDown(int button, int32 mx, int32 my) {
- Gump *g = ItemRelativeGump::OnMouseDown(button, mx, my);
+Gump *BarkGump::onMouseDown(int button, int32 mx, int32 my) {
+ Gump *g = ItemRelativeGump::onMouseDown(button, mx, my);
if (g) return g;
// Scroll to next text, if possible
diff --git a/engines/ultima/ultima8/gumps/bark_gump.h b/engines/ultima/ultima8/gumps/bark_gump.h
index a439eb8a81..4370d0aa23 100644
--- a/engines/ultima/ultima8/gumps/bark_gump.h
+++ b/engines/ultima/ultima8/gumps/bark_gump.h
@@ -49,7 +49,7 @@ public:
void run() override;
// Got to the next page on mouse click
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
// Init the gump, call after construction
void InitGump(Gump *newparent, bool take_focus = true) override;
diff --git a/engines/ultima/ultima8/gumps/book_gump.cpp b/engines/ultima/ultima8/gumps/book_gump.cpp
index 0a7d976b09..756e537b7f 100644
--- a/engines/ultima/ultima8/gumps/book_gump.cpp
+++ b/engines/ultima/ultima8/gumps/book_gump.cpp
@@ -87,12 +87,12 @@ void BookGump::NextText() {
widgetR->setupNextText();
}
-void BookGump::OnMouseClick(int button, int32 mx, int32 my) {
+void BookGump::onMouseClick(int button, int32 mx, int32 my) {
// Scroll to next text, if possible
NextText();
}
-void BookGump::OnMouseDouble(int button, int32 mx, int32 my) {
+void BookGump::onMouseDouble(int button, int32 mx, int32 my) {
Close();
}
diff --git a/engines/ultima/ultima8/gumps/book_gump.h b/engines/ultima/ultima8/gumps/book_gump.h
index be97dbb159..49cf625383 100644
--- a/engines/ultima/ultima8/gumps/book_gump.h
+++ b/engines/ultima/ultima8/gumps/book_gump.h
@@ -42,10 +42,10 @@ public:
~BookGump() override;
// Go to the next page on mouse click
- void OnMouseClick(int button, int32 mx, int32 my) override;
+ void onMouseClick(int button, int32 mx, int32 my) override;
// Close on double click
- void OnMouseDouble(int button, int32 mx, int32 my) override;
+ void onMouseDouble(int button, int32 mx, int32 my) override;
// Init the gump, call after construction
void InitGump(Gump *newparent, bool take_focus = true) override;
diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index 87cc3c6962..6ae0242a5b 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -300,8 +300,8 @@ Container *ContainerGump::getTargetContainer(Item *item, int mx, int my) {
}
-Gump *ContainerGump::OnMouseDown(int button, int32 mx, int32 my) {
- Gump *handled = Gump::OnMouseDown(button, mx, my);
+Gump *ContainerGump::onMouseDown(int button, int32 mx, int32 my) {
+ Gump *handled = Gump::onMouseDown(button, mx, my);
if (handled) return handled;
// only interested in left clicks
@@ -311,7 +311,7 @@ Gump *ContainerGump::OnMouseDown(int button, int32 mx, int32 my) {
return nullptr;
}
-void ContainerGump::OnMouseClick(int button, int32 mx, int32 my) {
+void ContainerGump::onMouseClick(int button, int32 mx, int32 my) {
if (button == Shared::BUTTON_LEFT) {
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
pout << "Can't: avatarInStasis" << Std::endl;
@@ -330,7 +330,7 @@ void ContainerGump::OnMouseClick(int button, int32 mx, int32 my) {
}
}
-void ContainerGump::OnMouseDouble(int button, int32 mx, int32 my) {
+void ContainerGump::onMouseDouble(int button, int32 mx, int32 my) {
if (button == Shared::BUTTON_LEFT) {
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
pout << "Can't: avatarInStasis" << Std::endl;
diff --git a/engines/ultima/ultima8/gumps/container_gump.h b/engines/ultima/ultima8/gumps/container_gump.h
index 7be82c4ad6..bbdc346d0f 100644
--- a/engines/ultima/ultima8/gumps/container_gump.h
+++ b/engines/ultima/ultima8/gumps/container_gump.h
@@ -69,9 +69,9 @@ public:
void StopDraggingItem(Item *item, bool moved) override;
void DropItem(Item *item, int mx, int my) override;
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
- void OnMouseClick(int button, int32 mx, int32 my) override;
- void OnMouseDouble(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
+ void onMouseClick(int button, int32 mx, int32 my) override;
+ void onMouseDouble(int button, int32 mx, int32 my) override;
bool loadData(Common::ReadStream *rs, uint32 version);
protected:
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.cpp b/engines/ultima/ultima8/gumps/game_map_gump.cpp
index d7d44a8cc8..ede5819db0 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.cpp
+++ b/engines/ultima/ultima8/gumps/game_map_gump.cpp
@@ -280,14 +280,14 @@ bool GameMapGump::GetLocationOfItem(uint16 itemid, int32 &gx, int32 &gy,
return true;
}
-Gump *GameMapGump::OnMouseDown(int button, int32 mx, int32 my) {
+Gump *GameMapGump::onMouseDown(int button, int32 mx, int32 my) {
int32 sx = mx, sy = my;
ParentToGump(sx, sy);
GumpToScreenSpace(sx, sy);
AvatarMoverProcess *amp = Ultima8Engine::get_instance()->getAvatarMoverProcess();
if (button == Shared::BUTTON_RIGHT || button == Shared::BUTTON_LEFT) {
- amp->OnMouseDown(button, sx, sy);
+ amp->onMouseDown(button, sx, sy);
}
if (button == Shared::BUTTON_LEFT || button == Shared::BUTTON_RIGHT ||
@@ -299,14 +299,14 @@ Gump *GameMapGump::OnMouseDown(int button, int32 mx, int32 my) {
return nullptr;
}
-void GameMapGump::OnMouseUp(int button, int32 mx, int32 my) {
+void GameMapGump::onMouseUp(int button, int32 mx, int32 my) {
AvatarMoverProcess *amp = Ultima8Engine::get_instance()->getAvatarMoverProcess();
if (button == Shared::BUTTON_RIGHT || button == Shared::BUTTON_LEFT) {
- amp->OnMouseUp(button);
+ amp->onMouseUp(button);
}
}
-void GameMapGump::OnMouseClick(int button, int32 mx, int32 my) {
+void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
MainActor *avatar = getMainActor();
switch (button) {
case Shared::BUTTON_LEFT: {
@@ -374,7 +374,7 @@ void GameMapGump::OnMouseClick(int button, int32 mx, int32 my) {
}
}
-void GameMapGump::OnMouseDouble(int button, int32 mx, int32 my) {
+void GameMapGump::onMouseDouble(int button, int32 mx, int32 my) {
MainActor *avatar = getMainActor();
switch (button) {
case Shared::BUTTON_LEFT: {
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.h b/engines/ultima/ultima8/gumps/game_map_gump.h
index 23c44b4103..e271689540 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.h
+++ b/engines/ultima/ultima8/gumps/game_map_gump.h
@@ -68,10 +68,10 @@ public:
void StopDraggingItem(Item *item, bool moved) override;
void DropItem(Item *item, int mx, int my) override;
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
- void OnMouseUp(int button, int32 mx, int32 my) override;
- void OnMouseClick(int button, int32 mx, int32 my) override;
- void OnMouseDouble(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
+ void onMouseUp(int button, int32 mx, int32 my) override;
+ void onMouseClick(int button, int32 mx, int32 my) override;
+ void onMouseDouble(int button, int32 mx, int32 my) override;
void IncSortOrder(int count);
diff --git a/engines/ultima/ultima8/gumps/gump.cpp b/engines/ultima/ultima8/gumps/gump.cpp
index faaf4dc6c2..3119fd9f13 100644
--- a/engines/ultima/ultima8/gumps/gump.cpp
+++ b/engines/ultima/ultima8/gumps/gump.cpp
@@ -698,7 +698,7 @@ void Gump::StopDraggingChild(Gump *gump) {
// Input handling
//
-Gump *Gump::OnMouseDown(int button, int32 mx, int32 my) {
+Gump *Gump::onMouseDown(int button, int32 mx, int32 my) {
// Convert to local coords
ParentToGump(mx, my);
@@ -713,7 +713,7 @@ Gump *Gump::OnMouseDown(int button, int32 mx, int32 my) {
if (g->_flags & FLAG_CLOSING || g->IsHidden()) continue;
// It's got the point
- if (g->PointOnGump(mx, my)) handled = g->OnMouseDown(button, mx, my);
+ if (g->PointOnGump(mx, my)) handled = g->onMouseDown(button, mx, my);
if (handled) break;
}
@@ -721,7 +721,7 @@ Gump *Gump::OnMouseDown(int button, int32 mx, int32 my) {
return handled;
}
-Gump *Gump::OnMouseMotion(int32 mx, int32 my) {
+Gump *Gump::onMouseMotion(int32 mx, int32 my) {
// Convert to local coords
ParentToGump(mx, my);
@@ -736,7 +736,7 @@ Gump *Gump::OnMouseMotion(int32 mx, int32 my) {
if (g->_flags & FLAG_CLOSING || g->IsHidden()) continue;
// It's got the point
- if (g->PointOnGump(mx, my)) handled = g->OnMouseMotion(mx, my);
+ if (g->PointOnGump(mx, my)) handled = g->onMouseMotion(mx, my);
if (handled) break;
}
diff --git a/engines/ultima/ultima8/gumps/gump.h b/engines/ultima/ultima8/gumps/gump.h
index cc29a3eb64..1839c780ed 100644
--- a/engines/ultima/ultima8/gumps/gump.h
+++ b/engines/ultima/ultima8/gumps/gump.h
@@ -295,10 +295,10 @@ public:
//
// mx and my are relative to parents position
//
- // OnMouseDown returns the Gump that handled the Input, if it was handled.
+ // onMouseDown returns the Gump that handled the Input, if it was handled.
// The MouseUp,MouseDouble events will be sent to the same gump.
//
- // OnMouseMotion works like OnMouseDown,
+ // onMouseMotion works like onMouseDown,
// but independently of the other methods.
//
// Unhandled input will be passed down to the next lower gump.
@@ -307,16 +307,16 @@ public:
//
// Return Gump that handled event
- virtual Gump *OnMouseDown(int button, int32 mx, int32 my);
- virtual void OnMouseUp(int button, int32 mx, int32 my) { }
- virtual void OnMouseClick(int button, int32 mx, int32 my) { }
- virtual void OnMouseDouble(int button, int32 mx, int32 my) { }
- virtual Gump *OnMouseMotion(int32 mx, int32 my);
-
- // OnMouseOver is only call when the mouse first passes over the gump
- // OnMouseLeft is call as the mouse leaves the gump.
- virtual void OnMouseOver() { };
- virtual void OnMouseLeft() { };
+ virtual Gump *onMouseDown(int button, int32 mx, int32 my);
+ virtual void onMouseUp(int button, int32 mx, int32 my) { }
+ virtual void onMouseClick(int button, int32 mx, int32 my) { }
+ virtual void onMouseDouble(int button, int32 mx, int32 my) { }
+ virtual Gump *onMouseMotion(int32 mx, int32 my);
+
+ // onMouseOver is only call when the mouse first passes over the gump
+ // onMouseLeft is call as the mouse leaves the gump.
+ virtual void onMouseOver() { };
+ virtual void onMouseLeft() { };
// Keyboard input gets sent to the FocusGump. Or if there isn't one, it
// will instead get sent to the default key handler. TextInput requires
diff --git a/engines/ultima/ultima8/gumps/mini_stats_gump.cpp b/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
index a797691be7..181bad8514 100644
--- a/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
+++ b/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
@@ -106,14 +106,14 @@ uint16 MiniStatsGump::TraceObjId(int32 mx, int32 my) {
return 0;
}
-Gump *MiniStatsGump::OnMouseDown(int button, int32 mx, int32 my) {
+Gump *MiniStatsGump::onMouseDown(int button, int32 mx, int32 my) {
if (button == Shared::BUTTON_LEFT)
return this;
return nullptr;
}
-void MiniStatsGump::OnMouseDouble(int button, int32 mx, int32 my) {
+void MiniStatsGump::onMouseDouble(int button, int32 mx, int32 my) {
// check if there already is an open PaperdollGump
MainActor *av = getMainActor();
if (!av->getGump()) {
diff --git a/engines/ultima/ultima8/gumps/mini_stats_gump.h b/engines/ultima/ultima8/gumps/mini_stats_gump.h
index 130ac5bfbc..b683b6187e 100644
--- a/engines/ultima/ultima8/gumps/mini_stats_gump.h
+++ b/engines/ultima/ultima8/gumps/mini_stats_gump.h
@@ -47,8 +47,8 @@ public:
// Trace a click, and return ObjId
uint16 TraceObjId(int32 mx, int32 my) override;
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
- void OnMouseDouble(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
+ void onMouseDouble(int button, int32 mx, int32 my) override;
bool loadData(Common::ReadStream *rs, uint32 version);
protected:
diff --git a/engines/ultima/ultima8/gumps/modal_gump.cpp b/engines/ultima/ultima8/gumps/modal_gump.cpp
index 37041ee7c5..3924f18a90 100644
--- a/engines/ultima/ultima8/gumps/modal_gump.cpp
+++ b/engines/ultima/ultima8/gumps/modal_gump.cpp
@@ -88,8 +88,8 @@ void ModalGump::Close(bool no_del) {
Gump::Close(no_del);
}
-Gump *ModalGump::OnMouseDown(int button, int32 mx, int32 my) {
- Gump *handled = Gump::OnMouseDown(button, mx, my);
+Gump *ModalGump::onMouseDown(int button, int32 mx, int32 my) {
+ Gump *handled = Gump::onMouseDown(button, mx, my);
if (!handled) handled = this;
return handled;
}
diff --git a/engines/ultima/ultima8/gumps/modal_gump.h b/engines/ultima/ultima8/gumps/modal_gump.h
index 4abec224fa..1df36be1d8 100644
--- a/engines/ultima/ultima8/gumps/modal_gump.h
+++ b/engines/ultima/ultima8/gumps/modal_gump.h
@@ -47,7 +47,7 @@ public:
Gump *FindGump(int mx, int my) override;
uint16 TraceObjId(int32 mx, int32 my) override;
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
bool loadData(Common::ReadStream *rs, uint32 version);
protected:
diff --git a/engines/ultima/ultima8/gumps/readable_gump.cpp b/engines/ultima/ultima8/gumps/readable_gump.cpp
index c02214e2b7..6974588e36 100644
--- a/engines/ultima/ultima8/gumps/readable_gump.cpp
+++ b/engines/ultima/ultima8/gumps/readable_gump.cpp
@@ -83,7 +83,7 @@ void ReadableGump::InitGump(Gump *newparent, bool take_focus) {
widget->setRelativePosition(CENTER);
}
-Gump *ReadableGump::OnMouseDown(int button, int32 mx, int32 my) {
+Gump *ReadableGump::onMouseDown(int button, int32 mx, int32 my) {
Close();
return this;
}
diff --git a/engines/ultima/ultima8/gumps/readable_gump.h b/engines/ultima/ultima8/gumps/readable_gump.h
index ed3ce0ff72..2d41de5d52 100644
--- a/engines/ultima/ultima8/gumps/readable_gump.h
+++ b/engines/ultima/ultima8/gumps/readable_gump.h
@@ -42,7 +42,7 @@ public:
~ReadableGump() override;
// Close on mouse click on key press
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
bool OnKeyDown(int key, int mod) override;
// Init the gump, call after construction
diff --git a/engines/ultima/ultima8/gumps/scroll_gump.cpp b/engines/ultima/ultima8/gumps/scroll_gump.cpp
index 54b8c284a5..c676e77989 100644
--- a/engines/ultima/ultima8/gumps/scroll_gump.cpp
+++ b/engines/ultima/ultima8/gumps/scroll_gump.cpp
@@ -75,12 +75,12 @@ void ScrollGump::NextText() {
}
}
-void ScrollGump::OnMouseClick(int button, int32 mx, int32 my) {
+void ScrollGump::onMouseClick(int button, int32 mx, int32 my) {
// Scroll to next _text, if possible
NextText();
}
-void ScrollGump::OnMouseDouble(int button, int32 mx, int32 my) {
+void ScrollGump::onMouseDouble(int button, int32 mx, int32 my) {
Close();
}
diff --git a/engines/ultima/ultima8/gumps/scroll_gump.h b/engines/ultima/ultima8/gumps/scroll_gump.h
index b50751ed1d..6636cec5ac 100644
--- a/engines/ultima/ultima8/gumps/scroll_gump.h
+++ b/engines/ultima/ultima8/gumps/scroll_gump.h
@@ -41,10 +41,10 @@ public:
~ScrollGump() override;
// Go to the next page on mouse click
- void OnMouseClick(int button, int32 mx, int32 my) override;
+ void onMouseClick(int button, int32 mx, int32 my) override;
// Close on double click
- void OnMouseDouble(int button, int32 mx, int32 my) override;
+ void onMouseDouble(int button, int32 mx, int32 my) override;
// Init the gump, call after construction
void InitGump(Gump *newparent, bool take_focus = true) override;
diff --git a/engines/ultima/ultima8/gumps/target_gump.cpp b/engines/ultima/ultima8/gumps/target_gump.cpp
index 9b0f9d8cd3..44a61e40ba 100644
--- a/engines/ultima/ultima8/gumps/target_gump.cpp
+++ b/engines/ultima/ultima8/gumps/target_gump.cpp
@@ -69,14 +69,14 @@ void TargetGump::Close(bool no_del) {
}
bool TargetGump::PointOnGump(int mx, int my) {
- // HACK alert: if we're currently tracing from TargetGump::OnMouseUp,
+ // HACK alert: if we're currently tracing from TargetGump::onMouseUp,
// then we do NOT want to intercept the trace
if (_targetTracing) return false;
return ModalGump::PointOnGump(mx, my);
}
-void TargetGump::OnMouseUp(int button, int32 mx, int32 my) {
+void TargetGump::onMouseUp(int button, int32 mx, int32 my) {
_targetTracing = true;
_parent->GumpToScreenSpace(mx, my);
diff --git a/engines/ultima/ultima8/gumps/target_gump.h b/engines/ultima/ultima8/gumps/target_gump.h
index 476d0e8c12..2a97cc1496 100644
--- a/engines/ultima/ultima8/gumps/target_gump.h
+++ b/engines/ultima/ultima8/gumps/target_gump.h
@@ -45,7 +45,7 @@ public:
void InitGump(Gump *newparent, bool take_focus = true) override;
void Close(bool no_del = false) override;
void PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) override;
- void OnMouseUp(int button, int32 mx, int32 my) override;
+ void onMouseUp(int button, int32 mx, int32 my) override;
INTRINSIC(I_target);
diff --git a/engines/ultima/ultima8/gumps/u8_save_gump.cpp b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
index f5e1cc3e65..4939dac0f1 100644
--- a/engines/ultima/ultima8/gumps/u8_save_gump.cpp
+++ b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
@@ -167,13 +167,13 @@ void U8SaveGump::OnFocus(bool gain) {
}
}
-Gump *U8SaveGump::OnMouseDown(int button, int32 mx, int32 my) {
+Gump *U8SaveGump::onMouseDown(int button, int32 mx, int32 my) {
// take all clicks
return this;
}
-void U8SaveGump::OnMouseClick(int button, int32 mx, int32 my) {
+void U8SaveGump::onMouseClick(int button, int32 mx, int32 my) {
if (button != Shared::BUTTON_LEFT) return;
ParentToGump(mx, my);
diff --git a/engines/ultima/ultima8/gumps/u8_save_gump.h b/engines/ultima/ultima8/gumps/u8_save_gump.h
index 151f5530d8..5c8e63cfe6 100644
--- a/engines/ultima/ultima8/gumps/u8_save_gump.h
+++ b/engines/ultima/ultima8/gumps/u8_save_gump.h
@@ -43,8 +43,8 @@ public:
void InitGump(Gump *newparent, bool take_focus = true) override;
void Close(bool no_del = false) override;
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
- void OnMouseClick(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
+ void onMouseClick(int button, int32 mx, int32 my) override;
bool OnKeyDown(int key, int mod) override;
void ChildNotify(Gump *child, uint32 message) override;
void OnFocus(bool gain) override;
diff --git a/engines/ultima/ultima8/gumps/widgets/button_widget.cpp b/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
index 4e43c1572a..78d6c095c0 100644
--- a/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
@@ -108,8 +108,8 @@ bool ButtonWidget::PointOnGump(int mx, int my) {
return _dims.InRect(gx, gy);
}
-Gump *ButtonWidget::OnMouseDown(int button, int32 mx, int32 my) {
- Gump *ret = Gump::OnMouseDown(button, mx, my);
+Gump *ButtonWidget::onMouseDown(int button, int32 mx, int32 my) {
+ Gump *ret = Gump::onMouseDown(button, mx, my);
if (ret)
return ret;
if (button == Shared::BUTTON_LEFT) {
@@ -131,7 +131,7 @@ uint16 ButtonWidget::TraceObjId(int32 mx, int32 my) {
}
-void ButtonWidget::OnMouseUp(int button, int32 mx, int32 my) {
+void ButtonWidget::onMouseUp(int button, int32 mx, int32 my) {
if (button == Shared::BUTTON_LEFT) {
if (!_mouseOver) {
_shape = _shapeUp;
@@ -141,17 +141,17 @@ void ButtonWidget::OnMouseUp(int button, int32 mx, int32 my) {
}
}
-void ButtonWidget::OnMouseClick(int button, int32 mx, int32 my) {
+void ButtonWidget::onMouseClick(int button, int32 mx, int32 my) {
int gx = mx, gy = my;
if (PointOnGump(gx, gy))
_parent->ChildNotify(this, BUTTON_CLICK);
}
-void ButtonWidget::OnMouseDouble(int button, int32 mx, int32 my) {
+void ButtonWidget::onMouseDouble(int button, int32 mx, int32 my) {
_parent->ChildNotify(this, BUTTON_DOUBLE);
}
-void ButtonWidget::OnMouseOver() {
+void ButtonWidget::onMouseOver() {
if (_mouseOver) {
if (_textWidget) {
Gump *widget = getGump(_textWidget);
@@ -165,7 +165,7 @@ void ButtonWidget::OnMouseOver() {
}
}
-void ButtonWidget::OnMouseLeft() {
+void ButtonWidget::onMouseLeft() {
if (_mouseOver) {
if (_textWidget) {
Gump *widget = getGump(_textWidget);
diff --git a/engines/ultima/ultima8/gumps/widgets/button_widget.h b/engines/ultima/ultima8/gumps/widgets/button_widget.h
index 7fd3377a7a..58670cfb20 100644
--- a/engines/ultima/ultima8/gumps/widgets/button_widget.h
+++ b/engines/ultima/ultima8/gumps/widgets/button_widget.h
@@ -47,13 +47,13 @@ public:
uint16 TraceObjId(int32 mx, int32 my) override;
bool PointOnGump(int mx, int my) override;
- Gump *OnMouseDown(int button, int32 mx, int32 my) override;
- void OnMouseUp(int button, int32 mx, int32 my) override;
- void OnMouseClick(int button, int32 mx, int32 my) override;
- void OnMouseDouble(int button, int32 mx, int32 my) override;
+ Gump *onMouseDown(int button, int32 mx, int32 my) override;
+ void onMouseUp(int button, int32 mx, int32 my) override;
+ void onMouseClick(int button, int32 mx, int32 my) override;
+ void onMouseDouble(int button, int32 mx, int32 my) override;
- void OnMouseOver() override;
- void OnMouseLeft() override;
+ void onMouseOver() override;
+ void onMouseLeft() override;
//! return the textwidget's vlead, or 0 for an image button
int getVlead();
diff --git a/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp b/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
index 87863f70e6..049da81389 100644
--- a/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
@@ -180,7 +180,7 @@ void EditWidget::PaintComposited(RenderSurface *surf, int32 lerp_factor, int32 s
}
// don't handle any mouse motion events, so let parent handle them for us.
-Gump *EditWidget::OnMouseMotion(int32 mx, int32 my) {
+Gump *EditWidget::onMouseMotion(int32 mx, int32 my) {
return nullptr;
}
diff --git a/engines/ultima/ultima8/gumps/widgets/edit_widget.h b/engines/ultima/ultima8/gumps/widgets/edit_widget.h
index 841f800f63..15bfd2ffd9 100644
--- a/engines/ultima/ultima8/gumps/widgets/edit_widget.h
+++ b/engines/ultima/ultima8/gumps/widgets/edit_widget.h
@@ -51,7 +51,7 @@ public:
void PaintThis(RenderSurface *, int32 lerp_factor, bool scaled) override;
void PaintComposited(RenderSurface *surf, int32 lerp_factor, int32 sx, int32 sy) override;
- Gump *OnMouseMotion(int32 mx, int32 my) override;
+ Gump *onMouseMotion(int32 mx, int32 my) override;
bool OnKeyDown(int key, int mod) override;
bool OnKeyUp(int key) override;
bool OnTextInput(int unicode) override;
diff --git a/engines/ultima/ultima8/gumps/widgets/text_widget.cpp b/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
index d15b263bab..d59b470292 100644
--- a/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
@@ -207,7 +207,7 @@ void TextWidget::PaintComposited(RenderSurface *surf, int32 lerp_factor, int32 s
}
// don't handle any mouse motion events, so let parent handle them for us.
-Gump *TextWidget::OnMouseMotion(int32 mx, int32 my) {
+Gump *TextWidget::onMouseMotion(int32 mx, int32 my) {
return nullptr;
}
diff --git a/engines/ultima/ultima8/gumps/widgets/text_widget.h b/engines/ultima/ultima8/gumps/widgets/text_widget.h
index 8b38199a1c..1c041a2b2f 100644
--- a/engines/ultima/ultima8/gumps/widgets/text_widget.h
+++ b/engines/ultima/ultima8/gumps/widgets/text_widget.h
@@ -68,7 +68,7 @@ public:
void PaintComposited(RenderSurface *surf, int32 lerp_factor, int32 scalex, int32 scaley) override;
- Gump *OnMouseMotion(int32 mx, int32 my) override;
+ Gump *onMouseMotion(int32 mx, int32 my) override;
//! display the next part of the text
//! \return false if there is no more text to display
diff --git a/engines/ultima/ultima8/kernel/mouse.cpp b/engines/ultima/ultima8/kernel/mouse.cpp
index d5a8669dba..a281397304 100644
--- a/engines/ultima/ultima8/kernel/mouse.cpp
+++ b/engines/ultima/ultima8/kernel/mouse.cpp
@@ -65,7 +65,7 @@ bool Mouse::buttonDown(Shared::MouseButton button) {
MButton &mbutton = _mouseButton[button];
Gump *desktopGump = Ultima8Engine::get_instance()->getDesktopGump();
- Gump *mousedowngump = desktopGump->OnMouseDown(button, _mousePos.x, _mousePos.y);
+ Gump *mousedowngump = desktopGump->onMouseDown(button, _mousePos.x, _mousePos.y);
if (mousedowngump) {
mbutton._downGump = mousedowngump->getObjId();
handled = true;
@@ -85,7 +85,7 @@ bool Mouse::buttonDown(Shared::MouseButton button) {
int32 mx2 = _mousePos.x, my2 = _mousePos.y;
Gump *parent = gump->GetParent();
if (parent) parent->ScreenSpaceToGump(mx2, my2);
- gump->OnMouseDouble(button, mx2, my2);
+ gump->onMouseDouble(button, mx2, my2);
}
mbutton.setState(MBS_HANDLED);
mbutton._lastDown = 0;
@@ -113,7 +113,7 @@ bool Mouse::buttonUp(Shared::MouseButton button) {
Gump *parent = gump->GetParent();
if (parent)
parent->ScreenSpaceToGump(mx2, my2);
- gump->OnMouseUp(button, mx2, my2);
+ gump->onMouseUp(button, mx2, my2);
handled = true;
}
@@ -271,7 +271,7 @@ void Mouse::setMouseCoords(int mx, int my) {
_mousePos.y = my;
Gump *desktopGump = Ultima8Engine::get_instance()->getDesktopGump();
- Gump *gump = desktopGump->OnMouseMotion(mx, my);
+ Gump *gump = desktopGump->onMouseMotion(mx, my);
if (gump && _mouseOverGump != gump->getObjId()) {
Gump *oldGump = getGump(_mouseOverGump);
Std::list<Gump *> oldgumplist;
@@ -303,12 +303,12 @@ void Mouse::setMouseCoords(int mx, int my) {
// send events to remaining gumps
for (; olditer != oldgumplist.end(); ++olditer)
- (*olditer)->OnMouseLeft();
+ (*olditer)->onMouseLeft();
_mouseOverGump = gump->getObjId();
for (; newiter != newgumplist.end(); ++newiter)
- (*newiter)->OnMouseOver();
+ (*newiter)->onMouseOver();
}
if (_dragging == DRAG_NOT) {
@@ -510,7 +510,7 @@ void Mouse::handleDelayedEvents() {
if (parent)
parent->ScreenSpaceToGump(mx, my);
- gump->OnMouseClick(button, mx, my);
+ gump->onMouseClick(button, mx, my);
}
_mouseButton[button]._downGump = 0;
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index f31a55ae20..f19905d009 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -1002,7 +1002,7 @@ Common::Error Ultima8Engine::saveGameStream(Common::WriteStream *stream, bool is
// Hack - don't save mouse over status for gumps
Gump *gump = _mouse->getMouseOverGump();
if (gump)
- gump->OnMouseLeft();
+ gump->onMouseLeft();
_mouse->pushMouseCursor();
_mouse->setMouseCursor(Mouse::MOUSE_PENTAGRAM);
@@ -1066,7 +1066,7 @@ Common::Error Ultima8Engine::saveGameStream(Common::WriteStream *stream, bool is
delete sgw;
// Restore mouse over
- if (gump) gump->OnMouseOver();
+ if (gump) gump->onMouseOver();
pout << "Done" << Std::endl;
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
index 842eb0e6a0..cc37f1b26d 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
@@ -756,7 +756,7 @@ bool AvatarMoverProcess::canAttack() {
return (_lastFrame > _lastAttack + (25 - avatar->getDex()));
}
-void AvatarMoverProcess::OnMouseDown(int button, int32 mx, int32 my) {
+void AvatarMoverProcess::onMouseDown(int button, int32 mx, int32 my) {
int bid = 0;
switch (button) {
@@ -779,7 +779,7 @@ void AvatarMoverProcess::OnMouseDown(int button, int32 mx, int32 my) {
_mouseButton[bid].clearState(MBS_HANDLED);
}
-void AvatarMoverProcess::OnMouseUp(int button) {
+void AvatarMoverProcess::onMouseUp(int button) {
int bid = 0;
if (button == Shared::BUTTON_LEFT) {
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.h b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
index 072599c37f..93ff9eea8f 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.h
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
@@ -40,8 +40,8 @@ public:
void run() override;
- void OnMouseDown(int button, int32 mx, int32 my);
- void OnMouseUp(int button);
+ void onMouseDown(int button, int32 mx, int32 my);
+ void onMouseUp(int button);
void resetIdleTime() {
_idleTime = 0;
Commit: bfb32aaeb3c79f379de4be282d4c57b0a3baffc3
https://github.com/scummvm/scummvm/commit/bfb32aaeb3c79f379de4be282d4c57b0a3baffc3
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-05-11T18:13:02+09:00
Commit Message:
ULTIMA8: Add basic avatar keyboard movement
This is currently not very useful, but can be improved from here, and will help
with crusader support.
Changed paths:
engines/ultima/ultima8/meta_engine.cpp
engines/ultima/ultima8/meta_engine.h
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
engines/ultima/ultima8/world/actors/avatar_mover_process.h
diff --git a/engines/ultima/ultima8/meta_engine.cpp b/engines/ultima/ultima8/meta_engine.cpp
index 059168942c..86b57ade63 100644
--- a/engines/ultima/ultima8/meta_engine.cpp
+++ b/engines/ultima/ultima8/meta_engine.cpp
@@ -56,6 +56,10 @@ static const KeybindingRecord KEYS[] = {
"GameMapGump::toggleHighlightItems", "TAB", nullptr },
{ ACTION_TOGGLE_TOUCHING, "TOUCHING", "Show Touching Items", "GUIApp::toggleShowTouchingItems", nullptr, "h", nullptr },
{ ACTION_JUMP, "JUMP", "Jump (fake both-button-click)", "AvatarMoverProcess::setFakeBothButtonClick", nullptr, "SPACE", nullptr },
+ { ACTION_TURN_LEFT, "TURN_LEFT", "Turn Left", "AvatarMoverProcess::turnLeft", nullptr, "LEFT", nullptr },
+ { ACTION_TURN_RIGHT, "TURN_RIGHT", "Turn Right", "AvatarMoverProcess::turnRight", nullptr, "RIGHT", nullptr },
+ { ACTION_MOVE_FORWARD, "MOVE_FORWARD", "Move Forward", "AvatarMoverProcess::moveForward", nullptr, "UP", nullptr },
+ { ACTION_MOVE_BACK, "MOVE_BACK", "Move Back", "AvatarMoverProcess::moveBack", nullptr, "DOWN", nullptr },
{ ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
@@ -67,10 +71,10 @@ static const KeybindingRecord CHEAT_KEYS[] = {
{ ACTION_INC_SORT_ORDER, "INC_SORT_ORDER", "Increment Map Sort Order", "GameMapGump::incrementSortOrder", nullptr, "RIGHTBRACKET", nullptr },
{ ACTION_ASCEND, "ASCEND", "Ascend", "QuickAvatarMoverProcess::startAscend", "QuickAvatarMoverProcess::stopAscend", "HOME", nullptr },
{ ACTION_DESCEND, "DESCEND", "Descend", "QuickAvatarMoverProcess::startDescend", "QuickAvatarMoverProcess::stopDescend", "END", nullptr },
- { ACTION_MOVE_UP, "MOVE_UP", "Move Up", "QuickAvatarMoverProcess::startMoveUp", "QuickAvatarMoverProcess::stopMoveUp", "UP", nullptr },
- { ACTION_MOVE_DOWN, "MOVE_DOWN", "Move Down", "QuickAvatarMoverProcess::startMoveDown", "QuickAvatarMoverProcess::stopMoveDown", "DOWN", nullptr },
- { ACTION_MOVE_LEFT, "MOVE_LEFT", "Move Left", "QuickAvatarMoverProcess::startMoveLeft", "QuickAvatarMoverProcess::stopMoveLeft", "LEFT", nullptr },
- { ACTION_RIGHT, "MOVE_RIGHT", "Move Right", "QuickAvatarMoverProcess::startMoveRight", "QuickAvatarMoverProcess::stopMoveRight", "RIGHT", nullptr },
+ { ACTION_MOVE_UP, "MOVE_UP", "Move Up", "QuickAvatarMoverProcess::startMoveUp", "QuickAvatarMoverProcess::stopMoveUp", "A+UP", nullptr },
+ { ACTION_MOVE_DOWN, "MOVE_DOWN", "Move Down", "QuickAvatarMoverProcess::startMoveDown", "QuickAvatarMoverProcess::stopMoveDown", "A+DOWN", nullptr },
+ { ACTION_MOVE_LEFT, "MOVE_LEFT", "Move Left", "QuickAvatarMoverProcess::startMoveLeft", "QuickAvatarMoverProcess::stopMoveLeft", "A+LEFT", nullptr },
+ { ACTION_MOVE_RIGHT, "MOVE_RIGHT", "Move Right", "QuickAvatarMoverProcess::startMoveRight", "QuickAvatarMoverProcess::stopMoveRight", "A+RIGHT", nullptr },
{ ACTION_NONE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
};
diff --git a/engines/ultima/ultima8/meta_engine.h b/engines/ultima/ultima8/meta_engine.h
index d3e6077d60..0bd0344d58 100644
--- a/engines/ultima/ultima8/meta_engine.h
+++ b/engines/ultima/ultima8/meta_engine.h
@@ -32,9 +32,10 @@ enum KeybindingAction {
ACTION_QUICKSAVE, ACTION_SAVE, ACTION_LOAD, ACTION_BEDROLL, ACTION_COMBAT, ACTION_BACKPACK,
ACTION_KEYRING, ACTION_MINIMAP, ACTION_RECALL, ACTION_INVENTORY, ACTION_MENU,
ACTION_CLOSE_GUMPS, ACTION_HIGHLIGHT_ITEMS, ACTION_TOGGLE_TOUCHING, ACTION_JUMP,
+ ACTION_TURN_LEFT, ACTION_TURN_RIGHT, ACTION_MOVE_FORWARD, ACTION_MOVE_BACK,
ACTION_CHEAT_MODE, ACTION_CLIPPING, ACTION_DEC_SORT_ORDER, ACTION_INC_SORT_ORDER, ACTION_ASCEND,
- ACTION_DESCEND, ACTION_MOVE_UP, ACTION_MOVE_DOWN, ACTION_MOVE_LEFT, ACTION_RIGHT,
+ ACTION_DESCEND, ACTION_MOVE_UP, ACTION_MOVE_DOWN, ACTION_MOVE_LEFT, ACTION_MOVE_RIGHT,
#ifndef RELEASE_BUILD
ACTION_TOGGLE_PAINT, ACTION_ENGINE_STATS, ACTION_FRAME_BY_FRAME,
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 1ea5678f83..c0ae25016d 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -81,7 +81,12 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("Ultima8Engine::togglePaintEditorItems", WRAP_METHOD(Debugger, cmdTogglePaintEditorItems));
registerCmd("Ultima8Engine::toggleShowTouchingItems", WRAP_METHOD(Debugger, cmdToggleShowTouchingItems));
registerCmd("Ultima8Engine::closeItemGumps", WRAP_METHOD(Debugger, cmdCloseItemGumps));
+
registerCmd("AvatarMoverProcess::setFakeBothButtonClick", WRAP_METHOD(Debugger, cmdBothButtonClick));
+ registerCmd("AvatarMoverProcess::turnLeft", WRAP_METHOD(Debugger, cmdTurnLeft));
+ registerCmd("AvatarMoverProcess::turnRight", WRAP_METHOD(Debugger, cmdTurnRight));
+ registerCmd("AvatarMoverProcess::moveForward", WRAP_METHOD(Debugger, cmdMoveForward));
+ registerCmd("AvatarMoverProcess::moveBack", WRAP_METHOD(Debugger, cmdMoveBack));
registerCmd("AudioProcess::listSFX", WRAP_METHOD(Debugger, cmdListSFX));
registerCmd("AudioProcess::playSFX", WRAP_METHOD(Debugger, cmdPlaySFX));
@@ -1106,6 +1111,58 @@ bool Debugger::cmdBothButtonClick(int argc, const char **argv) {
return false;
}
+bool Debugger::cmdTurnLeft(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't turn left: avatarInStasis\n");
+ return false;
+ }
+ AvatarMoverProcess *proc = Ultima8Engine::get_instance()->getAvatarMoverProcess();
+
+ if (proc) {
+ proc->tryTurnLeft();
+ }
+ return false;
+}
+
+bool Debugger::cmdTurnRight(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't turn right: avatarInStasis\n");
+ return false;
+ }
+ AvatarMoverProcess *proc = Ultima8Engine::get_instance()->getAvatarMoverProcess();
+
+ if (proc) {
+ proc->tryTurnRight();
+ }
+ return false;
+}
+
+bool Debugger::cmdMoveForward(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't move forward: avatarInStasis\n");
+ return false;
+ }
+ AvatarMoverProcess *proc = Ultima8Engine::get_instance()->getAvatarMoverProcess();
+
+ if (proc) {
+ proc->tryMoveForward();
+ }
+ return false;
+}
+
+bool Debugger::cmdMoveBack(int argc, const char **argv) {
+ if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
+ debugPrintf("Can't move back: avatarInStasis\n");
+ return false;
+ }
+ AvatarMoverProcess *proc = Ultima8Engine::get_instance()->getAvatarMoverProcess();
+
+ if (proc) {
+ proc->tryMoveBack();
+ }
+ return false;
+}
+
bool Debugger::cmdToggleCombat(int argc, const char **argv) {
if (Ultima8Engine::get_instance()->isAvatarInStasis()) {
debugPrintf("Can't toggle combat: avatarInStasis\n");
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index 77d74ea45f..7fe9726130 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -151,7 +151,13 @@ private:
bool cmdToggleShowTouchingItems(int argc, const char **argv);
bool cmdCloseItemGumps(int argc, const char **argv);
bool cmdMemberVar(int argc, const char **argv);
+
+ // Avatar mover
bool cmdBothButtonClick(int argc, const char **argv);
+ bool cmdTurnLeft(int argc, const char **argv);
+ bool cmdTurnRight(int argc, const char **argv);
+ bool cmdMoveForward(int argc, const char **argv);
+ bool cmdMoveBack(int argc, const char **argv);
// Audio Process
bool cmdListSFX(int argc, const char **argv);
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
index cc37f1b26d..18e71e963e 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
@@ -669,6 +669,42 @@ void AvatarMoverProcess::jump(Animation::Sequence action, int direction) {
}
}
+void AvatarMoverProcess::tryTurnLeft() {
+ const MainActor *avatar = getMainActor();
+ int curdir = avatar->getDir();
+ Animation::Sequence action = avatar->getLastAnim();
+ bool moving = (action == Animation::run || action == Animation::walk);
+ checkTurn((curdir - 1 + 8) % 8, moving);
+}
+
+void AvatarMoverProcess::tryTurnRight() {
+ const MainActor *avatar = getMainActor();
+ int curdir = avatar->getDir();
+ Animation::Sequence action = avatar->getLastAnim();
+ bool moving = (action == Animation::run || action == Animation::walk);
+ checkTurn((curdir + 1) % 8, moving);
+}
+
+void AvatarMoverProcess::tryMoveForward() {
+ const MainActor *avatar = getMainActor();
+ int curdir = avatar->getDir();
+ Animation::Sequence action = avatar->getLastAnim();
+ bool moving = (action == Animation::run || action == Animation::walk);
+ if (moving)
+ return;
+ step(Animation::step, curdir, false);
+}
+
+void AvatarMoverProcess::tryMoveBack() {
+ const MainActor *avatar = getMainActor();
+ int curdir = avatar->getDir();
+ Animation::Sequence action = avatar->getLastAnim();
+ bool moving = (action == Animation::run || action == Animation::walk);
+ if (moving)
+ return;
+ step(Animation::step, (curdir + 4) % 8, false);
+}
+
void AvatarMoverProcess::turnToDirection(int direction) {
MainActor *avatar = getMainActor();
bool combatRun = avatar->hasActorFlags(Actor::ACT_COMBATRUN);
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.h b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
index 93ff9eea8f..d4e330bcc1 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.h
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
@@ -53,6 +53,11 @@ public:
_fakeBothButtonClick = true;
}
+ void tryTurnLeft();
+ void tryTurnRight();
+ void tryMoveForward();
+ void tryMoveBack();
+
private:
void saveData(Common::WriteStream *ws) override;
More information about the Scummvm-git-logs
mailing list