[Scummvm-git-logs] scummvm master -> d8552b1c323dd528b3ebffe6469fe59b1e420782

OMGPizzaGuy 48367439+OMGPizzaGuy at users.noreply.github.com
Sat Nov 13 15:46:17 UTC 2021


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:
d8552b1c32 ULTIMA8: remove "enterTextMode" as it was only used to track modal gumps outside normal means


Commit: d8552b1c323dd528b3ebffe6469fe59b1e420782
    https://github.com/scummvm/scummvm/commit/d8552b1c323dd528b3ebffe6469fe59b1e420782
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2021-11-13T09:45:56-06:00

Commit Message:
ULTIMA8: remove "enterTextMode" as it was only used to track modal gumps outside normal means

Changed paths:
    engines/ultima/ultima8/gumps/menu_gump.cpp
    engines/ultima/ultima8/gumps/modal_gump.cpp
    engines/ultima/ultima8/ultima8.cpp
    engines/ultima/ultima8/ultima8.h
    engines/ultima/ultima8/world/actors/avatar_mover_process.h


diff --git a/engines/ultima/ultima8/gumps/menu_gump.cpp b/engines/ultima/ultima8/gumps/menu_gump.cpp
index ac29c78c9d..35dc6e4939 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/menu_gump.cpp
@@ -257,18 +257,13 @@ bool MenuGump::OnTextInput(int unicode) {
 
 //static
 void MenuGump::showMenu() {
-	Gump *gump = Ultima8Engine::get_instance()->getMenuGump();
-
-	if (gump) {
-		gump->Close();
-	} else {
-		if (GAME_IS_U8)
-			gump = new MenuGump();
-		else
-			gump = new CruMenuGump();
-		gump->InitGump(0);
-		gump->setRelativePosition(CENTER);
-	}
+	ModalGump *gump;
+	if (GAME_IS_U8)
+		gump = new MenuGump();
+	else
+		gump = new CruMenuGump();
+	gump->InitGump(0);
+	gump->setRelativePosition(CENTER);
 }
 
 //static
diff --git a/engines/ultima/ultima8/gumps/modal_gump.cpp b/engines/ultima/ultima8/gumps/modal_gump.cpp
index 3d4ad8b020..ae7bb5e2bd 100644
--- a/engines/ultima/ultima8/gumps/modal_gump.cpp
+++ b/engines/ultima/ultima8/gumps/modal_gump.cpp
@@ -48,9 +48,6 @@ ModalGump::~ModalGump() {
 void ModalGump::InitGump(Gump *newparent, bool take_focus) {
 	Gump::InitGump(newparent, take_focus);
 
-	// lock keyboard
-	Ultima8Engine::get_instance()->enterTextMode(this);
-
 	Kernel::get_instance()->pause();
 
 	AudioProcess *ap = AudioProcess::get_instance();
@@ -76,9 +73,6 @@ uint16 ModalGump::TraceObjId(int32 mx, int32 my) {
 }
 
 void ModalGump::Close(bool no_del) {
-	// free keyboard
-	Ultima8Engine::get_instance()->leaveTextMode(this);
-
 	Kernel::get_instance()->unpause();
 
 	AudioProcess *ap = AudioProcess::get_instance();
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 1ac5c63490..83b5d136db 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -462,8 +462,6 @@ void Ultima8Engine::shutdownGame(bool reloading) {
 
 	// Save config here....
 
-	_textModes.clear();
-
 	// reset mouse cursor
 	_mouse->popAllCursors();
 	_mouse->pushMouseCursor();
@@ -728,30 +726,10 @@ void Ultima8Engine::changeVideoMode(int width, int height) {
 	GraphicSysInit();
 }
 
-void Ultima8Engine::enterTextMode(Gump *gump) {
-	if (!_textModes.empty()) {
-		_textModes.remove(gump->getObjId());
-	}
-	_textModes.push_front(gump->getObjId());
-
-	_avatarMoverProcess->clearMovementFlag(AvatarMoverProcess::MOVE_ANY_DIRECTION);
-	_avatarMoverProcess->clearMovementFlag(AvatarMoverProcess::MOVE_JUMP);
-}
-
-void Ultima8Engine::leaveTextMode(Gump *gump) {
-	if (!_textModes.empty())
-		_textModes.remove(gump->getObjId());
-}
-
 void Ultima8Engine::handleEvent(const Common::Event &event) {
-	// Text mode input. A few hacks here
-	Gump *gump = nullptr;
-	while (!_textModes.empty()) {
-		gump = dynamic_cast<Gump *>(_objectManager->getObject(_textModes.front()));
-		if (gump)
-			break;
-
-		_textModes.pop_front();
+	Gump *gump = _desktopGump->FindGump<ModalGump>();
+	if (gump) {
+		_avatarMoverProcess->resetMovementFlags();
 	}
 
 	Common::Keymapper *const keymapper = _eventMan->getKeymapper();
@@ -1115,8 +1093,6 @@ void Ultima8Engine::resetEngine() {
 	_gameMapGump = nullptr;
 	_inverterGump = nullptr;
 
-	_textModes.clear();
-
 	// reset mouse cursor
 	_mouse->popAllCursors();
 	_mouse->pushMouseCursor();
@@ -1698,12 +1674,5 @@ void Ultima8Engine::showSplashScreen() {
 	_events->pollEvent(event);
 }
 
-Gump *Ultima8Engine::getMenuGump() const {
-	if (_textModes.empty())
-		return nullptr;
-
-	return dynamic_cast<Gump *>(_objectManager->getObject(_textModes.front()));
-}
-
 } // End of namespace Ultima8
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima8/ultima8.h b/engines/ultima/ultima8/ultima8.h
index bb2b4d1b50..c2c6640206 100644
--- a/engines/ultima/ultima8/ultima8.h
+++ b/engines/ultima/ultima8/ultima8.h
@@ -74,7 +74,6 @@ private:
 
 	static Ultima8Engine *_instance;
 
-	Std::list<ObjId> _textModes;      //!< Gumps that want text mode
 	bool _fontOverride;
 	bool _fontAntialiasing;
 	// Audio Mixer
@@ -351,12 +350,6 @@ public:
 	//! \return true if succesful.
 	bool newGame(int saveSlot = -1);
 
-	//! Enter gump text mode (aka Unicode keyhandling)
-	void enterTextMode(Gump *);
-
-	//! Leave gump text mode (aka Unicode keyhandling)
-	void leaveTextMode(Gump *);
-
 	//! Display an error message box
 	//! \param message The message to display on the box
 	void Error(Std::string message, Std::string title = Std::string());
@@ -383,8 +376,6 @@ public:
 	void makeCheater() {
 		_hasCheated = true;
 	}
-	Gump *getMenuGump() const;
-
 	bool isInterpolationEnabled() const {
 		return _interpolate;
 	}
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.h b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
index 995c739332..7f31a88dd3 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.h
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.h
@@ -57,7 +57,9 @@ public:
 	virtual void clearMovementFlag(uint32 mask) {
 		_movementFlags &= ~mask;
 	}
-
+	void resetMovementFlags() {
+		_movementFlags = 0;
+	}
 	void onMouseDown(int button, int32 mx, int32 my);
 	void onMouseUp(int button);
 




More information about the Scummvm-git-logs mailing list