[Scummvm-git-logs] scummvm master -> 1529ab35d190c609542a9649d62c03731785b200

dreammaster paulfgilbert at gmail.com
Sun May 3 19:56:42 UTC 2020


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
59a82b6b0c ULTIMA4: Change menu controller to use keybinding actions
d46b944134 ULTIMA4: Mouse click handling for config menus
72ff61e5e5 ULTIMA4: Move views into their own subfolder
1529ab35d1 ULTIMA4: Positioning field cleanups


Commit: 59a82b6b0ce5dd0cee959d070beb3c1d4dd1781e
    https://github.com/scummvm/scummvm/commit/59a82b6b0ce5dd0cee959d070beb3c1d4dd1781e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-03T12:49:27-07:00

Commit Message:
ULTIMA4: Change menu controller to use keybinding actions

Changed paths:
    engines/ultima/ultima4/controllers/menu_controller.cpp
    engines/ultima/ultima4/controllers/menu_controller.h
    engines/ultima/ultima4/meta_engine.cpp
    engines/ultima/ultima4/meta_engine.h


diff --git a/engines/ultima/ultima4/controllers/menu_controller.cpp b/engines/ultima/ultima4/controllers/menu_controller.cpp
index 74c7c11fb0..a7c8cef5ca 100644
--- a/engines/ultima/ultima4/controllers/menu_controller.cpp
+++ b/engines/ultima/ultima4/controllers/menu_controller.cpp
@@ -34,34 +34,38 @@ MenuController::MenuController(Menu *menu, TextView *view) :
 	this->_view = view;
 }
 
-bool MenuController::keyPressed(int key) {
-	bool handled = true;
+void MenuController::setActive() {
+	// The game controller has the keybindings enabled
+	MetaEngine::setKeybindingMode(KBMODE_MENU);
+}
+
+void MenuController::keybinder(KeybindingAction action) {
 	bool cursorOn = _view->getCursorEnabled();
 
 	if (cursorOn)
 		_view->disableCursor();
 
-	switch (key) {
-	case Common::KEYCODE_UP:
+	switch (action) {
+	case KEYBIND_UP:
 		_menu->prev();
 		break;
-	case Common::KEYCODE_DOWN:
+	case KEYBIND_DOWN:
 		_menu->next();
 		break;
-	case Common::KEYCODE_LEFT:
-	case Common::KEYCODE_RIGHT:
-	case Common::KEYCODE_RETURN: {
-		MenuEvent::Type action = MenuEvent::ACTIVATE;
-
-		if (key == Common::KEYCODE_LEFT)
-			action = MenuEvent::DECREMENT;
-		else if (key == Common::KEYCODE_RIGHT)
-			action = MenuEvent::INCREMENT;
-		_menu->activateItem(-1, action);
+	case KEYBIND_LEFT:
+	case KEYBIND_RIGHT:
+	case KEYBIND_INTERACT: {
+		MenuEvent::Type menuAction = MenuEvent::ACTIVATE;
+
+		if (action == KEYBIND_LEFT)
+			menuAction = MenuEvent::DECREMENT;
+		else if (action == KEYBIND_RIGHT)
+			menuAction = MenuEvent::INCREMENT;
+		_menu->activateItem(-1, menuAction);
+		break;
 	}
-	break;
 	default:
-		handled = _menu->activateItemByShortcut(key, MenuEvent::ACTIVATE);
+		break;
 	}
 
 	_menu->show(_view);
@@ -70,6 +74,25 @@ bool MenuController::keyPressed(int key) {
 		_view->enableCursor();
 	_view->update();
 
+	if (_menu->getClosed())
+		doneWaiting();
+}
+
+bool MenuController::keyPressed(int key) {
+	bool handled = true;
+	bool cursorOn = _view->getCursorEnabled();
+
+	if (cursorOn)
+		_view->disableCursor();
+
+	handled = _menu->activateItemByShortcut(key, MenuEvent::ACTIVATE);
+
+	_menu->show(_view);
+
+	if (cursorOn)
+		_view->enableCursor();
+	_view->update();
+
 	if (_menu->getClosed())
 		doneWaiting();
 
diff --git a/engines/ultima/ultima4/controllers/menu_controller.h b/engines/ultima/ultima4/controllers/menu_controller.h
index bdc9ce1c65..0b423d1d93 100644
--- a/engines/ultima/ultima4/controllers/menu_controller.h
+++ b/engines/ultima/ultima4/controllers/menu_controller.h
@@ -39,6 +39,17 @@ class MenuController : public WaitableController<void *> {
 public:
 	MenuController(Menu *menu, TextView *view);
 	bool keyPressed(int key) override;
+
+	/**
+	 * Called when a controller is made active
+	 */
+	void setActive() override;
+
+	/**
+	 * Handles keybinder actions
+	 */
+	void keybinder(KeybindingAction action) override;
+
 protected:
 	Menu *_menu;
 	TextView *_view;
diff --git a/engines/ultima/ultima4/meta_engine.cpp b/engines/ultima/ultima4/meta_engine.cpp
index 60c1e88a03..0801ff6ef4 100644
--- a/engines/ultima/ultima4/meta_engine.cpp
+++ b/engines/ultima/ultima4/meta_engine.cpp
@@ -138,6 +138,16 @@ static const KeybindingRecord DIRECTION_KEYS[] = {
 	{ KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr, nullptr }
 };
 
+static const KeybindingRecord MENU_KEYS[] = {
+	{ KEYBIND_INTERACT, "INTERACT", "Interact", "interact", "RETURN", nullptr },
+	{ KEYBIND_ESCAPE, "ESCAPE", "Escape", nullptr, "ESCAPE", nullptr },
+	{ KEYBIND_UP, "UP", "Up", nullptr, "UP", nullptr },
+	{ KEYBIND_DOWN, "DOWN", "Down", nullptr, "DOWN", nullptr },
+	{ KEYBIND_LEFT, "LEFT", "Left", nullptr, "LEFT", nullptr },
+	{ KEYBIND_RIGHT, "RIGHT", "Right", nullptr, "RIGHT", nullptr },
+	{ KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr, nullptr }
+};
+
 static const KeybindingRecord COMBAT_KEYS[] = {
 	{ KEYBIND_PASS, "PASS", "Pass", "pass", "SPACE", nullptr },
 	{ KEYBIND_UP, "UP", "Up", nullptr, "UP", nullptr },
@@ -171,8 +181,14 @@ static const KeysRecord DIRECTION_RECORDS[] = {
 	{ nullptr, nullptr, nullptr }
 };
 
+static const KeysRecord MENU_RECORDS[] = {
+	{ "ultima4", "Ultima IV", MENU_KEYS },
+	{ nullptr, nullptr, nullptr }
+};
+
 static const KeysRecord *MODE_RECORDS[5] = {
-	NORMAL_RECORDS, INPUT_RECORDS, DIRECTION_RECORDS, NORMAL_RECORDS
+	NORMAL_RECORDS, INPUT_RECORDS, DIRECTION_RECORDS, MENU_RECORDS,
+	NORMAL_RECORDS
 };
 
 Common::KeymapArray MetaEngine::initKeymaps(KeybindingMode mode) {
diff --git a/engines/ultima/ultima4/meta_engine.h b/engines/ultima/ultima4/meta_engine.h
index 3bdc99751a..854f366068 100644
--- a/engines/ultima/ultima4/meta_engine.h
+++ b/engines/ultima/ultima4/meta_engine.h
@@ -62,6 +62,7 @@ enum KeybindingMode {
 	KBMODE_NORMAL,		///< Keys available when normal in-game
 	KBMODE_MINIMAL,		///< Minimal list available when reading input
 	KBMODE_DIRECTION,	///< Mode for selecting direction
+	KBMODE_MENU,		///< Intro config menus
 	KBMODE_COMBAT		///< Keys when in combat mode
 };
 


Commit: d46b94413406177cdabad6484741da2774b467ea
    https://github.com/scummvm/scummvm/commit/d46b94413406177cdabad6484741da2774b467ea
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-03T12:49:27-07:00

Commit Message:
ULTIMA4: Mouse click handling for config menus

Changed paths:
    engines/ultima/ultima4/controllers/combat_controller.cpp
    engines/ultima/ultima4/controllers/menu_controller.cpp
    engines/ultima/ultima4/controllers/menu_controller.h
    engines/ultima/ultima4/game/menu.cpp
    engines/ultima/ultima4/game/menu.h
    engines/ultima/ultima4/game/textview.cpp
    engines/ultima/ultima4/game/textview.h


diff --git a/engines/ultima/ultima4/controllers/combat_controller.cpp b/engines/ultima/ultima4/controllers/combat_controller.cpp
index fcc9dc8acb..fa3d304742 100644
--- a/engines/ultima/ultima4/controllers/combat_controller.cpp
+++ b/engines/ultima/ultima4/controllers/combat_controller.cpp
@@ -130,7 +130,6 @@ void CombatController::init() {
 }
 
 void CombatController::setActive() {
-	// The game controller has the keybindings enabled
 	MetaEngine::setKeybindingMode(KBMODE_COMBAT);
 }
 
diff --git a/engines/ultima/ultima4/controllers/menu_controller.cpp b/engines/ultima/ultima4/controllers/menu_controller.cpp
index a7c8cef5ca..ae583ee4f0 100644
--- a/engines/ultima/ultima4/controllers/menu_controller.cpp
+++ b/engines/ultima/ultima4/controllers/menu_controller.cpp
@@ -35,7 +35,6 @@ MenuController::MenuController(Menu *menu, TextView *view) :
 }
 
 void MenuController::setActive() {
-	// The game controller has the keybindings enabled
 	MetaEngine::setKeybindingMode(KBMODE_MENU);
 }
 
@@ -99,5 +98,25 @@ bool MenuController::keyPressed(int key) {
 	return handled;
 }
 
+bool MenuController::mousePressed(const Common::Point &mousePos) {
+	bool cursorOn = _view->getCursorEnabled();
+
+	if (cursorOn)
+		_view->disableCursor();
+
+	_menu->activateItemAtPos(_view, mousePos);
+
+	_menu->show(_view);
+
+	if (cursorOn)
+		_view->enableCursor();
+	_view->update();
+
+	if (_menu->getClosed())
+		doneWaiting();
+
+	return true;
+}
+
 } // End of namespace Ultima4
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima4/controllers/menu_controller.h b/engines/ultima/ultima4/controllers/menu_controller.h
index 0b423d1d93..0934387972 100644
--- a/engines/ultima/ultima4/controllers/menu_controller.h
+++ b/engines/ultima/ultima4/controllers/menu_controller.h
@@ -38,7 +38,6 @@ class TextView;
 class MenuController : public WaitableController<void *> {
 public:
 	MenuController(Menu *menu, TextView *view);
-	bool keyPressed(int key) override;
 
 	/**
 	 * Called when a controller is made active
@@ -50,6 +49,15 @@ public:
 	 */
 	void keybinder(KeybindingAction action) override;
 
+	/**
+	 * Key was pressed
+	 */
+	bool keyPressed(int key) override;
+
+	/**
+	 * Mouse button was pressed
+	 */
+	bool mousePressed(const Common::Point &mousePos) override;
 protected:
 	Menu *_menu;
 	TextView *_view;
diff --git a/engines/ultima/ultima4/game/menu.cpp b/engines/ultima/ultima4/game/menu.cpp
index 25a3d34800..bdcb7bcd55 100644
--- a/engines/ultima/ultima4/game/menu.cpp
+++ b/engines/ultima/ultima4/game/menu.cpp
@@ -221,9 +221,21 @@ MenuItem *Menu::getItemById(int id) {
 	_current = getById(id);
 	if (_current != _items.end())
 		return *_current;
+
 	return nullptr;
 }
 
+void Menu::activateItemAtPos(TextView *view, const Common::Point &pt) {
+	for (Menu::MenuItemList::iterator it = begin(); it != end(); ++it) {
+		Common::Rect r = view->getTextBounds((*it)->getX(), (*it)->getY(),
+			(*it)->getText().size());
+
+		if (r.contains(pt)) {
+			activateItem((*it)->getId(), MenuEvent::ACTIVATE);
+		}
+	}
+}
+
 void Menu::activateItem(int id, MenuEvent::Type action) {
 	MenuItem *mi;
 
@@ -240,7 +252,7 @@ void Menu::activateItem(int id, MenuEvent::Type action) {
 	if (mi->getClosesMenu())
 		setClosed(true);
 
-	MenuEvent event(this, (MenuEvent::Type) action, mi);
+	MenuEvent event(this, (MenuEvent::Type)action, mi);
 	mi->activate(event);
 	setChanged();
 	notifyObservers(event);
diff --git a/engines/ultima/ultima4/game/menu.h b/engines/ultima/ultima4/game/menu.h
index 48f07816ff..6624c2cb80 100644
--- a/engines/ultima/ultima4/game/menu.h
+++ b/engines/ultima/ultima4/game/menu.h
@@ -156,6 +156,11 @@ public:
 	 */
 	MenuItem *getItemById(int id);
 
+	/**
+	 * Activates any menu item at a given position
+	 */
+	void activateItemAtPos(TextView *view, const Common::Point &pt);
+
 	/**
 	 * Activates the menu item given by 'id', using 'action' to
 	 * activate it.  If the menu item cannot be activated using
diff --git a/engines/ultima/ultima4/game/textview.cpp b/engines/ultima/ultima4/game/textview.cpp
index 845ec802eb..98e4938dc3 100644
--- a/engines/ultima/ultima4/game/textview.cpp
+++ b/engines/ultima/ultima4/game/textview.cpp
@@ -300,5 +300,14 @@ void TextView::clearOptions() {
 	_options.clear();
 }
 
+Common::Rect TextView::getTextBounds(int x, int y, int textWidth) const {
+	return Common::Rect(
+		SCALED(_x + (x * CHAR_WIDTH)),
+		SCALED(_y + (y * CHAR_HEIGHT)),
+		SCALED(_x + (x + textWidth * CHAR_WIDTH)),
+		SCALED(_y + (y + 1) * CHAR_HEIGHT)
+	);
+}
+
 } // End of namespace Ultima4
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima4/game/textview.h b/engines/ultima/ultima4/game/textview.h
index 0adcecb05b..b973790a5c 100644
--- a/engines/ultima/ultima4/game/textview.h
+++ b/engines/ultima/ultima4/game/textview.h
@@ -136,6 +136,12 @@ public:
 	 * Clear the options list
 	 */
 	void clearOptions();
+
+	/**
+	 * Returns the physical screen dimensions of text at a given
+	 * text location
+	 */
+	Common::Rect getTextBounds(int x, int y, int textWidth) const;
 };
 
 } // End of namespace Ultima4


Commit: 72ff61e5e51b9e99c7643e313372f21e92f710ec
    https://github.com/scummvm/scummvm/commit/72ff61e5e51b9e99c7643e313372f21e92f710ec
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-03T12:49:27-07:00

Commit Message:
ULTIMA4: Move views into their own subfolder

Changed paths:
  A engines/ultima/ultima4/views/imageview.cpp
  A engines/ultima/ultima4/views/imageview.h
  A engines/ultima/ultima4/views/menu.cpp
  A engines/ultima/ultima4/views/menu.h
  A engines/ultima/ultima4/views/menuitem.cpp
  A engines/ultima/ultima4/views/menuitem.h
  A engines/ultima/ultima4/views/stats.cpp
  A engines/ultima/ultima4/views/stats.h
  A engines/ultima/ultima4/views/textview.cpp
  A engines/ultima/ultima4/views/textview.h
  A engines/ultima/ultima4/views/tileview.cpp
  A engines/ultima/ultima4/views/tileview.h
  A engines/ultima/ultima4/views/view.cpp
  A engines/ultima/ultima4/views/view.h
  R engines/ultima/ultima4/game/menu.cpp
  R engines/ultima/ultima4/game/menu.h
  R engines/ultima/ultima4/game/menuitem.cpp
  R engines/ultima/ultima4/game/menuitem.h
  R engines/ultima/ultima4/game/stats.cpp
  R engines/ultima/ultima4/game/stats.h
  R engines/ultima/ultima4/game/textview.cpp
  R engines/ultima/ultima4/game/textview.h
  R engines/ultima/ultima4/game/view.cpp
  R engines/ultima/ultima4/game/view.h
  R engines/ultima/ultima4/gfx/imageview.cpp
  R engines/ultima/ultima4/gfx/imageview.h
  R engines/ultima/ultima4/map/tileview.cpp
  R engines/ultima/ultima4/map/tileview.h
    engines/ultima/module.mk
    engines/ultima/ultima4/controllers/combat_controller.cpp
    engines/ultima/ultima4/controllers/game_controller.cpp
    engines/ultima/ultima4/controllers/game_controller.h
    engines/ultima/ultima4/controllers/intro_controller.cpp
    engines/ultima/ultima4/controllers/intro_controller.h
    engines/ultima/ultima4/controllers/menu_controller.cpp
    engines/ultima/ultima4/controllers/read_string_controller.h
    engines/ultima/ultima4/controllers/reagents_menu_controller.cpp
    engines/ultima/ultima4/controllers/ztats_controller.cpp
    engines/ultima/ultima4/core/debugger.cpp
    engines/ultima/ultima4/core/debugger_actions.cpp
    engines/ultima/ultima4/events/event_handler.cpp
    engines/ultima/ultima4/filesys/savegame.cpp
    engines/ultima/ultima4/game/codex.cpp
    engines/ultima/ultima4/game/death.cpp
    engines/ultima/ultima4/game/game.cpp
    engines/ultima/ultima4/game/game.h
    engines/ultima/ultima4/game/person.cpp
    engines/ultima/ultima4/game/script.cpp
    engines/ultima/ultima4/gfx/screen.cpp
    engines/ultima/ultima4/map/dungeon.cpp
    engines/ultima/ultima4/map/dungeonview.h


diff --git a/engines/ultima/module.mk b/engines/ultima/module.mk
index 90607d2e96..c20dccc82e 100644
--- a/engines/ultima/module.mk
+++ b/engines/ultima/module.mk
@@ -178,8 +178,6 @@ MODULE_OBJS := \
 	ultima4/game/death.o \
 	ultima4/game/game.o \
 	ultima4/game/item.o \
-	ultima4/game/menu.o \
-	ultima4/game/menuitem.o \
 	ultima4/game/moongate.o \
 	ultima4/game/names.o \
 	ultima4/game/object.o \
@@ -188,9 +186,6 @@ MODULE_OBJS := \
 	ultima4/game/portal.o \
 	ultima4/game/script.o \
 	ultima4/game/spell.o \
-	ultima4/game/stats.o \
-	ultima4/game/textview.o \
-	ultima4/game/view.o \
 	ultima4/game/weapon.o \
 	ultima4/gfx/image.o \
 	ultima4/gfx/imageloader.o \
@@ -198,7 +193,6 @@ MODULE_OBJS := \
 	ultima4/gfx/imageloader_png.o \
 	ultima4/gfx/imageloader_u4.o \
 	ultima4/gfx/imagemgr.o \
-	ultima4/gfx/imageview.o \
 	ultima4/gfx/scale.o \
 	ultima4/gfx/screen.o \
 	ultima4/map/annotation.o \
@@ -217,10 +211,16 @@ MODULE_OBJS := \
 	ultima4/map/tileanim.o \
 	ultima4/map/tilemap.o \
 	ultima4/map/tileset.o \
-	ultima4/map/tileview.o \
 	ultima4/sound/music.o \
 	ultima4/sound/sound.o \
 	ultima4/sound/sound_scummvm.o \
+	ultima4/views/imageview.o \
+	ultima4/views/menu.o \
+	ultima4/views/menuitem.o \
+	ultima4/views/stats.o \
+	ultima4/views/textview.o \
+	ultima4/views/tileview.o \
+	ultima4/views/view.o \
 	ultima4/meta_engine.o \
 	ultima4/ultima4.o \
 	nuvie/meta_engine.o \
diff --git a/engines/ultima/ultima4/controllers/combat_controller.cpp b/engines/ultima/ultima4/controllers/combat_controller.cpp
index fa3d304742..8123c2fb99 100644
--- a/engines/ultima/ultima4/controllers/combat_controller.cpp
+++ b/engines/ultima/ultima4/controllers/combat_controller.cpp
@@ -44,7 +44,7 @@
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/game/portal.h"
 #include "ultima/ultima4/game/spell.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/game/weapon.h"
 #include "ultima/ultima4/gfx/screen.h"
 #include "ultima/shared/std/containers.h"
diff --git a/engines/ultima/ultima4/controllers/game_controller.cpp b/engines/ultima/ultima4/controllers/game_controller.cpp
index 79e63f3f8c..b6557d31af 100644
--- a/engines/ultima/ultima4/controllers/game_controller.cpp
+++ b/engines/ultima/ultima4/controllers/game_controller.cpp
@@ -29,7 +29,7 @@
 #include "ultima/ultima4/game/context.h"
 #include "ultima/ultima4/game/death.h"
 #include "ultima/ultima4/game/moongate.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/gfx/imagemgr.h"
 #include "ultima/ultima4/gfx/screen.h"
 #include "ultima/ultima4/map/annotation.h"
diff --git a/engines/ultima/ultima4/controllers/game_controller.h b/engines/ultima/ultima4/controllers/game_controller.h
index 12d889e465..f88b00384e 100644
--- a/engines/ultima/ultima4/controllers/game_controller.h
+++ b/engines/ultima/ultima4/controllers/game_controller.h
@@ -29,7 +29,7 @@
 #include "ultima/ultima4/game/portal.h"
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/map/location.h"
-#include "ultima/ultima4/map/tileview.h"
+#include "ultima/ultima4/views/tileview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/controllers/intro_controller.cpp b/engines/ultima/ultima4/controllers/intro_controller.cpp
index 377e905ad0..38766223da 100644
--- a/engines/ultima/ultima4/controllers/intro_controller.cpp
+++ b/engines/ultima/ultima4/controllers/intro_controller.cpp
@@ -25,7 +25,7 @@
 #include "ultima/ultima4/controllers/read_string_controller.h"
 #include "ultima/ultima4/controllers/read_choice_controller.h"
 #include "ultima/ultima4/game/player.h"
-#include "ultima/ultima4/game/menu.h"
+#include "ultima/ultima4/views/menu.h"
 #include "ultima/ultima4/core/config.h"
 #include "ultima/ultima4/core/utils.h"
 #include "ultima/ultima4/core/settings.h"
diff --git a/engines/ultima/ultima4/controllers/intro_controller.h b/engines/ultima/ultima4/controllers/intro_controller.h
index 570dbfdbdd..b133f1f55f 100644
--- a/engines/ultima/ultima4/controllers/intro_controller.h
+++ b/engines/ultima/ultima4/controllers/intro_controller.h
@@ -26,10 +26,10 @@
 #include "ultima/ultima4/controllers/controller.h"
 #include "ultima/ultima4/core/observer.h"
 #include "ultima/ultima4/filesys/savegame.h"
-#include "ultima/ultima4/game/menu.h"
-#include "ultima/ultima4/game/textview.h"
-#include "ultima/ultima4/gfx/imageview.h"
-#include "ultima/ultima4/map/tileview.h"
+#include "ultima/ultima4/views/menu.h"
+#include "ultima/ultima4/views/textview.h"
+#include "ultima/ultima4/views/imageview.h"
+#include "ultima/ultima4/views/tileview.h"
 #include "ultima/shared/core/file.h"
 
 namespace Ultima {
diff --git a/engines/ultima/ultima4/controllers/menu_controller.cpp b/engines/ultima/ultima4/controllers/menu_controller.cpp
index ae583ee4f0..ac71f99e6a 100644
--- a/engines/ultima/ultima4/controllers/menu_controller.cpp
+++ b/engines/ultima/ultima4/controllers/menu_controller.cpp
@@ -22,8 +22,8 @@
 
 #include "ultima/ultima4/controllers/menu_controller.h"
 #include "ultima/ultima4/events/event_handler.h"
-#include "ultima/ultima4/game/menu.h"
-#include "ultima/ultima4/game/textview.h"
+#include "ultima/ultima4/views/menu.h"
+#include "ultima/ultima4/views/textview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/controllers/read_string_controller.h b/engines/ultima/ultima4/controllers/read_string_controller.h
index 8e4c3c1dc0..8322102128 100644
--- a/engines/ultima/ultima4/controllers/read_string_controller.h
+++ b/engines/ultima/ultima4/controllers/read_string_controller.h
@@ -25,7 +25,7 @@
 
 #include "ultima/ultima4/controllers/controller.h"
 #include "ultima/ultima4/events/event_handler.h"
-#include "ultima/ultima4/game/textview.h"
+#include "ultima/ultima4/views/textview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/controllers/reagents_menu_controller.cpp b/engines/ultima/ultima4/controllers/reagents_menu_controller.cpp
index 8308cdbae7..2894410ba8 100644
--- a/engines/ultima/ultima4/controllers/reagents_menu_controller.cpp
+++ b/engines/ultima/ultima4/controllers/reagents_menu_controller.cpp
@@ -21,7 +21,7 @@
  */
 
 #include "ultima/ultima4/controllers/reagents_menu_controller.h"
-#include "ultima/ultima4/game/menu.h"
+#include "ultima/ultima4/views/menu.h"
 #include "ultima/ultima4/game/spell.h"
 
 namespace Ultima {
diff --git a/engines/ultima/ultima4/controllers/ztats_controller.cpp b/engines/ultima/ultima4/controllers/ztats_controller.cpp
index 9690fe979e..dd36259ce0 100644
--- a/engines/ultima/ultima4/controllers/ztats_controller.cpp
+++ b/engines/ultima/ultima4/controllers/ztats_controller.cpp
@@ -23,7 +23,7 @@
 #include "ultima/ultima4/controllers/ztats_controller.h"
 #include "ultima/ultima4/events/event_handler.h"
 #include "ultima/ultima4/game/context.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/ultima4.h"
 
 namespace Ultima {
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 56d3c2c69c..eb51c3e034 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -34,7 +34,7 @@
 #include "ultima/ultima4/game/moongate.h"
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/game/portal.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/game/weapon.h"
 #include "ultima/ultima4/gfx/screen.h"
 #include "ultima/ultima4/map/annotation.h"
diff --git a/engines/ultima/ultima4/core/debugger_actions.cpp b/engines/ultima/ultima4/core/debugger_actions.cpp
index db680957ab..b2cfa2d1cd 100644
--- a/engines/ultima/ultima4/core/debugger_actions.cpp
+++ b/engines/ultima/ultima4/core/debugger_actions.cpp
@@ -30,7 +30,7 @@
 #include "ultima/ultima4/conversation/conversation.h"
 #include "ultima/ultima4/game/context.h"
 #include "ultima/ultima4/game/player.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/gfx/screen.h"
 #include "ultima/ultima4/gfx/textcolor.h"
 #include "ultima/ultima4/map/annotation.h"
diff --git a/engines/ultima/ultima4/events/event_handler.cpp b/engines/ultima/ultima4/events/event_handler.cpp
index b54931a47a..eb39397675 100644
--- a/engines/ultima/ultima4/events/event_handler.cpp
+++ b/engines/ultima/ultima4/events/event_handler.cpp
@@ -26,7 +26,7 @@
 #include "ultima/ultima4/core/utils.h"
 #include "ultima/ultima4/filesys/savegame.h"
 #include "ultima/ultima4/game/context.h"
-#include "ultima/ultima4/game/textview.h"
+#include "ultima/ultima4/views/textview.h"
 #include "ultima/ultima4/gfx/screen.h"
 #include "ultima/ultima4/map/location.h"
 #include "common/events.h"
diff --git a/engines/ultima/ultima4/filesys/savegame.cpp b/engines/ultima/ultima4/filesys/savegame.cpp
index d736342758..e7ceb2da29 100644
--- a/engines/ultima/ultima4/filesys/savegame.cpp
+++ b/engines/ultima/ultima4/filesys/savegame.cpp
@@ -28,7 +28,7 @@
 #include "ultima/ultima4/game/object.h"
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/game/spell.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/map/location.h"
 #include "ultima/ultima4/map/mapmgr.h"
 
diff --git a/engines/ultima/ultima4/game/codex.cpp b/engines/ultima/ultima4/game/codex.cpp
index 2e82d89b61..eb12942498 100644
--- a/engines/ultima/ultima4/game/codex.cpp
+++ b/engines/ultima/ultima4/game/codex.cpp
@@ -29,7 +29,7 @@
 #include "ultima/ultima4/game/names.h"
 #include "ultima/ultima4/filesys/savegame.h"
 #include "ultima/ultima4/gfx/screen.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/ultima4.h"
 #include "ultima/ultima4/filesys/u4file.h"
 #include "ultima/ultima4/core/utils.h"
diff --git a/engines/ultima/ultima4/game/death.cpp b/engines/ultima/ultima4/game/death.cpp
index 363bd3782d..3d824f89d5 100644
--- a/engines/ultima/ultima4/game/death.cpp
+++ b/engines/ultima/ultima4/game/death.cpp
@@ -25,7 +25,7 @@
 #include "ultima/ultima4/game/game.h"
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/game/portal.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/controllers/wait_controller.h"
 #include "ultima/ultima4/core/settings.h"
 #include "ultima/ultima4/events/event_handler.h"
diff --git a/engines/ultima/ultima4/game/game.cpp b/engines/ultima/ultima4/game/game.cpp
index 7e3cb19b89..bc1bf71fee 100644
--- a/engines/ultima/ultima4/game/game.cpp
+++ b/engines/ultima/ultima4/game/game.cpp
@@ -41,7 +41,7 @@
 #include "ultima/ultima4/game/context.h"
 #include "ultima/ultima4/game/death.h"
 #include "ultima/ultima4/game/item.h"
-#include "ultima/ultima4/game/menu.h"
+#include "ultima/ultima4/views/menu.h"
 #include "ultima/ultima4/game/creature.h"
 #include "ultima/ultima4/game/moongate.h"
 #include "ultima/ultima4/game/names.h"
@@ -49,7 +49,7 @@
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/game/portal.h"
 #include "ultima/ultima4/game/spell.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/game/script.h"
 #include "ultima/ultima4/game/weapon.h"
 #include "ultima/ultima4/gfx/imagemgr.h"
diff --git a/engines/ultima/ultima4/game/game.h b/engines/ultima/ultima4/game/game.h
index 1a950e7bd4..0272ac0b39 100644
--- a/engines/ultima/ultima4/game/game.h
+++ b/engines/ultima/ultima4/game/game.h
@@ -28,7 +28,7 @@
 #include "ultima/ultima4/core/observer.h"
 #include "ultima/ultima4/core/types.h"
 #include "ultima/ultima4/map/map.h"
-#include "ultima/ultima4/map/tileview.h"
+#include "ultima/ultima4/views/tileview.h"
 #include "ultima/ultima4/sound/sound.h"
 
 namespace Ultima {
diff --git a/engines/ultima/ultima4/game/person.cpp b/engines/ultima/ultima4/game/person.cpp
index 8c2ac033fc..5732a44d3e 100644
--- a/engines/ultima/ultima4/game/person.cpp
+++ b/engines/ultima/ultima4/game/person.cpp
@@ -23,7 +23,7 @@
 #include "ultima/ultima4/game/person.h"
 #include "ultima/ultima4/game/names.h"
 #include "ultima/ultima4/game/player.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/game/context.h"
 #include "ultima/ultima4/game/script.h"
 #include "ultima/ultima4/controllers/read_choice_controller.h"
diff --git a/engines/ultima/ultima4/game/script.cpp b/engines/ultima/ultima4/game/script.cpp
index 04fcfe742c..bb330b6ed3 100644
--- a/engines/ultima/ultima4/game/script.cpp
+++ b/engines/ultima/ultima4/game/script.cpp
@@ -35,7 +35,7 @@
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/game/weapon.h"
 #include "ultima/ultima4/game/spell.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/gfx/screen.h"
 #include "ultima/ultima4/map/tileset.h"
 #include "ultima/ultima4/sound/music.h"
diff --git a/engines/ultima/ultima4/gfx/screen.cpp b/engines/ultima/ultima4/gfx/screen.cpp
index 195f7c52a4..c9064bc4f7 100644
--- a/engines/ultima/ultima4/gfx/screen.cpp
+++ b/engines/ultima/ultima4/gfx/screen.cpp
@@ -37,7 +37,7 @@
 #include "ultima/ultima4/map/location.h"
 #include "ultima/ultima4/map/tileanim.h"
 #include "ultima/ultima4/map/tileset.h"
-#include "ultima/ultima4/map/tileview.h"
+#include "ultima/ultima4/views/tileview.h"
 #include "ultima/ultima4/map/annotation.h"
 #include "ultima/ultima4/ultima4.h"
 #include "common/system.h"
diff --git a/engines/ultima/ultima4/map/dungeon.cpp b/engines/ultima/ultima4/map/dungeon.cpp
index aee0c333fe..f98ab10e8f 100644
--- a/engines/ultima/ultima4/map/dungeon.cpp
+++ b/engines/ultima/ultima4/map/dungeon.cpp
@@ -30,7 +30,7 @@
 #include "ultima/ultima4/map/tilemap.h"
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/gfx/screen.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/map/tileset.h"
 #include "ultima/ultima4/core/utils.h"
 
diff --git a/engines/ultima/ultima4/map/dungeonview.h b/engines/ultima/ultima4/map/dungeonview.h
index 439605272a..c339a5cb8f 100644
--- a/engines/ultima/ultima4/map/dungeonview.h
+++ b/engines/ultima/ultima4/map/dungeonview.h
@@ -28,7 +28,7 @@
 #include "ultima/ultima4/filesys/savegame.h"
 #include "ultima/ultima4/map/tileset.h"
 #include "ultima/ultima4/map/direction.h"
-#include "ultima/ultima4/map/tileview.h"
+#include "ultima/ultima4/views/tileview.h"
 #include "ultima/ultima4/core/types.h"
 #include "ultima/ultima4/map/location.h"
 
diff --git a/engines/ultima/ultima4/gfx/imageview.cpp b/engines/ultima/ultima4/views/imageview.cpp
similarity index 97%
rename from engines/ultima/ultima4/gfx/imageview.cpp
rename to engines/ultima/ultima4/views/imageview.cpp
index 4fd5a34dbf..09ef34310d 100644
--- a/engines/ultima/ultima4/gfx/imageview.cpp
+++ b/engines/ultima/ultima4/views/imageview.cpp
@@ -22,8 +22,8 @@
 
 #include "ultima/ultima4/gfx/image.h"
 #include "ultima/ultima4/gfx/imagemgr.h"
-#include "ultima/ultima4/gfx/imageview.h"
 #include "ultima/ultima4/core/settings.h"
+#include "ultima/ultima4/views/imageview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/gfx/imageview.h b/engines/ultima/ultima4/views/imageview.h
similarity index 92%
rename from engines/ultima/ultima4/gfx/imageview.h
rename to engines/ultima/ultima4/views/imageview.h
index 9ee8faff06..acfa1d7cf9 100644
--- a/engines/ultima/ultima4/gfx/imageview.h
+++ b/engines/ultima/ultima4/views/imageview.h
@@ -20,10 +20,10 @@
  *
  */
 
-#ifndef ULTIMA4_GFX_IMAGEVIEW_H
-#define ULTIMA4_GFX_IMAGEVIEW_H
+#ifndef ULTIMA4_VIEWS_IMAGEVIEW_H
+#define ULTIMA4_VIEWS_IMAGEVIEW_H
 
-#include "ultima/ultima4/game/view.h"
+#include "ultima/ultima4/views/view.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/game/menu.cpp b/engines/ultima/ultima4/views/menu.cpp
similarity index 98%
rename from engines/ultima/ultima4/game/menu.cpp
rename to engines/ultima/ultima4/views/menu.cpp
index bdcb7bcd55..3cb03b8e04 100644
--- a/engines/ultima/ultima4/game/menu.cpp
+++ b/engines/ultima/ultima4/views/menu.cpp
@@ -20,9 +20,9 @@
  *
  */
 
-#include "ultima/ultima4/game/menu.h"
+#include "ultima/ultima4/views/menu.h"
 #include "ultima/ultima4/events/event_handler.h"
-#include "ultima/ultima4/game/textview.h"
+#include "ultima/ultima4/views/textview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/game/menu.h b/engines/ultima/ultima4/views/menu.h
similarity index 97%
rename from engines/ultima/ultima4/game/menu.h
rename to engines/ultima/ultima4/views/menu.h
index 6624c2cb80..1b7d828ec3 100644
--- a/engines/ultima/ultima4/game/menu.h
+++ b/engines/ultima/ultima4/views/menu.h
@@ -20,11 +20,11 @@
  *
  */
 
-#ifndef ULTIMA4_GAME_MENU_H
-#define ULTIMA4_GAME_MENU_H
+#ifndef ULTIMA4_VIEWS_MENU_H
+#define ULTIMA4_VIEWS_MENU_H
 
 #include "ultima/ultima4/events/event_handler.h"
-#include "ultima/ultima4/game/menuitem.h"
+#include "ultima/ultima4/views/menuitem.h"
 #include "ultima/ultima4/core/observable.h"
 #include "ultima/ultima4/core/types.h"
 #include "ultima/shared/std/containers.h"
diff --git a/engines/ultima/ultima4/game/menuitem.cpp b/engines/ultima/ultima4/views/menuitem.cpp
similarity index 98%
rename from engines/ultima/ultima4/game/menuitem.cpp
rename to engines/ultima/ultima4/views/menuitem.cpp
index a8b11d0ce1..256bd7ea14 100644
--- a/engines/ultima/ultima4/game/menuitem.cpp
+++ b/engines/ultima/ultima4/views/menuitem.cpp
@@ -20,8 +20,8 @@
  *
  */
 
-#include "ultima/ultima4/game/menu.h"
-#include "ultima/ultima4/game/menuitem.h"
+#include "ultima/ultima4/views/menu.h"
+#include "ultima/ultima4/views/menuitem.h"
 #include "ultima/ultima4/core/settings.h"
 #include "ultima/ultima4/core/utils.h"
 
diff --git a/engines/ultima/ultima4/game/menuitem.h b/engines/ultima/ultima4/views/menuitem.h
similarity index 98%
rename from engines/ultima/ultima4/game/menuitem.h
rename to engines/ultima/ultima4/views/menuitem.h
index 24227188d8..debde7885c 100644
--- a/engines/ultima/ultima4/game/menuitem.h
+++ b/engines/ultima/ultima4/views/menuitem.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef ULTIMA4_GAME_MENUITEM_H
-#define ULTIMA4_GAME_MENUITEM_H
+#ifndef ULTIMA4_VIEWS_MENUITEM_H
+#define ULTIMA4_VIEWS_MENUITEM_H
 
 #include "common/str.h"
 #include "ultima/shared/std/containers.h"
diff --git a/engines/ultima/ultima4/game/stats.cpp b/engines/ultima/ultima4/views/stats.cpp
similarity index 99%
rename from engines/ultima/ultima4/game/stats.cpp
rename to engines/ultima/ultima4/views/stats.cpp
index adc569b5fc..d9b9b25d88 100644
--- a/engines/ultima/ultima4/game/stats.cpp
+++ b/engines/ultima/ultima4/views/stats.cpp
@@ -23,10 +23,10 @@
 #include "ultima/ultima4/ultima4.h"
 #include "ultima/ultima4/core/config.h"
 #include "ultima/ultima4/core/utils.h"
-#include "ultima/ultima4/game/stats.h"
+#include "ultima/ultima4/views/stats.h"
 #include "ultima/ultima4/game/armor.h"
 #include "ultima/ultima4/game/context.h"
-#include "ultima/ultima4/game/menu.h"
+#include "ultima/ultima4/views/menu.h"
 #include "ultima/ultima4/game/names.h"
 #include "ultima/ultima4/game/player.h"
 #include "ultima/ultima4/filesys/savegame.h"
diff --git a/engines/ultima/ultima4/game/stats.h b/engines/ultima/ultima4/views/stats.h
similarity index 95%
rename from engines/ultima/ultima4/game/stats.h
rename to engines/ultima/ultima4/views/stats.h
index 4f52ef3657..3646e50a69 100644
--- a/engines/ultima/ultima4/game/stats.h
+++ b/engines/ultima/ultima4/views/stats.h
@@ -20,13 +20,13 @@
  *
  */
 
-#ifndef ULTIMA4_GAME_STATS_H
-#define ULTIMA4_GAME_STATS_H
+#ifndef ULTIMA4_VIEWS_STATS_H
+#define ULTIMA4_VIEWS_STATS_H
 
 #include "ultima/ultima4/core/observable.h"
 #include "ultima/ultima4/core/observer.h"
-#include "ultima/ultima4/game/menu.h"
-#include "ultima/ultima4/game/textview.h"
+#include "ultima/ultima4/views/menu.h"
+#include "ultima/ultima4/views/textview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/game/textview.cpp b/engines/ultima/ultima4/views/textview.cpp
similarity index 99%
rename from engines/ultima/ultima4/game/textview.cpp
rename to engines/ultima/ultima4/views/textview.cpp
index 98e4938dc3..a6ba7bb8d9 100644
--- a/engines/ultima/ultima4/game/textview.cpp
+++ b/engines/ultima/ultima4/views/textview.cpp
@@ -25,7 +25,7 @@
 #include "ultima/ultima4/gfx/imagemgr.h"
 #include "ultima/ultima4/core/settings.h"
 #include "ultima/ultima4/core/utils.h"
-#include "ultima/ultima4/game/textview.h"
+#include "ultima/ultima4/views/textview.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/game/textview.h b/engines/ultima/ultima4/views/textview.h
similarity index 97%
rename from engines/ultima/ultima4/game/textview.h
rename to engines/ultima/ultima4/views/textview.h
index b973790a5c..ea3256b4dc 100644
--- a/engines/ultima/ultima4/game/textview.h
+++ b/engines/ultima/ultima4/views/textview.h
@@ -20,10 +20,10 @@
  *
  */
 
-#ifndef ULTIMA4_GAME_TEXTVIEW_H
-#define ULTIMA4_GAME_TEXTVIEW_H
+#ifndef ULTIMA4_VIEWS_TEXTVIEW_H
+#define ULTIMA4_VIEWS_TEXTVIEW_H
 
-#include "ultima/ultima4/game/view.h"
+#include "ultima/ultima4/views/view.h"
 #include "ultima/ultima4/gfx/image.h"
 #include "common/array.h"
 #include "common/rect.h"
diff --git a/engines/ultima/ultima4/map/tileview.cpp b/engines/ultima/ultima4/views/tileview.cpp
similarity index 99%
rename from engines/ultima/ultima4/map/tileview.cpp
rename to engines/ultima/ultima4/views/tileview.cpp
index 9b37285b6f..c020c10434 100644
--- a/engines/ultima/ultima4/map/tileview.cpp
+++ b/engines/ultima/ultima4/views/tileview.cpp
@@ -29,7 +29,7 @@
 #include "ultima/ultima4/map/tile.h"
 #include "ultima/ultima4/map/tileanim.h"
 #include "ultima/ultima4/map/tileset.h"
-#include "ultima/ultima4/map/tileview.h"
+#include "ultima/ultima4/views/tileview.h"
 #include "ultima/ultima4/ultima4.h"
 
 namespace Ultima {
diff --git a/engines/ultima/ultima4/map/tileview.h b/engines/ultima/ultima4/views/tileview.h
similarity index 94%
rename from engines/ultima/ultima4/map/tileview.h
rename to engines/ultima/ultima4/views/tileview.h
index bd10943277..2c8cf946ef 100644
--- a/engines/ultima/ultima4/map/tileview.h
+++ b/engines/ultima/ultima4/views/tileview.h
@@ -20,10 +20,10 @@
  *
  */
 
-#ifndef ULTIMA4_MAP_TILEVIEW_H
-#define ULTIMA4_MAP_TILEVIEW_H
+#ifndef ULTIMA4_VIEWS_TILEVIEW_H
+#define ULTIMA4_VIEWS_TILEVIEW_H
 
-#include "ultima/ultima4/game/view.h"
+#include "ultima/ultima4/views/view.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/game/view.cpp b/engines/ultima/ultima4/views/view.cpp
similarity index 98%
rename from engines/ultima/ultima4/game/view.cpp
rename to engines/ultima/ultima4/views/view.cpp
index f798569a12..e5b73f505b 100644
--- a/engines/ultima/ultima4/game/view.cpp
+++ b/engines/ultima/ultima4/views/view.cpp
@@ -23,7 +23,7 @@
 #include "ultima/ultima4/gfx/image.h"
 #include "ultima/ultima4/gfx/imagemgr.h"
 #include "ultima/ultima4/core/settings.h"
-#include "ultima/ultima4/game/view.h"
+#include "ultima/ultima4/views/view.h"
 
 namespace Ultima {
 namespace Ultima4 {
diff --git a/engines/ultima/ultima4/game/view.h b/engines/ultima/ultima4/views/view.h
similarity index 97%
rename from engines/ultima/ultima4/game/view.h
rename to engines/ultima/ultima4/views/view.h
index 5898588ab2..7ecf05677e 100644
--- a/engines/ultima/ultima4/game/view.h
+++ b/engines/ultima/ultima4/views/view.h
@@ -20,8 +20,8 @@
  *
  */
 
-#ifndef ULTIMA4_GAME_VIEW_H
-#define ULTIMA4_GAME_VIEW_H
+#ifndef ULTIMA4_VIEWS_VIEW_H
+#define ULTIMA4_VIEWS_VIEW_H
 
 namespace Ultima {
 namespace Ultima4 {


Commit: 1529ab35d190c609542a9649d62c03731785b200
    https://github.com/scummvm/scummvm/commit/1529ab35d190c609542a9649d62c03731785b200
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-03T12:49:27-07:00

Commit Message:
ULTIMA4: Positioning field cleanups

Changed paths:
    engines/ultima/ultima4/gfx/image.h
    engines/ultima/ultima4/gfx/imagemgr.cpp
    engines/ultima/ultima4/gfx/screen.cpp
    engines/ultima/ultima4/map/dungeonview.cpp
    engines/ultima/ultima4/map/tile.cpp
    engines/ultima/ultima4/views/imageview.cpp
    engines/ultima/ultima4/views/menuitem.cpp
    engines/ultima/ultima4/views/menuitem.h
    engines/ultima/ultima4/views/textview.cpp
    engines/ultima/ultima4/views/tileview.cpp
    engines/ultima/ultima4/views/view.cpp
    engines/ultima/ultima4/views/view.h


diff --git a/engines/ultima/ultima4/gfx/image.h b/engines/ultima/ultima4/gfx/image.h
index c08552a2ed..790c801b1c 100644
--- a/engines/ultima/ultima4/gfx/image.h
+++ b/engines/ultima/ultima4/gfx/image.h
@@ -48,10 +48,9 @@ bool operator==(const RGBA &lhs, const RGBA &rhs);
 
 class Image;
 
-struct SubImage {
+struct SubImage : public Common::Rect {
 	Common::String _name;
 	Common::String _srcImageName;
-	int x, y, width, height;
 };
 
 #define IM_OPAQUE (uint) 255
diff --git a/engines/ultima/ultima4/gfx/imagemgr.cpp b/engines/ultima/ultima4/gfx/imagemgr.cpp
index 0251d90a20..df4d2accaf 100644
--- a/engines/ultima/ultima4/gfx/imagemgr.cpp
+++ b/engines/ultima/ultima4/gfx/imagemgr.cpp
@@ -178,12 +178,13 @@ SubImage *ImageMgr::loadSubImageFromConf(const ImageInfo *info, const ConfigElem
 
 	subimage = new SubImage();
 	subimage->_name = conf.getString("name");
-	subimage->width = conf.getInt("width");
-	subimage->height = conf.getInt("height");
+	subimage->setWidth(conf.getInt("width"));
+	subimage->setHeight(conf.getInt("height"));
 	subimage->_srcImageName = info->_name;
 	if (conf.exists("x") && conf.exists("y")) {
-		x = subimage->x = conf.getInt("x");
-		y = subimage->y = conf.getInt("y");
+		x = conf.getInt("x");
+		y = conf.getInt("y");
+		subimage->moveTo(x, y);
 	} else {
 		// Automatically increment our position through the base image
 		x += last_width;
@@ -192,13 +193,12 @@ SubImage *ImageMgr::loadSubImageFromConf(const ImageInfo *info, const ConfigElem
 			y += last_height;
 		}
 
-		subimage->x = x;
-		subimage->y = y;
+		subimage->moveTo(x, y);
 	}
 
 	// "remember" the width and height of this subimage
-	last_width = subimage->width;
-	last_height = subimage->height;
+	last_width = subimage->width();
+	last_height = subimage->height();
 
 	return subimage;
 }
diff --git a/engines/ultima/ultima4/gfx/screen.cpp b/engines/ultima/ultima4/gfx/screen.cpp
index c9064bc4f7..201511d789 100644
--- a/engines/ultima/ultima4/gfx/screen.cpp
+++ b/engines/ultima/ultima4/gfx/screen.cpp
@@ -517,10 +517,10 @@ void Screen::screenDrawImage(const Common::String &name, int x, int y) {
 
 		if (info) {
 			info->_image->drawSubRect(x, y,
-			                          subimage->x * (settings._scale / info->_prescale),
-			                          subimage->y * (settings._scale / info->_prescale),
-			                          subimage->width * (settings._scale / info->_prescale),
-			                          subimage->height * (settings._scale / info->_prescale));
+			                          subimage->left * (settings._scale / info->_prescale),
+			                          subimage->top * (settings._scale / info->_prescale),
+			                          subimage->width() * (settings._scale / info->_prescale),
+			                          subimage->height() * (settings._scale / info->_prescale));
 			return;
 		}
 	}
diff --git a/engines/ultima/ultima4/map/dungeonview.cpp b/engines/ultima/ultima4/map/dungeonview.cpp
index 4b6b5c04c6..f75e69e00b 100644
--- a/engines/ultima/ultima4/map/dungeonview.cpp
+++ b/engines/ultima/ultima4/map/dungeonview.cpp
@@ -164,8 +164,8 @@ void DungeonView::drawInDungeon(Tile *tile, int x_offset, int distance, Directio
 	}
 
 	if (tiledWall) {
-		int i_x = SCALED((VIEWPORT_W * _tileWidth  / 2) + this->_x) - (scaled->width() / 2);
-		int i_y = SCALED((VIEWPORT_H * _tileHeight / 2) + this->_y) - (scaled->height() / 2);
+		int i_x = SCALED((VIEWPORT_W * _tileWidth  / 2) + _bounds.left) - (scaled->width() / 2);
+		int i_y = SCALED((VIEWPORT_H * _tileHeight / 2) + _bounds.top) - (scaled->height() / 2);
 		int f_x = i_x + scaled->width();
 		int f_y = i_y + scaled->height();
 		int d_x = _animated->width();
@@ -177,12 +177,12 @@ void DungeonView::drawInDungeon(Tile *tile, int x_offset, int distance, Directio
 					x, y, 0, 0, f_x - x, f_y - y);
 	} else {
 		int y_offset = MAX(0, (dscale[distance] - offset_adj) * offset_multiplier);
-		int x = SCALED((VIEWPORT_W * _tileWidth / 2) + this->_x) - (scaled->width() / 2);
-		int y = SCALED((VIEWPORT_H * _tileHeight / 2) + this->_y + y_offset) - (scaled->height() / 8);
+		int x = SCALED((VIEWPORT_W * _tileWidth / 2) + _bounds.left) - (scaled->width() / 2);
+		int y = SCALED((VIEWPORT_H * _tileHeight / 2) + _bounds.top + y_offset) - (scaled->height() / 8);
 
 		scaled->drawSubRectOn(this->_screen, x, y, 0, 0,
-			SCALED(_tileWidth * VIEWPORT_W + this->_x) - x ,
-			SCALED(_tileHeight * VIEWPORT_H + this->_y) - y);
+			SCALED(_tileWidth * VIEWPORT_W + _bounds.left) - x ,
+			SCALED(_tileHeight * VIEWPORT_H + _bounds.top) - y);
 	}
 
 	delete scaled;
@@ -422,8 +422,8 @@ void DungeonView::drawWall(int xoffset, int distance, Direction orientation, Dun
 	int x = 0, y = 0;
 	SubImage *subimage = imageMgr->getSubImage(DNG_GRAPHIC_INFO[index].subimage);
 	if (subimage) {
-		x = subimage->x;
-		y = subimage->y;
+		x = subimage->left;
+		y = subimage->top;
 	}
 
 	g_screen->screenDrawImage(DNG_GRAPHIC_INFO[index].subimage, (BORDER_WIDTH + x) * settings._scale,
diff --git a/engines/ultima/ultima4/map/tile.cpp b/engines/ultima/ultima4/map/tile.cpp
index 5b29444713..135ab7bde3 100644
--- a/engines/ultima/ultima4/map/tile.cpp
+++ b/engines/ultima/ultima4/map/tile.cpp
@@ -153,8 +153,8 @@ void Tile::loadImage() {
 			info->_image->alphaOff();
 
 		if (info) {
-			_w = (subimage ? subimage->width *_scale : info->_width * _scale / info->_prescale);
-			_h = (subimage ? (subimage->height * _scale) / _frames : (info->_height * _scale / info->_prescale) / _frames);
+			_w = (subimage ? subimage->width() *_scale : info->_width * _scale / info->_prescale);
+			_h = (subimage ? (subimage->height() * _scale) / _frames : (info->_height * _scale / info->_prescale) / _frames);
 			_image = Image::create(_w, _h * _frames, false, Image::HARDWARE);
 
 
@@ -165,7 +165,9 @@ void Tile::loadImage() {
 			assert(tiles);
 
 			if (subimage) {
-				tiles->drawSubRectOn(_image, 0, 0, subimage->x * _scale, subimage->y * _scale, subimage->width * _scale, subimage->height * _scale);
+				tiles->drawSubRectOn(_image, 0, 0,
+					subimage->left * _scale, subimage->top * _scale,
+					subimage->width() * _scale, subimage->height() * _scale);
 			} else {
 				tiles->drawOn(_image, 0, 0);
 			}
diff --git a/engines/ultima/ultima4/views/imageview.cpp b/engines/ultima/ultima4/views/imageview.cpp
index 09ef34310d..50153d4327 100644
--- a/engines/ultima/ultima4/views/imageview.cpp
+++ b/engines/ultima/ultima4/views/imageview.cpp
@@ -37,7 +37,7 @@ ImageView::~ImageView() {
 void ImageView::draw(const Common::String &imageName, int x, int y) {
 	ImageInfo *info = imageMgr->get(imageName);
 	if (info) {
-		info->_image->draw(SCALED(this->_x + x), SCALED(this->_y + y));
+		info->_image->draw(SCALED(_bounds.left + x), SCALED(_bounds.top + y));
 		return;
 	}
 
@@ -46,11 +46,11 @@ void ImageView::draw(const Common::String &imageName, int x, int y) {
 		info = imageMgr->get(subimage->_srcImageName);
 
 		if (info) {
-			info->_image->drawSubRect(SCALED(this->_x + x), SCALED(this->_y + y),
-			                          SCALED(subimage->x) / info->_prescale,
-			                          SCALED(subimage->y) / info->_prescale,
-			                          SCALED(subimage->width) / info->_prescale,
-			                          SCALED(subimage->height) / info->_prescale);
+			info->_image->drawSubRect(SCALED(_bounds.left + x), SCALED(_bounds.top + y),
+			                          SCALED(subimage->left) / info->_prescale,
+			                          SCALED(subimage->top) / info->_prescale,
+			                          SCALED(subimage->width()) / info->_prescale,
+			                          SCALED(subimage->height()) / info->_prescale);
 			return;
 		}
 	}
diff --git a/engines/ultima/ultima4/views/menuitem.cpp b/engines/ultima/ultima4/views/menuitem.cpp
index 256bd7ea14..73db8bd793 100644
--- a/engines/ultima/ultima4/views/menuitem.cpp
+++ b/engines/ultima/ultima4/views/menuitem.cpp
@@ -28,8 +28,8 @@
 namespace Ultima {
 namespace Ultima4 {
 
-MenuItem::MenuItem(Common::String t, short xp, short yp, int sc) :
-	_id(-1), x(xp), y(yp), _text(t), _highlighted(false),
+MenuItem::MenuItem(Common::String t, short x, short y, int sc) :
+	_id(-1), _x(x), _y(y), _text(t), _highlighted(false),
 	_selected(false), _visible(true), _scOffset(sc), _closesMenu(false) {
 	// if the sc/scOffset is outside the range of the text string, assert
 	ASSERT(sc == -1 || (sc >= 0 && sc <= (int)_text.size()), "sc value of %d out of range!", sc);
@@ -40,10 +40,10 @@ int MenuItem::getId() const {
 	return _id;
 }
 short MenuItem::getX() const {
-	return x;
+	return _x;
 }
 short MenuItem::getY() const {
-	return y;
+	return _y;
 }
 int MenuItem::getScOffset() const {
 	return _scOffset;
@@ -71,12 +71,12 @@ void MenuItem::setId(int i) {
 	_id = i;
 }
 
-void MenuItem::setX(int xpos) {
-	x = xpos;
+void MenuItem::setX(int x) {
+	_x = x;
 }
 
-void MenuItem::setY(int ypos) {
-	y = ypos;
+void MenuItem::setY(int y) {
+	_y = y;
 }
 
 void MenuItem::setText(Common::String t) {
diff --git a/engines/ultima/ultima4/views/menuitem.h b/engines/ultima/ultima4/views/menuitem.h
index debde7885c..7c94458b08 100644
--- a/engines/ultima/ultima4/views/menuitem.h
+++ b/engines/ultima/ultima4/views/menuitem.h
@@ -50,7 +50,7 @@ public:
 	/**
 	 * MenuItem class
 	 */
-	MenuItem(Common::String text, short xp, short yp, int shortcutKey = -1);
+	MenuItem(Common::String text, short x, short y, int shortcutKey = -1);
 	virtual ~MenuItem() {}
 
 	virtual void activate(MenuEvent &event) {}
@@ -69,8 +69,8 @@ public:
 	bool getClosesMenu() const;
 
 	void setId(int id);
-	void setX(int xpos);
-	void setY(int ypos);
+	void setX(int x);
+	void setY(int y);
 	void setText(Common::String text);
 	void setHighlighted(bool h = true);
 	void setSelected(bool s = true);
@@ -80,7 +80,7 @@ public:
 
 protected:
 	int _id;
-	short x, y;
+	short _x, _y;
 	Common::String _text;
 	bool _highlighted;
 	bool _selected;
diff --git a/engines/ultima/ultima4/views/textview.cpp b/engines/ultima/ultima4/views/textview.cpp
index a6ba7bb8d9..946451fbf3 100644
--- a/engines/ultima/ultima4/views/textview.cpp
+++ b/engines/ultima/ultima4/views/textview.cpp
@@ -58,8 +58,8 @@ void TextView::drawChar(int chr, int x, int y) {
 	ASSERT(x < _columns, "x value of %d out of range", x);
 	ASSERT(y < _rows, "y value of %d out of range", y);
 
-	_charset->drawSubRect(SCALED(this->_x + (x * CHAR_WIDTH)),
-	                      SCALED(this->_y + (y * CHAR_HEIGHT)),
+	_charset->drawSubRect(SCALED(_bounds.left + (x * CHAR_WIDTH)),
+	                      SCALED(_bounds.top + (y * CHAR_HEIGHT)),
 	                      0, SCALED(chr * CHAR_HEIGHT),
 	                      SCALED(CHAR_WIDTH),
 	                      SCALED(CHAR_HEIGHT));
@@ -69,8 +69,8 @@ void TextView::drawCharMasked(int chr, int x, int y, byte mask) {
 	drawChar(chr, x, y);
 	for (int i = 0; i < 8; i++) {
 		if (mask & (1 << i)) {
-			_screen->fillRect(SCALED(this->_x + (x * CHAR_WIDTH)),
-			                  SCALED(this->_y + (y * CHAR_HEIGHT) + i),
+			_screen->fillRect(SCALED(_bounds.left + (x * CHAR_WIDTH)),
+			                  SCALED(_bounds.top + (y * CHAR_HEIGHT) + i),
 			                  SCALED(CHAR_WIDTH),
 			                  SCALED(1),
 			                  0, 0, 0);
@@ -214,10 +214,10 @@ void TextView::optionAt(int x, int y, char key, const char *fmt, ...) {
 
 	if (key) {
 		Common::Rect r(
-			SCALED(_x + (x * CHAR_WIDTH)),
-			SCALED(_y + (y * CHAR_HEIGHT)),
-			SCALED(_x + (x + strlen(buffer) - offset) * CHAR_WIDTH),
-			SCALED(_y + (y + 1) * CHAR_HEIGHT)
+			SCALED(_bounds.left + (x * CHAR_WIDTH)),
+			SCALED(_bounds.top + (y * CHAR_HEIGHT)),
+			SCALED(_bounds.left + (x + strlen(buffer) - offset) * CHAR_WIDTH),
+			SCALED(_bounds.top + (y + 1) * CHAR_HEIGHT)
 		);
 
 		_options.push_back(Option(r, key));
@@ -226,16 +226,16 @@ void TextView::optionAt(int x, int y, char key, const char *fmt, ...) {
 
 void TextView::scroll() {
 	_screen->drawSubRectOn(_screen,
-	                       SCALED(_x),
-	                       SCALED(_y),
-	                       SCALED(_x),
-	                       SCALED(_y) + SCALED(CHAR_HEIGHT),
-	                       SCALED(_width),
-	                       SCALED(_height) - SCALED(CHAR_HEIGHT));
-
-	_screen->fillRect(SCALED(_x),
-	                  SCALED(_y + (CHAR_HEIGHT * (_rows - 1))),
-	                  SCALED(_width),
+	                       SCALED(_bounds.left),
+	                       SCALED(_bounds.top),
+	                       SCALED(_bounds.left),
+	                       SCALED(_bounds.top) + SCALED(CHAR_HEIGHT),
+	                       SCALED(_bounds.width()),
+	                       SCALED(_bounds.height()) - SCALED(CHAR_HEIGHT));
+
+	_screen->fillRect(SCALED(_bounds.left),
+	                  SCALED(_bounds.top + (CHAR_HEIGHT * (_rows - 1))),
+	                  SCALED(_bounds.width()),
 	                  SCALED(CHAR_HEIGHT),
 	                  0, 0, 0);
 
@@ -302,10 +302,10 @@ void TextView::clearOptions() {
 
 Common::Rect TextView::getTextBounds(int x, int y, int textWidth) const {
 	return Common::Rect(
-		SCALED(_x + (x * CHAR_WIDTH)),
-		SCALED(_y + (y * CHAR_HEIGHT)),
-		SCALED(_x + (x + textWidth * CHAR_WIDTH)),
-		SCALED(_y + (y + 1) * CHAR_HEIGHT)
+		SCALED(_bounds.left + (x * CHAR_WIDTH)),
+		SCALED(_bounds.top + (y * CHAR_HEIGHT)),
+		SCALED(_bounds.left + (x + textWidth * CHAR_WIDTH)),
+		SCALED(_bounds.top + (y + 1) * CHAR_HEIGHT)
 	);
 }
 
diff --git a/engines/ultima/ultima4/views/tileview.cpp b/engines/ultima/ultima4/views/tileview.cpp
index c020c10434..2361d20860 100644
--- a/engines/ultima/ultima4/views/tileview.cpp
+++ b/engines/ultima/ultima4/views/tileview.cpp
@@ -90,8 +90,8 @@ void TileView::drawTile(MapTile &mapTile, bool focus, int x, int y) {
 	_animated->fillRect(0, 0, SCALED(_tileWidth), SCALED(_tileHeight), 0, 0, 0, 255);
 
 	// Draw blackness on the tile.
-	_animated->drawSubRect(SCALED(x * _tileWidth + this->_x),
-	    SCALED(y * _tileHeight + this->_y), 0, 0,
+	_animated->drawSubRect(SCALED(x * _tileWidth + _bounds.left),
+	    SCALED(y * _tileHeight + _bounds.top), 0, 0,
 	    SCALED(_tileWidth), SCALED(_tileHeight));
 
 	// Draw the tile to the screen
@@ -103,12 +103,12 @@ void TileView::drawTile(MapTile &mapTile, bool focus, int x, int y) {
 		tile->getAnim()->draw(_animated, tile, mapTile, DIR_NONE);
 
 		// Then draw it to the screen
-		_animated->drawSubRect(SCALED(x * _tileWidth + this->_x),
-			SCALED(y * _tileHeight + this->_y), 0, 0,
+		_animated->drawSubRect(SCALED(x * _tileWidth + _bounds.left),
+			SCALED(y * _tileHeight + _bounds.top), 0, 0,
 			SCALED(_tileWidth), SCALED(_tileHeight));
 	} else {
-		image->drawSubRect(SCALED(x * _tileWidth + this->_x),
-			SCALED(y * _tileHeight + this->_y),
+		image->drawSubRect(SCALED(x * _tileWidth + _bounds.left),
+			SCALED(y * _tileHeight + _bounds.top),
 			0, SCALED(_tileHeight * mapTile._frame),
 			SCALED(_tileWidth), SCALED(_tileHeight));
 	}
@@ -125,7 +125,7 @@ void TileView::drawTile(Std::vector<MapTile> &tiles, bool focus, int x, int y) {
 	// Clear tile contents
 	_animated->fillRect(0, 0, SCALED(_tileWidth), SCALED(_tileHeight), 0, 0, 0, 255);
 	_animated->drawSubRect(
-		SCALED(x * _tileWidth + this->_x), SCALED(y * _tileHeight + this->_y),
+		SCALED(x * _tileWidth + _bounds.left), SCALED(y * _tileHeight + _bounds.top),
 		0, 0,
 		SCALED(_tileWidth), SCALED(_tileHeight)
 	);
@@ -158,8 +158,8 @@ void TileView::drawTile(Std::vector<MapTile> &tiles, bool focus, int x, int y) {
 		}
 
 		// Then draw it to the screen
-		_animated->drawSubRect(SCALED(x * _tileWidth + this->_x),
-			SCALED(y * _tileHeight + this->_y), 0, 0,
+		_animated->drawSubRect(SCALED(x * _tileWidth + _bounds.left),
+			SCALED(y * _tileHeight + _bounds.top), 0, 0,
 				SCALED(_tileWidth), SCALED(_tileHeight)
 		);
 	}
@@ -176,25 +176,25 @@ void TileView::drawFocus(int x, int y) {
 	// Draw the focus rectangle around the tile
 	if ((g_screen->_currentCycle * 4 / SCR_CYCLE_PER_SECOND) % 2) {
 		// left edge
-		_screen->fillRect(SCALED(x * _tileWidth + this->_x),
-			SCALED(y * _tileHeight + this->_y),
+		_screen->fillRect(SCALED(x * _tileWidth + _bounds.left),
+			SCALED(y * _tileHeight + _bounds.top),
 			SCALED(2), SCALED(_tileHeight), 0xff, 0xff, 0xff);
 
 		// top edge
-		_screen->fillRect(SCALED(x * _tileWidth + this->_x),
-			SCALED(y * _tileHeight + this->_y),
+		_screen->fillRect(SCALED(x * _tileWidth + _bounds.left),
+			SCALED(y * _tileHeight + _bounds.top),
 			SCALED(_tileWidth), SCALED(2),
 			0xff, 0xff, 0xff);
 
 		// Right edge
-		_screen->fillRect(SCALED((x + 1) * _tileWidth + this->_x - 2),
-		    SCALED(y * _tileHeight + this->_y),
+		_screen->fillRect(SCALED((x + 1) * _tileWidth + _bounds.left - 2),
+		    SCALED(y * _tileHeight + _bounds.top),
 			SCALED(2), SCALED(_tileHeight),
 		    0xff, 0xff, 0xff);
 
 		// Bottom edge
-		_screen->fillRect(SCALED(x * _tileWidth + this->_x),
-			SCALED((y + 1) * _tileHeight + this->_y - 2),
+		_screen->fillRect(SCALED(x * _tileWidth + _bounds.left),
+			SCALED((y + 1) * _tileHeight + _bounds.top - 2),
 			SCALED(_tileWidth), SCALED(2),
 			0xff, 0xff, 0xff);
 	}
diff --git a/engines/ultima/ultima4/views/view.cpp b/engines/ultima/ultima4/views/view.cpp
index e5b73f505b..b65ee496e6 100644
--- a/engines/ultima/ultima4/views/view.cpp
+++ b/engines/ultima/ultima4/views/view.cpp
@@ -30,8 +30,9 @@ namespace Ultima4 {
 
 Image *View::_screen = nullptr;
 
-View::View(int x, int y, int width, int height) : _x(x), _y(y), _width(width), _height(height),
-	_highlighted(false), _highlightX(0), _highlightY(0), _highlightW(0), _highlightH(0) {
+View::View(int x, int y, int width, int height) :
+		_bounds(Common::Rect(x, y, x + width, y + height)),
+		_highlighted(false) {
 	if (_screen == nullptr)
 		_screen = imageMgr->get("screen")->_image;
 }
@@ -42,7 +43,9 @@ void View::reinit() {
 
 void View::clear() {
 	unhighlight();
-	_screen->fillRect(SCALED(_x), SCALED(_y), SCALED(_width), SCALED(_height), 0, 0, 0);
+	_screen->fillRect(
+		SCALED(_bounds.left), SCALED(_bounds.top),
+		SCALED(_bounds.width()), SCALED(_bounds.height()), 0, 0, 0);
 }
 
 void View::update() {
@@ -63,30 +66,33 @@ void View::update(int x, int y, int width, int height) {
 
 void View::highlight(int x, int y, int width, int height) {
 	_highlighted = true;
-	_highlightX = x;
-	_highlightY = y;
-	_highlightW = width;
-	_highlightH = height;
+	_highlightBounds = Common::Rect(x, y, x + width, y + height);
 
 	update(x, y, width, height);
 }
 
 void View::unhighlight() {
 	_highlighted = false;
-	update(_highlightX, _highlightY, _highlightW, _highlightH);
-	_highlightX = _highlightY = _highlightW = _highlightH = 0;
+	update(_highlightBounds.left, _highlightBounds.top,
+		_highlightBounds.width(), _highlightBounds.height());
+	_highlightBounds = Common::Rect();
 }
 
 void View::drawHighlighted() {
 	Image *screen = imageMgr->get("screen")->_image;
 
-	Image *tmp = Image::create(SCALED(_highlightW), SCALED(_highlightH), false, Image::SOFTWARE);
+	Image *tmp = Image::create(SCALED(_highlightBounds.width()),
+		SCALED(_highlightBounds.height()), false, Image::SOFTWARE);
 	if (!tmp)
 		return;
 
-	screen->drawSubRectOn(tmp, 0, 0, SCALED(this->_x + _highlightX), SCALED(this->_y + _highlightY), SCALED(_highlightW), SCALED(_highlightH));
+	screen->drawSubRectOn(tmp, 0, 0,
+		SCALED(_bounds.left + _highlightBounds.left),
+		SCALED(_bounds.top + _highlightBounds.top),
+		SCALED(_highlightBounds.width()),
+		SCALED(_highlightBounds.height()));
 	tmp->drawHighlighted();
-	tmp->draw(SCALED(this->_x + _highlightX), SCALED(this->_y + _highlightY));
+	tmp->draw(SCALED(_bounds.left + _highlightBounds.left), SCALED(_bounds.top + _highlightBounds.top));
 	delete tmp;
 }
 
diff --git a/engines/ultima/ultima4/views/view.h b/engines/ultima/ultima4/views/view.h
index 7ecf05677e..8d6e88972f 100644
--- a/engines/ultima/ultima4/views/view.h
+++ b/engines/ultima/ultima4/views/view.h
@@ -66,9 +66,9 @@ public:
 	virtual void unhighlight();
 
 protected:
-	const int _x, _y, _width, _height;
+	Common::Rect _bounds;
+	Common::Rect _highlightBounds;
 	bool _highlighted;
-	int _highlightX, _highlightY, _highlightW, _highlightH;
 	void drawHighlighted();
 #ifdef IOS_ULTIMA4
 	friend void U4IOS::updateScreenView();




More information about the Scummvm-git-logs mailing list