[Scummvm-git-logs] scummvm master -> bfe85cdacdaf1cf03f1b7700ae5a9bb6f7eec498
OMGPizzaGuy
noreply at scummvm.org
Thu Jan 5 04:18:17 UTC 2023
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:
8d8f839253 ULTIMA8: Remove dependency on Shared::Debugger
d280efb7e4 ULTIMA8: Remove dependency on Shared::EventsManager
bfe85cdacd ULTIMA8: Remove dependency on Shared::UltimaEngine
Commit: 8d8f839253e2fffcff0d1bff598ac259cebc4a50
https://github.com/scummvm/scummvm/commit/8d8f839253e2fffcff0d1bff598ac259cebc4a50
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2023-01-04T22:18:11-06:00
Commit Message:
ULTIMA8: Remove dependency on Shared::Debugger
Changed paths:
engines/ultima/ultima8/misc/debugger.cpp
engines/ultima/ultima8/misc/debugger.h
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 40f49d4ab31..63e7c7a6b96 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -63,7 +63,7 @@ namespace Ultima8 {
Debugger *g_debugger;
-Debugger::Debugger() : Shared::Debugger() {
+Debugger::Debugger() : GUI::Debugger() {
g_debugger = this;
// WARNING: Not only can the methods below be executed directly in the debugger,
diff --git a/engines/ultima/ultima8/misc/debugger.h b/engines/ultima/ultima8/misc/debugger.h
index 2ac0436c048..bf268e58a52 100644
--- a/engines/ultima/ultima8/misc/debugger.h
+++ b/engines/ultima/ultima8/misc/debugger.h
@@ -23,10 +23,10 @@
#define ULTIMA_ULTIMA8_ENGINE_DEBUGGER_H
#include "ultima/ultima8/misc/common_types.h"
-#include "ultima/shared/engine/debugger.h"
#include "ultima/shared/std/containers.h"
#include "common/debug.h"
#include "common/stream.h"
+#include "gui/debugger.h"
namespace Ultima {
namespace Ultima8 {
@@ -34,7 +34,7 @@ namespace Ultima8 {
/**
* Debugger base class
*/
-class Debugger : public Shared::Debugger {
+class Debugger : public GUI::Debugger {
private:
const char *strBool(bool flag) {
return flag ? "true" : "false";
Commit: d280efb7e410febbe46b8b2d6f8f0517dc0fc6ae
https://github.com/scummvm/scummvm/commit/d280efb7e410febbe46b8b2d6f8f0517dc0fc6ae
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2023-01-04T22:18:11-06:00
Commit Message:
ULTIMA8: Remove dependency on Shared::EventsManager
Changed paths:
engines/ultima/nuvie/nuvie.h
engines/ultima/shared/early/ultima_early.h
engines/ultima/shared/engine/ultima.cpp
engines/ultima/shared/engine/ultima.h
engines/ultima/ultima8/gumps/container_gump.cpp
engines/ultima/ultima8/gumps/credits_gump.cpp
engines/ultima/ultima8/gumps/difficulty_gump.cpp
engines/ultima/ultima8/gumps/game_map_gump.cpp
engines/ultima/ultima8/gumps/keypad_gump.cpp
engines/ultima/ultima8/gumps/mini_stats_gump.cpp
engines/ultima/ultima8/gumps/minimap_gump.cpp
engines/ultima/ultima8/gumps/paged_gump.cpp
engines/ultima/ultima8/gumps/u8_save_gump.cpp
engines/ultima/ultima8/gumps/widgets/button_widget.cpp
engines/ultima/ultima8/kernel/mouse.cpp
engines/ultima/ultima8/kernel/mouse.h
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/ultima8.h
engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
diff --git a/engines/ultima/nuvie/nuvie.h b/engines/ultima/nuvie/nuvie.h
index 748e8132e2b..5cfc2657a8e 100644
--- a/engines/ultima/nuvie/nuvie.h
+++ b/engines/ultima/nuvie/nuvie.h
@@ -22,6 +22,7 @@
#ifndef NUVIE_NUVIE_H
#define NUVIE_NUVIE_H
+#include "ultima/shared/engine/events.h"
#include "ultima/shared/engine/ultima.h"
#include "ultima/shared/std/string.h"
#include "ultima/nuvie/conf/configuration.h"
@@ -39,7 +40,7 @@ class Screen;
class Script;
class SoundManager;
-class NuvieEngine : public Ultima::Shared::UltimaEngine {
+class NuvieEngine : public Ultima::Shared::UltimaEngine, public Ultima::Shared::EventsCallback {
private:
Configuration *_config;
Screen *_screen;
@@ -48,6 +49,7 @@ private:
SaveGame *_savegame;
SoundManager *_soundManager;
+ Ultima::Shared::EventsManager *_events;
private:
void initConfig();
void assignGameConfigValues(uint8 game_type);
diff --git a/engines/ultima/shared/early/ultima_early.h b/engines/ultima/shared/early/ultima_early.h
index c926119fcd0..49a17b44555 100644
--- a/engines/ultima/shared/early/ultima_early.h
+++ b/engines/ultima/shared/early/ultima_early.h
@@ -34,6 +34,7 @@
#include "engines/engine.h"
#include "ultima/detection.h"
+#include "ultima/shared/engine/events.h"
#include "ultima/shared/engine/ultima.h"
namespace Ultima {
@@ -65,7 +66,7 @@ namespace Gfx {
class Screen;
}
-class UltimaEarlyEngine : public UltimaEngine {
+class UltimaEarlyEngine : public UltimaEngine, public EventsCallback {
private:
/**
* Initialize the engine
@@ -86,6 +87,7 @@ public:
GameBase *_game;
MouseCursor *_mouseCursor;
Gfx::Screen *_screen;
+ EventsManager *_events;
public:
UltimaEarlyEngine(OSystem *syst, const UltimaGameDescription *gameDesc);
~UltimaEarlyEngine() override;
diff --git a/engines/ultima/shared/engine/ultima.cpp b/engines/ultima/shared/engine/ultima.cpp
index dce15cf0b69..df0f66bd857 100644
--- a/engines/ultima/shared/engine/ultima.cpp
+++ b/engines/ultima/shared/engine/ultima.cpp
@@ -36,7 +36,7 @@ UltimaEngine * g_ultima;
UltimaEngine::UltimaEngine(OSystem *syst, const Ultima::UltimaGameDescription *gameDesc) :
Engine(syst), _gameDescription(gameDesc), _randomSource("Ultima"),
- _dataArchive(nullptr), _events(nullptr) {
+ _dataArchive(nullptr) {
g_ultima = this;
}
diff --git a/engines/ultima/shared/engine/ultima.h b/engines/ultima/shared/engine/ultima.h
index 86dc41a59d5..57365e4c68b 100644
--- a/engines/ultima/shared/engine/ultima.h
+++ b/engines/ultima/shared/engine/ultima.h
@@ -23,8 +23,6 @@
#define ULTIMA_SHARED_ENGINE_ULTIMA_H
#include "ultima/detection.h"
-#include "ultima/shared/engine/debugger.h"
-#include "ultima/shared/engine/events.h"
#include "common/archive.h"
#include "common/random.h"
#include "engines/engine.h"
@@ -32,7 +30,7 @@
namespace Ultima {
namespace Shared {
-class UltimaEngine : public Engine, public EventsCallback {
+class UltimaEngine : public Engine {
private:
Common::RandomSource _randomSource;
protected:
@@ -56,8 +54,6 @@ protected:
return false;
}
-public:
- EventsManager *_events;
public:
UltimaEngine(OSystem *syst, const Ultima::UltimaGameDescription *gameDesc);
~UltimaEngine() override;
diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index 33a2000341f..a21e6e19df1 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -302,14 +302,14 @@ Gump *ContainerGump::onMouseDown(int button, int32 mx, int32 my) {
if (handled) return handled;
// only interested in left clicks
- if (button == Shared::BUTTON_LEFT)
+ if (button == Mouse::BUTTON_LEFT)
return this;
return nullptr;
}
void ContainerGump::onMouseClick(int button, int32 mx, int32 my) {
- if (button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_LEFT) {
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
@@ -326,7 +326,7 @@ void ContainerGump::onMouseClick(int button, int32 mx, int32 my) {
}
void ContainerGump::onMouseDouble(int button, int32 mx, int32 my) {
- if (button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_LEFT) {
uint16 objID = TraceObjId(mx, my);
if (objID == getObjId()) {
diff --git a/engines/ultima/ultima8/gumps/credits_gump.cpp b/engines/ultima/ultima8/gumps/credits_gump.cpp
index 90ada5e69ee..3ba34c23e9f 100644
--- a/engines/ultima/ultima8/gumps/credits_gump.cpp
+++ b/engines/ultima/ultima8/gumps/credits_gump.cpp
@@ -20,6 +20,7 @@
*/
#include "common/config-manager.h"
+#include "common/events.h"
#include "ultima/ultima8/gumps/credits_gump.h"
diff --git a/engines/ultima/ultima8/gumps/difficulty_gump.cpp b/engines/ultima/ultima8/gumps/difficulty_gump.cpp
index 9d11a5bd784..ab5a31e50a0 100644
--- a/engines/ultima/ultima8/gumps/difficulty_gump.cpp
+++ b/engines/ultima/ultima8/gumps/difficulty_gump.cpp
@@ -141,7 +141,7 @@ void DifficultyGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scal
}
void DifficultyGump::onMouseClick(int button, int32 mx, int32 my) {
- if (button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_LEFT) {
Gump *gump = FindGump(mx, my);
if (gump && gump->GetIndex() > 0) {
int idx = gump->GetIndex();
diff --git a/engines/ultima/ultima8/gumps/game_map_gump.cpp b/engines/ultima/ultima8/gumps/game_map_gump.cpp
index 667cdd48a51..100b9b33cdf 100644
--- a/engines/ultima/ultima8/gumps/game_map_gump.cpp
+++ b/engines/ultima/ultima8/gumps/game_map_gump.cpp
@@ -271,12 +271,12 @@ Gump *GameMapGump::onMouseDown(int button, int32 mx, int32 my) {
GumpToScreenSpace(sx, sy);
AvatarMoverProcess *amp = Ultima8Engine::get_instance()->getAvatarMoverProcess();
- if (button == Shared::BUTTON_RIGHT || button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_RIGHT || button == Mouse::BUTTON_LEFT) {
amp->onMouseDown(button, sx, sy);
}
- if (button == Shared::BUTTON_LEFT || button == Shared::BUTTON_RIGHT ||
- button == Shared::BUTTON_MIDDLE) {
+ if (button == Mouse::BUTTON_LEFT || button == Mouse::BUTTON_RIGHT ||
+ button == Mouse::BUTTON_MIDDLE) {
// we take all clicks
return this;
}
@@ -286,7 +286,7 @@ Gump *GameMapGump::onMouseDown(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) {
+ if (button == Mouse::BUTTON_RIGHT || button == Mouse::BUTTON_LEFT) {
amp->onMouseUp(button);
}
}
@@ -294,10 +294,10 @@ void GameMapGump::onMouseUp(int button, int32 mx, int32 my) {
void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
MainActor *avatar = getMainActor();
switch (button) {
- case Shared::BUTTON_LEFT: {
+ case Mouse::BUTTON_LEFT: {
if (avatar->isInCombat()) break;
- if (Mouse::get_instance()->isMouseDownEvent(Shared::BUTTON_RIGHT)) break;
+ if (Mouse::get_instance()->isMouseDownEvent(Mouse::BUTTON_RIGHT)) break;
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
@@ -314,7 +314,7 @@ void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
}
break;
}
- case Shared::BUTTON_MIDDLE: {
+ case Mouse::BUTTON_MIDDLE: {
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
if (item) {
@@ -359,10 +359,10 @@ void GameMapGump::onMouseClick(int button, int32 mx, int32 my) {
void GameMapGump::onMouseDouble(int button, int32 mx, int32 my) {
MainActor *avatar = getMainActor();
switch (button) {
- case Shared::BUTTON_LEFT: {
+ case Mouse::BUTTON_LEFT: {
if (avatar->isInCombat()) break;
- if (Mouse::get_instance()->isMouseDownEvent(Shared::BUTTON_RIGHT)) break;
+ if (Mouse::get_instance()->isMouseDownEvent(Mouse::BUTTON_RIGHT)) break;
uint16 objID = TraceObjId(mx, my);
Item *item = getItem(objID);
diff --git a/engines/ultima/ultima8/gumps/keypad_gump.cpp b/engines/ultima/ultima8/gumps/keypad_gump.cpp
index 87b6c2c1e69..7bf6dedf300 100644
--- a/engines/ultima/ultima8/gumps/keypad_gump.cpp
+++ b/engines/ultima/ultima8/gumps/keypad_gump.cpp
@@ -19,6 +19,8 @@
*
*/
+#include "common/events.h"
+
#include "ultima/ultima8/audio/audio_process.h"
#include "ultima/ultima8/gumps/keypad_gump.h"
#include "ultima/ultima8/games/game_data.h"
diff --git a/engines/ultima/ultima8/gumps/mini_stats_gump.cpp b/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
index a1e0add4247..f8c62fed79e 100644
--- a/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
+++ b/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
@@ -102,7 +102,7 @@ uint16 MiniStatsGump::TraceObjId(int32 mx, int32 my) {
}
Gump *MiniStatsGump::onMouseDown(int button, int32 mx, int32 my) {
- if (button == Shared::BUTTON_LEFT)
+ if (button == Mouse::BUTTON_LEFT)
return this;
return nullptr;
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 734fb1809cd..54127cf15ec 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -177,14 +177,14 @@ Gump *MiniMapGump::onMouseDown(int button, int32 mx, int32 my) {
return handled;
// only interested in left clicks
- if (button == Shared::BUTTON_LEFT)
+ if (button == Mouse::BUTTON_LEFT)
return this;
return nullptr;
}
void MiniMapGump::onMouseDouble(int button, int32 mx, int32 my) {
- if (button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_LEFT) {
HideGump();
}
}
diff --git a/engines/ultima/ultima8/gumps/paged_gump.cpp b/engines/ultima/ultima8/gumps/paged_gump.cpp
index 610e4080c39..86ea9ff7fb8 100644
--- a/engines/ultima/ultima8/gumps/paged_gump.cpp
+++ b/engines/ultima/ultima8/gumps/paged_gump.cpp
@@ -19,6 +19,8 @@
*
*/
+#include "common/events.h"
+
#include "ultima/ultima8/gumps/paged_gump.h"
#include "ultima/ultima8/games/game_data.h"
#include "ultima/ultima8/graphics/gump_shape_archive.h"
diff --git a/engines/ultima/ultima8/gumps/u8_save_gump.cpp b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
index 1981edcac62..7d41dde710f 100644
--- a/engines/ultima/ultima8/gumps/u8_save_gump.cpp
+++ b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
@@ -171,7 +171,7 @@ Gump *U8SaveGump::onMouseDown(int button, int32 mx, int32 my) {
void U8SaveGump::onMouseClick(int button, int32 mx, int32 my) {
- if (button != Shared::BUTTON_LEFT) return;
+ if (button != Mouse::BUTTON_LEFT) return;
ParentToGump(mx, my);
diff --git a/engines/ultima/ultima8/gumps/widgets/button_widget.cpp b/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
index a5296b5f0b3..d25b044efdd 100644
--- a/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
@@ -110,7 +110,7 @@ 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) {
+ if (button == Mouse::BUTTON_LEFT) {
// CHECKME: change dimensions or not?
if (!_mouseOver) {
_shape = _shapeDown;
@@ -130,7 +130,7 @@ uint16 ButtonWidget::TraceObjId(int32 mx, int32 my) {
void ButtonWidget::onMouseUp(int button, int32 mx, int32 my) {
- if (button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_LEFT) {
if (!_mouseOver) {
_shape = _shapeUp;
_frameNum = _frameNumUp;
diff --git a/engines/ultima/ultima8/kernel/mouse.cpp b/engines/ultima/ultima8/kernel/mouse.cpp
index f6c85ff4d56..33a54da0ec6 100644
--- a/engines/ultima/ultima8/kernel/mouse.cpp
+++ b/engines/ultima/ultima8/kernel/mouse.cpp
@@ -52,8 +52,8 @@ Mouse::~Mouse() {
_instance = nullptr;
}
-bool Mouse::buttonDown(Shared::MouseButton button) {
- assert(button != Shared::MOUSE_LAST);
+bool Mouse::buttonDown(MouseButton button) {
+ assert(button != MOUSE_LAST);
bool handled = false;
uint32 now = g_system->getMillis();
@@ -91,8 +91,8 @@ bool Mouse::buttonDown(Shared::MouseButton button) {
return handled;
}
-bool Mouse::buttonUp(Shared::MouseButton button) {
- assert(button != Shared::MOUSE_LAST);
+bool Mouse::buttonUp(MouseButton button) {
+ assert(button != MOUSE_LAST);
bool handled = false;
_mouseButton[button].clearState(MBS_DOWN);
@@ -112,7 +112,7 @@ bool Mouse::buttonUp(Shared::MouseButton button) {
handled = true;
}
- if (button == Shared::BUTTON_LEFT && _dragging != Mouse::DRAG_NOT) {
+ if (button == BUTTON_LEFT && _dragging != Mouse::DRAG_NOT) {
stopDragging(_mousePos.x, _mousePos.y);
handled = true;
}
@@ -126,7 +126,7 @@ void Mouse::popAllCursors() {
update();
}
-bool Mouse::isMouseDownEvent(Shared::MouseButton button) const {
+bool Mouse::isMouseDownEvent(MouseButton button) const {
return _mouseButton[button].isState(MBS_DOWN);
}
@@ -329,9 +329,9 @@ void Mouse::setMouseCoords(int mx, int my) {
}
if (_dragging == DRAG_NOT) {
- if (_mouseButton[Shared::BUTTON_LEFT].isState(MBS_DOWN)) {
- int startx = _mouseButton[Shared::BUTTON_LEFT]._downPoint.x;
- int starty = _mouseButton[Shared::BUTTON_LEFT]._downPoint.y;
+ if (_mouseButton[BUTTON_LEFT].isState(MBS_DOWN)) {
+ int startx = _mouseButton[BUTTON_LEFT]._downPoint.x;
+ int starty = _mouseButton[BUTTON_LEFT]._downPoint.y;
if (ABS(startx - mx) > 2 ||
ABS(starty - my) > 2) {
startDragging(startx, starty);
@@ -417,7 +417,7 @@ void Mouse::startDragging(int startx, int starty) {
// pause the kernel
Kernel::get_instance()->pause();
- _mouseButton[Shared::BUTTON_LEFT].setState(MBS_HANDLED);
+ _mouseButton[BUTTON_LEFT].setState(MBS_HANDLED);
if (_dragging == DRAG_INVALID) {
setMouseCursor(MOUSE_CROSS);
@@ -518,7 +518,7 @@ void Mouse::stopDragging(int mx, int my) {
}
void Mouse::handleDelayedEvents() {
- for (int button = 0; button < Shared::MOUSE_LAST; ++button) {
+ for (int button = 0; button < MOUSE_LAST; ++button) {
if (!(_mouseButton[button]._state & (MBS_HANDLED | MBS_DOWN)) &&
!_mouseButton[button].lastWithinDblClkTimeout()) {
Gump *gump = getGump(_mouseButton[button]._downGump);
diff --git a/engines/ultima/ultima8/kernel/mouse.h b/engines/ultima/ultima8/kernel/mouse.h
index 06744eec5cf..3e700756cce 100644
--- a/engines/ultima/ultima8/kernel/mouse.h
+++ b/engines/ultima/ultima8/kernel/mouse.h
@@ -24,7 +24,6 @@
#include "common/system.h"
#include "common/rect.h"
-#include "ultima/shared/engine/events.h"
#include "ultima/ultima8/misc/common_types.h"
#include "ultima/ultima8/misc/direction.h"
@@ -81,6 +80,14 @@ class Gump;
class Mouse {
public:
+ enum MouseButton {
+ BUTTON_NONE = 0,
+ BUTTON_LEFT = 1,
+ BUTTON_RIGHT = 2,
+ BUTTON_MIDDLE = 3,
+ MOUSE_LAST
+ };
+
enum MouseCursor {
MOUSE_NORMAL = 0,
MOUSE_NONE = 1,
@@ -109,7 +116,7 @@ private:
uint32 _flashingCursorTime;
// mouse input state
- MButton _mouseButton[Shared::MOUSE_LAST];
+ MButton _mouseButton[MOUSE_LAST];
uint16 _mouseOverGump;
Common::Point _mousePos;
@@ -134,12 +141,12 @@ public:
/**
* Called when a mouse button is pressed down
*/
- bool buttonDown(Shared::MouseButton button);
+ bool buttonDown(MouseButton button);
/**
* Called when a mouse ubtton is released
*/
- bool buttonUp(Shared::MouseButton button);
+ bool buttonUp(MouseButton button);
//! get mouse cursor length. 0 = short, 1 = medium, 2 = long
int getMouseLength(int mx, int my) const;
@@ -174,7 +181,7 @@ public:
//! set current mouse cursor location
void setMouseCoords(int mx, int my);
- bool isMouseDownEvent(Shared::MouseButton button) const;
+ bool isMouseDownEvent(MouseButton button) const;
//! remove all existing cursors
void popAllCursors();
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index c2de86104a5..a6fec08b2aa 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -97,6 +97,8 @@
//#define PAINT_TIMING 1
+#define GAME_FRAME_TIME 50
+
namespace Ultima {
namespace Ultima8 {
@@ -138,7 +140,6 @@ Ultima8Engine::Ultima8Engine(OSystem *syst, const Ultima::UltimaGameDescription
}
Ultima8Engine::~Ultima8Engine() {
- FORGET_OBJECT(_events);
FORGET_OBJECT(_kernel);
FORGET_OBJECT(_objectManager);
FORGET_OBJECT(_audioMixer);
@@ -176,9 +177,6 @@ bool Ultima8Engine::initialize() {
if (!Shared::UltimaEngine::initialize())
return false;
- // Set up the events manager
- _events = new Shared::EventsManager(this);
-
return true;
}
@@ -574,7 +572,7 @@ Common::Error Ultima8Engine::runGame() {
}
// get & handle all events in queue
- while (_isRunning && _events->pollEvent(event)) {
+ while (_isRunning && pollEvent(event)) {
handleEvent(event);
}
handleDelayedEvents();
@@ -781,11 +779,11 @@ void Ultima8Engine::handleEvent(const Common::Event &event) {
case Common::EVENT_LBUTTONDOWN:
case Common::EVENT_MBUTTONDOWN:
case Common::EVENT_RBUTTONDOWN: {
- Shared::MouseButton button = Shared::BUTTON_LEFT;
+ Mouse::MouseButton button = Mouse::BUTTON_LEFT;
if (event.type == Common::EVENT_RBUTTONDOWN)
- button = Shared::BUTTON_RIGHT;
+ button = Mouse::BUTTON_RIGHT;
else if (event.type == Common::EVENT_MBUTTONDOWN)
- button = Shared::BUTTON_MIDDLE;
+ button = Mouse::BUTTON_MIDDLE;
_mouse->setMouseCoords(event.mouse.x, event.mouse.y);
_mouse->buttonDown(button);
@@ -795,11 +793,11 @@ void Ultima8Engine::handleEvent(const Common::Event &event) {
case Common::EVENT_LBUTTONUP:
case Common::EVENT_MBUTTONUP:
case Common::EVENT_RBUTTONUP: {
- Shared::MouseButton button = Shared::BUTTON_LEFT;
+ Mouse::MouseButton button = Mouse::BUTTON_LEFT;
if (event.type == Common::EVENT_RBUTTONUP)
- button = Shared::BUTTON_RIGHT;
+ button = Mouse::BUTTON_RIGHT;
else if (event.type == Common::EVENT_MBUTTONUP)
- button = Shared::BUTTON_MIDDLE;
+ button = Mouse::BUTTON_MIDDLE;
_mouse->setMouseCoords(event.mouse.x, event.mouse.y);
_mouse->buttonUp(button);
@@ -1662,7 +1660,24 @@ void Ultima8Engine::showSplashScreen() {
scr->update();
// Handle a single event to get the splash screen shown
Common::Event event;
- _events->pollEvent(event);
+ pollEvent(event);
+}
+
+bool Ultima8Engine::pollEvent(Common::Event &event) {
+ uint32 timer = g_system->getMillis();
+
+ if (timer >= (_priorFrameCounterTime + GAME_FRAME_TIME)) {
+ // Time to build up next game frame
+ _priorFrameCounterTime = timer;
+
+ // Render anything pending for the screen
+ Graphics::Screen *screen = getScreen();
+ if (screen)
+ screen->update();
+ }
+
+ // Event handling
+ return g_system->getEventManager()->pollEvent(event);
}
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/ultima8.h b/engines/ultima/ultima8/ultima8.h
index f69477eb398..12cfa25d584 100644
--- a/engines/ultima/ultima8/ultima8.h
+++ b/engines/ultima/ultima8/ultima8.h
@@ -23,7 +23,9 @@
#ifndef ULTIMA8_ULTIMA8
#define ULTIMA8_ULTIMA8
+#include "common/events.h"
#include "common/stream.h"
+#include "graphics/screen.h"
#include "ultima/shared/std/containers.h"
#include "ultima/shared/engine/ultima.h"
#include "ultima/ultima8/usecode/intrinsics.h"
@@ -104,6 +106,7 @@ private:
// Timing stuff
int32 _lerpFactor; //!< Interpolation factor for this frame (0-256)
bool _inBetweenFrame; //!< Set true if we are doing an inbetween frame
+ uint32 _priorFrameCounterTime;
bool _highRes; //!< Set to true to enable larger screen size
bool _frameSkip; //!< Set to true to enable frame skipping (default false)
@@ -165,6 +168,7 @@ private:
//! \return true if detected all the fields, false if detection failed
bool getGameInfo(const istring &game, GameInfo *gameinfo);
+ bool pollEvent(Common::Event &event);
protected:
// Engine APIs
Common::Error run() override;
@@ -206,7 +210,7 @@ public:
return _screen;
}
- Graphics::Screen *getScreen() const override;
+ Graphics::Screen *getScreen() const;
Common::Error runGame();
virtual void handleEvent(const Common::Event &event);
diff --git a/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp b/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
index ecf6bb9fbc2..3223a8da291 100644
--- a/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_gravity_process.cpp
@@ -41,7 +41,7 @@ AvatarGravityProcess::AvatarGravityProcess(MainActor *avatar, int gravity)
}
void AvatarGravityProcess::run() {
- if (!Mouse::get_instance()->isMouseDownEvent(Shared::BUTTON_RIGHT)) {
+ if (!Mouse::get_instance()->isMouseDownEvent(Mouse::BUTTON_RIGHT)) {
// right mouse button not down, so fall normally
GravityProcess::run();
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
index 5c90621dcab..68618112257 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
@@ -182,11 +182,11 @@ void AvatarMoverProcess::onMouseDown(int button, int32 mx, int32 my) {
int bid = 0;
switch (button) {
- case Shared::BUTTON_LEFT: {
+ case Mouse::BUTTON_LEFT: {
bid = 0;
break;
}
- case Shared::BUTTON_RIGHT: {
+ case Mouse::BUTTON_RIGHT: {
bid = 1;
break;
}
@@ -204,9 +204,9 @@ void AvatarMoverProcess::onMouseDown(int button, int32 mx, int32 my) {
void AvatarMoverProcess::onMouseUp(int button) {
int bid = 0;
- if (button == Shared::BUTTON_LEFT) {
+ if (button == Mouse::BUTTON_LEFT) {
bid = 0;
- } else if (button == Shared::BUTTON_RIGHT) {
+ } else if (button == Mouse::BUTTON_RIGHT) {
bid = 1;
} else {
CANT_HAPPEN_MSG("invalid MouseUp passed to AvatarMoverProcess");
Commit: bfe85cdacdaf1cf03f1b7700ae5a9bb6f7eec498
https://github.com/scummvm/scummvm/commit/bfe85cdacdaf1cf03f1b7700ae5a9bb6f7eec498
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2023-01-04T22:18:11-06:00
Commit Message:
ULTIMA8: Remove dependency on Shared::UltimaEngine
Changed paths:
engines/ultima/ultima8/gumps/u8_save_gump.cpp
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/ultima8.h
diff --git a/engines/ultima/ultima8/gumps/u8_save_gump.cpp b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
index 7d41dde710f..f5ac77a0976 100644
--- a/engines/ultima/ultima8/gumps/u8_save_gump.cpp
+++ b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
@@ -312,7 +312,7 @@ Gump *U8SaveGump::showLoadSaveGump(Gump *parent, bool save) {
return nullptr;
}
- if (save && !Ultima8Engine::get_instance()->canSaveGameStateCurrently(false)) {
+ if (save && !Ultima8Engine::get_instance()->canSaveGameStateCurrently()) {
return nullptr;
}
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index a6fec08b2aa..466e3982e94 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -95,6 +95,8 @@
#include "ultima/ultima8/gumps/shape_viewer_gump.h"
#include "ultima/ultima8/meta_engine.h"
+#include "ultima/shared/engine/data_archive.h"
+
//#define PAINT_TIMING 1
#define GAME_FRAME_TIME 50
@@ -124,7 +126,7 @@ inline bool HasPreventSaveFlag(const Gump *g) { return g->hasFlags(Gump::FLAG_PR
Ultima8Engine *Ultima8Engine::_instance = nullptr;
Ultima8Engine::Ultima8Engine(OSystem *syst, const Ultima::UltimaGameDescription *gameDesc) :
- Shared::UltimaEngine(syst, gameDesc),
+ Engine(syst), _gameDescription(gameDesc), _randomSource("Ultima8"),
_isRunning(false), _gameInfo(nullptr), _fileSystem(nullptr),
_configFileMan(nullptr), _saveCount(0), _game(nullptr), _lastError(Common::kNoError),
_kernel(nullptr), _objectManager(nullptr), _mouse(nullptr), _ucMachine(nullptr),
@@ -174,8 +176,23 @@ Common::Error Ultima8Engine::run() {
bool Ultima8Engine::initialize() {
- if (!Shared::UltimaEngine::initialize())
+ Common::String folder;
+ int reqMajorVersion, reqMinorVersion;
+
+ // Call syncSoundSettings to get default volumes set
+ syncSoundSettings();
+
+ // Check if the game uses data from te ultima.dat archive
+ if (!isDataRequired(folder, reqMajorVersion, reqMinorVersion))
+ return true;
+
+ // Try and set up the data archive
+ // TODO: Refactor this to use a separate archive
+ Common::U32String errorMsg;
+ if (!Shared::UltimaDataArchive::load(folder, reqMajorVersion, reqMinorVersion, errorMsg)) {
+ GUIErrorMessage(errorMsg);
return false;
+ }
return true;
}
@@ -202,6 +219,10 @@ bool Ultima8Engine::hasFeature(EngineFeature f) const {
(f == kSupportsChangingOptionsDuringRuntime);
}
+Common::Language Ultima8Engine::getLanguage() const {
+ return _gameDescription->desc.language;
+}
+
Common::Error Ultima8Engine::startup() {
setDebugger(new Debugger());
debug(MM_INFO, "-- Initializing Pentagram --");
@@ -925,7 +946,7 @@ void Ultima8Engine::writeSaveInfo(Common::WriteStream *ws) {
_game->writeSaveInfo(ws);
}
-bool Ultima8Engine::canSaveGameStateCurrently(bool isAutosave) {
+bool Ultima8Engine::canSaveGameStateCurrently() {
// Can't save when avatar in stasis during cutscenes
if (_avatarInStasis || _cruStasis)
return false;
@@ -950,7 +971,7 @@ bool Ultima8Engine::canSaveGameStateCurrently(bool isAutosave) {
}
Common::Error Ultima8Engine::loadGameState(int slot) {
- Common::Error result = Shared::UltimaEngine::loadGameState(slot);
+ Common::Error result = Engine::loadGameState(slot);
if (result.getCode() == Common::kNoError)
ConfMan.setInt("lastSave", slot);
else
@@ -962,7 +983,7 @@ Common::Error Ultima8Engine::loadGameState(int slot) {
}
Common::Error Ultima8Engine::saveGameState(int slot, const Common::String &desc, bool isAutosave) {
- Common::Error result = Shared::UltimaEngine::saveGameState(slot, desc, isAutosave);
+ Common::Error result = Engine::saveGameState(slot, desc, isAutosave);
if (!isAutosave) {
if (result.getCode() == Common::kNoError)
@@ -1179,7 +1200,7 @@ bool Ultima8Engine::newGame(int saveSlot) {
}
void Ultima8Engine::syncSoundSettings() {
- UltimaEngine::syncSoundSettings();
+ Engine::syncSoundSettings();
// Update music volume
AudioMixer *audioMixer = AudioMixer::get_instance();
@@ -1189,7 +1210,7 @@ void Ultima8Engine::syncSoundSettings() {
}
void Ultima8Engine::applyGameSettings() {
- UltimaEngine::applyGameSettings();
+ Engine::applyGameSettings();
bool fontOverride = ConfMan.getBool("font_override");
bool fontAntialiasing = ConfMan.getBool("font_antialiasing");
diff --git a/engines/ultima/ultima8/ultima8.h b/engines/ultima/ultima8/ultima8.h
index 12cfa25d584..2a852d7d491 100644
--- a/engines/ultima/ultima8/ultima8.h
+++ b/engines/ultima/ultima8/ultima8.h
@@ -24,10 +24,10 @@
#define ULTIMA8_ULTIMA8
#include "common/events.h"
+#include "common/random.h"
#include "common/stream.h"
#include "graphics/screen.h"
#include "ultima/shared/std/containers.h"
-#include "ultima/shared/engine/ultima.h"
#include "ultima/ultima8/usecode/intrinsics.h"
#include "ultima/ultima8/misc/common_types.h"
#include "ultima/ultima8/games/game_info.h"
@@ -65,11 +65,14 @@ struct GameInfo;
#define GAME_IS_CRUSADER (GAME_IS_REMORSE || GAME_IS_REGRET)
#define GAME_IS_DEMO (Ultima8Engine::get_instance()->getGameInfo()->_ucOffVariant == GameInfo::GAME_UC_DEMO)
-class Ultima8Engine : public Shared::UltimaEngine {
+class Ultima8Engine : public Engine {
friend class Debugger;
private:
+ Common::RandomSource _randomSource;
+
bool _isRunning;
GameInfo *_gameInfo;
+ const UltimaGameDescription *_gameDescription;
// minimal system
FileSystem *_fileSystem;
@@ -131,7 +134,7 @@ private:
/**
* Does engine deinitialization
*/
- void deinitialize() override;
+ void deinitialize();
/**
* Shows the Pentagram splash screen
@@ -173,14 +176,14 @@ protected:
// Engine APIs
Common::Error run() override;
- bool initialize() override;
+ bool initialize();
void pauseEngineIntern(bool pause) override;
/**
* Returns the data archive folder and version that's required
*/
- bool isDataRequired(Common::String &folder, int &majorVersion, int &minorVersion) override;
+ bool isDataRequired(Common::String &folder, int &majorVersion, int &minorVersion);
public:
Ultima8Engine(OSystem *syst, const Ultima::UltimaGameDescription *gameDesc);
@@ -192,6 +195,8 @@ public:
bool hasFeature(EngineFeature f) const override;
+ Common::Language getLanguage() const;
+
Common::Error startup();
void shutdown();
@@ -300,6 +305,11 @@ public:
return _avatarMoverProcess;
}
+ /**
+ * Get a random number
+ */
+ uint getRandomNumber(uint maxVal) { return _randomSource.getRandomNumber(maxVal); }
+
/**
* Notifies the engine that the sound settings may have changed
*/
@@ -318,12 +328,12 @@ public:
/**
* Returns true if a savegame can be loaded
*/
- bool canLoadGameStateCurrently(bool isAutosave = false) override { return true; }
+ bool canLoadGameStateCurrently() override { return true; }
/**
* Returns true if the game can be saved
*/
- bool canSaveGameStateCurrently(bool isAutosave = false) override;
+ bool canSaveGameStateCurrently() override;
/**
* Load a game
More information about the Scummvm-git-logs
mailing list