[Scummvm-git-logs] scummvm master -> 000d5fcba8f38b579c8de40511f4f13d79acd0df

sev- sev at scummvm.org
Wed Jul 11 22:46:56 CEST 2018


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

Summary:
2446810378 GRAPHICS: MACGUI: Added possibility to specify WM behaviour
468d9d09f0 PINK: Plugged in MacWindowManager for showing in-game menu
ddfe6c3bce GRAPHICS: MACGUI: Implemented autohide menus
cd357e59d0 PINK: Plug in autohide menu
a4b8ffc2de PINK: Spelling fixes in method names
ace8fcca82 PINK: Made _director a pointer and reduced header dependencies
04dfa9b0a9 GRAPHICS: MACGUI: Made autohiding menu reentrable
a14a1230e3 GRAPHICS: MACMENU: Calculate menu bounds after adding static items
f2b61dd814 GRAPHICS: MACGUI: Added isMenuActive() helper method
000d5fcba8 PINK: Make menu blocking


Commit: 2446810378c6279583a89ca0afc3733442607860
    https://github.com/scummvm/scummvm/commit/2446810378c6279583a89ca0afc3733442607860
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
GRAPHICS: MACGUI: Added possibility to specify WM behaviour

Changed paths:
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 9e5e8b7..6ee92e0 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -149,7 +149,10 @@ MacWindowManager::MacWindowManager() {
 	_lastId = 0;
 	_activeWindow = -1;
 
+	_mode = kWMModeNone;
+
 	_menu = 0;
+	_menuDelay = 0;
 
 	_fullRefresh = true;
 
@@ -279,7 +282,7 @@ void MacWindowManager::draw() {
 
 	removeMarked();
 
-	if (_fullRefresh)
+	if (_fullRefresh && !(_mode & kWMModeNoDesktop))
 		drawDesktop();
 
 	for (Common::List<BaseMacWindow *>::const_iterator it = _windowStack.begin(); it != _windowStack.end(); it++) {
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index bc0224a..d2f8936 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -55,6 +55,13 @@ enum {
 	kPatternLightGray = 5,
 	kPatternDarkGray = 6
 };
+
+enum {
+	kWMModeNone         = 0,
+	kWMModeNoDesktop    = (1 << 0),
+	kWMModeAutohideMenu = (1 << 1)
+};
+
 }
 using namespace MacGUIConstants;
 
@@ -132,6 +139,16 @@ public:
 	 * @return Pointer to a new empty menu.
 	 */
 	MacMenu *addMenu();
+
+	/**
+	 * Set hot zone where menu appears (works only with autohide menu)
+	 */
+	void setMenuHotzone(const Common::Rect &rect) { _menuHotzone = rect; }
+
+	/**
+	 * Set delay in milliseconds when menu appears (works only with autohide menu)
+	 */
+	void setMenuDelay(int delay) { _menuDelay = delay; }
 	/**
 	 * Set the desired window state to active.
 	 * @param id ID of the window that has to be set to active.
@@ -187,6 +204,8 @@ public:
 	void pushWatchCursor();
 	void popCursor();
 
+	void setMode(uint32 mode) { _mode = mode; }
+
 public:
 	MacFontManager *_fontMan;
 
@@ -200,6 +219,8 @@ private:
 private:
 	ManagedSurface *_screen;
 
+	uint32 _mode;
+
 	Common::List<BaseMacWindow *> _windowStack;
 	Common::Array<BaseMacWindow *> _windows;
 
@@ -214,6 +235,8 @@ private:
 	MacPatterns _patterns;
 
 	MacMenu *_menu;
+	Common::Rect _menuHotzone;
+	uint32 _menuDelay;
 
 	bool _cursorIsArrow;
 };


Commit: 468d9d09f0d013d8f897acd2ee3df258e84688e3
    https://github.com/scummvm/scummvm/commit/468d9d09f0d013d8f897acd2ee3df258e84688e3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
PINK: Plugged in MacWindowManager for showing in-game menu

Changed paths:
    engines/pink/director.cpp
    engines/pink/director.h


diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp
index 966e1ca..695ae0c 100644
--- a/engines/pink/director.cpp
+++ b/engines/pink/director.cpp
@@ -29,10 +29,62 @@
 #include "pink/objects/actions/action_cel.h"
 #include "pink/objects/actors/actor.h"
 
+#include "graphics/macgui/macmenu.h"
+
 namespace Pink {
+
+enum {
+	kMenuHighLevel = -1,
+	kMenuAbout = 0,
+	kMenuGame = 1,
+	kMenuBOK = 2,
+	kMenuOnline = 3,
+	kMenuHelp = 4
+};
+
+enum {
+	kMenuActionAbout,
+	kMenuActionNewGame,
+	kMenuActionOpenSavedGame,
+	kMenuActionSaveGame,
+	kMenuActionSaveGameAs,
+	kMenuActionSongs,
+	kMenuActionSoundPreferences,
+	kMenuActionPause,
+	kMenuActionExit
+};
+
+static const Graphics::MacMenuData menuSubItems[] = {
+	{ kMenuHighLevel, "Game",	0, 0, false },
+	{ kMenuHighLevel, "Book of Knowledge",	0, 0, false },
+	{ kMenuHighLevel, "Online",	0, 0, false },
+	{ kMenuHighLevel, "Help",	0, 0, false },
+
+	{ kMenuGame, "New Game",	kMenuActionNewGame, 'N', false },
+	{ kMenuGame, "Open Saved Game...",	kMenuActionOpenSavedGame, 'O', false },
+	{ kMenuGame, "Save Game",	kMenuActionSaveGame, 'S', false },
+	{ kMenuGame, "Save Game As...",	kMenuActionSaveGameAs, 0, false },
+	{ kMenuGame, NULL,			0, 0, false },
+	{ kMenuGame, "Songs",	kMenuActionSongs, 0, false },
+	{ kMenuGame, NULL,			0, 0, false },
+	{ kMenuGame, "Sound Preferences...",	kMenuActionSoundPreferences, 0, false },
+	{ kMenuGame, NULL,			0, 0, false },
+	{ kMenuGame, "Pause",	kMenuActionPause, 'P', false },
+	{ kMenuGame, "Exit",	kMenuActionExit, 'N', false },
+
+	{ 0, NULL,			0, 0, false }
+};
+
+
 Director::Director()
 	: _surface(640, 480) {
-	_wndManager.setScreen(&_surface);
+	_wm.setScreen(&_surface);
+	_wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu);
+	_wm.setMenuHotzone(Common::Rect(0, 0, 640, 23));
+	_wm.setMenuDelay(250);
+
+	_menu = _wm.addMenu();
+	_menu->addStaticMenus(menuSubItems);
 }
 
 void Director::update() {
@@ -45,6 +97,8 @@ void Director::update() {
 			_sprites[i]->update();
 	}
 
+	_wm.draw();
+
 	draw();
 }
 
diff --git a/engines/pink/director.h b/engines/pink/director.h
index 3fdb753..35f0dcc 100644
--- a/engines/pink/director.h
+++ b/engines/pink/director.h
@@ -30,6 +30,10 @@
 #include "graphics/macgui/macwindowmanager.h"
 #include "graphics/screen.h"
 
+namespace Graphics {
+	class MacMenu;
+}
+
 namespace Pink {
 
 class Actor;
@@ -62,7 +66,7 @@ public:
 
 	Actor *getActorByPoint(const Common::Point point);
 
-	Graphics::MacWindowManager &getWndManager() { return _wndManager; };
+	Graphics::MacWindowManager &getWndManager() { return _wm; };
 
 private:
 	void draw();
@@ -71,7 +75,8 @@ private:
 
 private:
 	Graphics::Screen _surface;
-	Graphics::MacWindowManager _wndManager;
+	Graphics::MacWindowManager _wm;
+	Graphics::MacMenu *_menu;
 	Common::Array<Common::Rect> _dirtyRects;
 	Common::Array<ActionCEL *> _sprites;
 	Common::Array<ActionCEL *> _savedSprites;


Commit: ddfe6c3bce672086d28363c1c90ee4be279f5539
    https://github.com/scummvm/scummvm/commit/ddfe6c3bce672086d28363c1c90ee4be279f5539
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
GRAPHICS: MACGUI: Implemented autohide menus

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index cecdcab..0d25ea7 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -90,6 +90,12 @@ MacMenu::MacMenu(int id, const Common::Rect &bounds, MacWindowManager *wm)
 	_bbox.bottom = kMenuHeight;
 
 	_menuActivated = false;
+
+	if (_wm->_mode & kWMModeAutohideMenu)
+		_isVisible = false;
+	else
+		_isVisible = true;
+
 	_activeItem = -1;
 	_activeSubItem = -1;
 
@@ -344,6 +350,9 @@ static void drawFilledRoundRect(ManagedSurface *surface, Common::Rect &rect, int
 bool MacMenu::draw(ManagedSurface *g, bool forceRedraw) {
 	Common::Rect r(_bbox);
 
+	if (!_isVisible)
+		return false;
+
 	if (!_contentIsDirty && !forceRedraw)
 		return false;
 
@@ -466,6 +475,9 @@ void MacMenu::renderSubmenu(MacMenuItem *menu) {
 }
 
 bool MacMenu::processEvent(Common::Event &event) {
+	if (!_isVisible)
+		return false;
+
 	switch (event.type) {
 	case Common::EVENT_KEYDOWN:
 		return keyEvent(event);
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 8b3e8ff..08c8f41 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -65,6 +65,9 @@ public:
 	void setActive(bool active) { _menuActivated = active; }
 	bool hasAllFocus() { return _menuActivated; }
 
+	bool isVisible() { return _isVisible; }
+	void setVisible(bool visible) { _isVisible = visible; }
+
 	Common::Rect _bbox;
 
 private:
@@ -90,6 +93,7 @@ private:
 	const Font *_font;
 
 	bool _menuActivated;
+	bool _isVisible;
 
 	int _activeItem;
 	int _activeSubItem;
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 6ee92e0..a7ebf75 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -23,6 +23,7 @@
 #include "common/events.h"
 #include "common/list.h"
 #include "common/system.h"
+#include "common/timer.h"
 
 #include "graphics/cursorman.h"
 #include "graphics/managed_surface.h"
@@ -144,6 +145,8 @@ static const byte macCursorCrossBar[] = {
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 };
 
+static void menuTimerHandler(void *refCon);
+
 MacWindowManager::MacWindowManager() {
 	_screen = 0;
 	_lastId = 0;
@@ -153,6 +156,7 @@ MacWindowManager::MacWindowManager() {
 
 	_menu = 0;
 	_menuDelay = 0;
+	_menuTimerActive = false;
 
 	_fullRefresh = true;
 
@@ -174,6 +178,8 @@ MacWindowManager::~MacWindowManager() {
 		delete _windows[i];
 
 	delete _fontMan;
+
+	g_system->getTimerManager()->removeTimerProc(&menuTimerHandler);
 }
 
 MacWindow *MacWindowManager::addWindow(bool scrollable, bool resizable, bool editable) {
@@ -210,6 +216,13 @@ MacMenu *MacWindowManager::addMenu() {
 	return _menu;
 }
 
+void MacWindowManager::activateMenu() {
+	if (!_menu)
+		return;
+
+	_menu->setVisible(true);
+}
+
 void MacWindowManager::setActive(int id) {
 	if (_activeWindow == id)
 		return;
@@ -306,21 +319,47 @@ void MacWindowManager::draw() {
 	_fullRefresh = false;
 }
 
+static void menuTimerHandler(void *refCon) {
+	MacWindowManager *wm = (MacWindowManager *)refCon;
+
+	if (wm->_menuHotzone.contains(wm->_lastMousePos))
+		wm->activateMenu();
+
+	wm->_menuTimerActive = false;
+
+	g_system->getTimerManager()->removeTimerProc(&menuTimerHandler);
+}
+
 bool MacWindowManager::processEvent(Common::Event &event) {
+	if (event.type == Common::EVENT_MOUSEMOVE)
+		_lastMousePos = event.mouse;
+
+	if (_menu && !_menu->isVisible()) {
+		if ((_mode & kWMModeAutohideMenu) && event.type == Common::EVENT_MOUSEMOVE) {
+			if (!_menuTimerActive && _menuHotzone.contains(event.mouse)) {
+				_menuTimerActive = true;
+
+				g_system->getTimerManager()->installTimerProc(&menuTimerHandler, _menuDelay, this, "menuWindowCursor");
+			}
+		}
+	}
+
 	// Menu gets events first for shortcuts and menu bar
 	if (_menu && _menu->processEvent(event))
 		return true;
 
-	if (_windows[_activeWindow]->isEditable() && _windows[_activeWindow]->getType() == kWindowWindow &&
-			((MacWindow *)_windows[_activeWindow])->getInnerDimensions().contains(event.mouse.x, event.mouse.y)) {
-		if (_cursorIsArrow) {
-			CursorMan.replaceCursor(macCursorBeam, 11, 16, 3, 8, 3);
-			_cursorIsArrow = false;
-		}
-	} else {
-		if (_cursorIsArrow == false) {
-			CursorMan.replaceCursor(macCursorArrow, 11, 16, 1, 1, 3);
-			_cursorIsArrow = true;
+	if (_activeWindow != -1) {
+		if (_windows[_activeWindow]->isEditable() && _windows[_activeWindow]->getType() == kWindowWindow &&
+				((MacWindow *)_windows[_activeWindow])->getInnerDimensions().contains(event.mouse.x, event.mouse.y)) {
+			if (_cursorIsArrow) {
+				CursorMan.replaceCursor(macCursorBeam, 11, 16, 3, 8, 3);
+				_cursorIsArrow = false;
+			}
+		} else {
+			if (_cursorIsArrow == false) {
+				CursorMan.replaceCursor(macCursorArrow, 11, 16, 1, 1, 3);
+				_cursorIsArrow = true;
+			}
 		}
 	}
 
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index d2f8936..7db0d01 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -140,6 +140,8 @@ public:
 	 */
 	MacMenu *addMenu();
 
+	void activateMenu();
+
 	/**
 	 * Set hot zone where menu appears (works only with autohide menu)
 	 */
@@ -208,6 +210,12 @@ public:
 
 public:
 	MacFontManager *_fontMan;
+	uint32 _mode;
+
+	Common::Point _lastMousePos;
+	Common::Rect _menuHotzone;
+
+	bool _menuTimerActive;
 
 private:
 	void drawDesktop();
@@ -219,8 +227,6 @@ private:
 private:
 	ManagedSurface *_screen;
 
-	uint32 _mode;
-
 	Common::List<BaseMacWindow *> _windowStack;
 	Common::Array<BaseMacWindow *> _windows;
 
@@ -235,7 +241,6 @@ private:
 	MacPatterns _patterns;
 
 	MacMenu *_menu;
-	Common::Rect _menuHotzone;
 	uint32 _menuDelay;
 
 	bool _cursorIsArrow;


Commit: cd357e59d0e756de6d998ad5459a9cd500cb6e7d
    https://github.com/scummvm/scummvm/commit/cd357e59d0e756de6d998ad5459a9cd500cb6e7d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
PINK: Plug in autohide menu

Changed paths:
    engines/pink/director.cpp
    engines/pink/director.h
    engines/pink/pink.cpp


diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp
index 695ae0c..98446c4 100644
--- a/engines/pink/director.cpp
+++ b/engines/pink/director.cpp
@@ -81,7 +81,7 @@ Director::Director()
 	_wm.setScreen(&_surface);
 	_wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu);
 	_wm.setMenuHotzone(Common::Rect(0, 0, 640, 23));
-	_wm.setMenuDelay(250);
+	_wm.setMenuDelay(250000);
 
 	_menu = _wm.addMenu();
 	_menu->addStaticMenus(menuSubItems);
@@ -102,6 +102,10 @@ void Director::update() {
 	draw();
 }
 
+bool Director::processEvent(Common::Event &event) {
+	return _wm.processEvent(event);
+}
+
 void Director::addSprite(ActionCEL *sprite) {
 	_sprites.push_back(sprite);
 	int i;
diff --git a/engines/pink/director.h b/engines/pink/director.h
index 35f0dcc..1749c1d 100644
--- a/engines/pink/director.h
+++ b/engines/pink/director.h
@@ -45,6 +45,7 @@ public:
 	Director();
 
 	void update();
+	bool processEvent(Common::Event &event);
 
 	void setPallette(const byte *pallete) { g_system->getPaletteManager()->setPalette(pallete, 0, 256); }
 
diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp
index f827ae9..d639a62 100644
--- a/engines/pink/pink.cpp
+++ b/engines/pink/pink.cpp
@@ -112,6 +112,9 @@ Common::Error Pink::PinkEngine::run() {
 	while (!shouldQuit()) {
 		Common::Event event;
 		while (_eventMan->pollEvent(event)) {
+			if (_director.processEvent(event))
+				continue;
+
 			switch (event.type) {
 			case Common::EVENT_QUIT:
 			case Common::EVENT_RTL:


Commit: a4b8ffc2de4c9cc0c2c43189ddf471815da72de5
    https://github.com/scummvm/scummvm/commit/a4b8ffc2de4c9cc0c2c43189ddf471815da72de5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
PINK: Spelling fixes in method names

Changed paths:
    engines/pink/director.h
    engines/pink/objects/actions/action_cel.cpp


diff --git a/engines/pink/director.h b/engines/pink/director.h
index 1749c1d..803d263 100644
--- a/engines/pink/director.h
+++ b/engines/pink/director.h
@@ -47,7 +47,7 @@ public:
 	void update();
 	bool processEvent(Common::Event &event);
 
-	void setPallette(const byte *pallete) { g_system->getPaletteManager()->setPalette(pallete, 0, 256); }
+	void setPalette(const byte *palette) { g_system->getPaletteManager()->setPalette(palette, 0, 256); }
 
 	void addSprite(ActionCEL *sprite);
 	void removeSprite(ActionCEL *sprite);
diff --git a/engines/pink/objects/actions/action_cel.cpp b/engines/pink/objects/actions/action_cel.cpp
index 5abc978..b81b7e6 100644
--- a/engines/pink/objects/actions/action_cel.cpp
+++ b/engines/pink/objects/actions/action_cel.cpp
@@ -48,7 +48,7 @@ bool ActionCEL::initPalette(Director *director) {
 		_decoder.decodeNextFrame();
 		_decoder.rewind();
 	}
-	director->setPallette(_decoder.getPalette());
+	director->setPalette(_decoder.getPalette());
 	return true;
 }
 


Commit: ace8fcca8287ca77eafd94df77d437b623a6cd2c
    https://github.com/scummvm/scummvm/commit/ace8fcca8287ca77eafd94df77d437b623a6cd2c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
PINK: Made _director a pointer and reduced header dependencies

Changed paths:
    engines/pink/objects/actions/action_cel.cpp
    engines/pink/objects/actions/action_sound.cpp
    engines/pink/objects/actors/lead_actor.cpp
    engines/pink/pda_mgr.cpp
    engines/pink/pink.cpp
    engines/pink/pink.h


diff --git a/engines/pink/objects/actions/action_cel.cpp b/engines/pink/objects/actions/action_cel.cpp
index b81b7e6..383f4ac 100644
--- a/engines/pink/objects/actions/action_cel.cpp
+++ b/engines/pink/objects/actions/action_cel.cpp
@@ -25,6 +25,7 @@
 
 #include "pink/archive.h"
 #include "pink/cel_decoder.h"
+#include "pink/director.h"
 #include "pink/pink.h"
 #include "pink/objects/actions/action_cel.h"
 #include "pink/objects/actors/actor.h"
diff --git a/engines/pink/objects/actions/action_sound.cpp b/engines/pink/objects/actions/action_sound.cpp
index 0dcfa85..6c13c42 100644
--- a/engines/pink/objects/actions/action_sound.cpp
+++ b/engines/pink/objects/actions/action_sound.cpp
@@ -24,6 +24,7 @@
 
 #include "pink/archive.h"
 #include "pink/pink.h"
+#include "pink/director.h"
 #include "pink/sound.h"
 #include "pink/objects/actions/action_sound.h"
 #include "pink/objects/actors/actor.h"
diff --git a/engines/pink/objects/actors/lead_actor.cpp b/engines/pink/objects/actors/lead_actor.cpp
index 7e75c8a..2167978 100644
--- a/engines/pink/objects/actors/lead_actor.cpp
+++ b/engines/pink/objects/actors/lead_actor.cpp
@@ -23,6 +23,7 @@
 #include "pink/archive.h"
 #include "pink/cursor_mgr.h"
 #include "pink/pink.h"
+#include "pink/director.h"
 #include "pink/objects/actions/action.h"
 #include "pink/objects/actors/supporting_actor.h"
 #include "pink/objects/actors/lead_actor.h"
diff --git a/engines/pink/pda_mgr.cpp b/engines/pink/pda_mgr.cpp
index 050daab..29911e1 100644
--- a/engines/pink/pda_mgr.cpp
+++ b/engines/pink/pda_mgr.cpp
@@ -22,6 +22,7 @@
 
 #include "pink/pda_mgr.h"
 #include "pink/pink.h"
+#include "pink/director.h"
 #include "pink/objects/actors/pda_button_actor.h"
 #include "pink/objects/actors/lead_actor.h"
 #include "pink/objects/pages/pda_page.h"
diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp
index d639a62..1a06d11 100644
--- a/engines/pink/pink.cpp
+++ b/engines/pink/pink.cpp
@@ -32,6 +32,7 @@
 
 #include "pink/pink.h"
 #include "pink/console.h"
+#include "pink/director.h"
 #include "pink/objects/module.h"
 #include "pink/objects/actors/lead_actor.h"
 
@@ -40,7 +41,7 @@ namespace Pink {
 PinkEngine::PinkEngine(OSystem *system, const ADGameDescription *desc)
 	: Engine(system), _console(nullptr), _rnd("pink"),
 	_desc(*desc), _bro(nullptr), _actor(nullptr),
-	_module(nullptr), _director(), _pdaMgr(this) {
+	_module(nullptr), _director(nullptr), _pdaMgr(this) {
 	debug("PinkEngine constructed");
 
 	DebugMan.addDebugChannel(kPinkDebugGeneral, "general", "General issues");
@@ -72,6 +73,7 @@ Common::Error PinkEngine::init() {
 	initGraphics(640, 480);
 
 	_console = new Console(this);
+	_director = new Director();
 
 	Common::String orbName;
 	Common::String broName;
@@ -112,7 +114,7 @@ Common::Error Pink::PinkEngine::run() {
 	while (!shouldQuit()) {
 		Common::Event event;
 		while (_eventMan->pollEvent(event)) {
-			if (_director.processEvent(event))
+			if (_director->processEvent(event))
 				continue;
 
 			switch (event.type) {
@@ -146,7 +148,7 @@ Common::Error Pink::PinkEngine::run() {
 		}
 
 		_actor->update();
-		_director.update();
+		_director->update();
 		_system->delayMillis(10);
 	}
 
@@ -174,7 +176,7 @@ void PinkEngine::initModule(const Common::String &moduleName, const Common::Stri
 
 void PinkEngine::changeScene() {
 	setCursor(kLoadingCursor);
-	_director.clear();
+	_director->clear();
 
 	if (!_nextModule.empty() && _nextModule != _module->getName())
 		initModule(_nextModule, _nextPage, nullptr);
@@ -285,7 +287,7 @@ bool PinkEngine::hasFeature(Engine::EngineFeature f) const {
 
 void PinkEngine::pauseEngineIntern(bool pause) {
 	Engine::pauseEngineIntern(pause);
-	_director.pause(pause);
+	_director->pause(pause);
 }
 
 bool PinkEngine::isPeril() {
diff --git a/engines/pink/pink.h b/engines/pink/pink.h
index 627fde3..9017178 100644
--- a/engines/pink/pink.h
+++ b/engines/pink/pink.h
@@ -33,7 +33,6 @@
 #include "gui/debugger.h"
 
 #include "pink/constants.h"
-#include "pink/director.h"
 #include "pink/file.h"
 #include "pink/utils.h"
 #include "pink/pda_mgr.h"
@@ -63,6 +62,7 @@
 namespace Pink {
 
 class Console;
+class Director;
 class Archive;
 class NamedObject;
 class Module;
@@ -110,7 +110,7 @@ public:
 	OrbFile *getOrb()  { return &_orb; }
 	BroFile *getBro()  { return _bro; }
 	Common::RandomSource &getRnd() { return _rnd; };
-	Director *getDirector() { return &_director; }
+	Director *getDirector() { return _director; }
 	PDAMgr &getPdaMgr() { return _pdaMgr; }
 
 	void setNextExecutors(const Common::String &nextModule, const Common::String &nextPage) { _nextModule = nextModule; _nextPage = nextPage; }
@@ -137,7 +137,7 @@ private:
 	OrbFile  _orb;
 	BroFile *_bro;
 
-	Director _director;
+	Director *_director;
 	LeadActor *_actor;
 
 	Module *_module;


Commit: 04dfa9b0a99033511b30289bac7f9a064769c220
    https://github.com/scummvm/scummvm/commit/04dfa9b0a99033511b30289bac7f9a064769c220
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
GRAPHICS: MACGUI: Made autohiding menu reentrable

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 0d25ea7..cb8c9b5 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -549,9 +549,12 @@ bool MacMenu::mouseClick(int x, int y) {
 }
 
 bool MacMenu::mouseMove(int x, int y) {
-	if (_menuActivated)
+	if (_menuActivated) {
 		if (mouseClick(x, y))
 			return true;
+	} else if ((_wm->_mode & kWMModeAutohideMenu) && !_bbox.contains(x, y)) {
+		_isVisible = false;
+	}
 
 	return false;
 }
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 08c8f41..c98dd1f 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -66,7 +66,7 @@ public:
 	bool hasAllFocus() { return _menuActivated; }
 
 	bool isVisible() { return _isVisible; }
-	void setVisible(bool visible) { _isVisible = visible; }
+	void setVisible(bool visible) { _isVisible = visible; _contentIsDirty = true; }
 
 	Common::Rect _bbox;
 


Commit: a14a1230e3bdba397d4a6d35ee92141dfe38e384
    https://github.com/scummvm/scummvm/commit/a14a1230e3bdba397d4a6d35ee92141dfe38e384
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
GRAPHICS: MACMENU: Calculate menu bounds after adding static items

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index cb8c9b5..4ca5413 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -172,6 +172,8 @@ void MacMenu::addStaticMenus(const MacMenuData *data) {
 
 		_items[m->menunum]->subitems.push_back(new MacMenuSubItem(m->title, m->action, 0, m->shortcut, m->enabled));
 	}
+
+	calcDimensions();
 }
 
 int MacMenu::addMenuItem(const char *name) {


Commit: f2b61dd814878523d9619f3655f68bbfe1ba8a87
    https://github.com/scummvm/scummvm/commit/f2b61dd814878523d9619f3655f68bbfe1ba8a87
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
GRAPHICS: MACGUI: Added isMenuActive() helper method

Changed paths:
    graphics/macgui/macwindowmanager.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index a7ebf75..cbc2159 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -223,6 +223,13 @@ void MacWindowManager::activateMenu() {
 	_menu->setVisible(true);
 }
 
+bool MacWindowManager::isMenuActive() {
+	if (!_menu)
+		return false;
+
+	return _menu->isVisible();
+}
+
 void MacWindowManager::setActive(int id) {
 	if (_activeWindow == id)
 		return;
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 7db0d01..07a60cb 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -142,6 +142,8 @@ public:
 
 	void activateMenu();
 
+	bool isMenuActive();
+
 	/**
 	 * Set hot zone where menu appears (works only with autohide menu)
 	 */


Commit: 000d5fcba8f38b579c8de40511f4f13d79acd0df
    https://github.com/scummvm/scummvm/commit/000d5fcba8f38b579c8de40511f4f13d79acd0df
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2018-07-11T22:45:36+02:00

Commit Message:
PINK: Make menu blocking

Changed paths:
    engines/pink/director.cpp
    engines/pink/director.h
    engines/pink/pink.cpp


diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp
index 98446c4..fa333e9 100644
--- a/engines/pink/director.cpp
+++ b/engines/pink/director.cpp
@@ -88,6 +88,12 @@ Director::Director()
 }
 
 void Director::update() {
+	if (isMenuActive()) {
+		_wm.draw();
+		draw();
+		return;
+	}
+
 	for (uint i = 0; i < _sounds.size(); ++i) {
 		_sounds[i]->update();
 	}
@@ -106,6 +112,10 @@ bool Director::processEvent(Common::Event &event) {
 	return _wm.processEvent(event);
 }
 
+bool Director::isMenuActive() {
+	return _wm.isMenuActive();
+}
+
 void Director::addSprite(ActionCEL *sprite) {
 	_sprites.push_back(sprite);
 	int i;
diff --git a/engines/pink/director.h b/engines/pink/director.h
index 803d263..8117343 100644
--- a/engines/pink/director.h
+++ b/engines/pink/director.h
@@ -62,6 +62,8 @@ public:
 
 	void pause(bool pause);
 
+	bool isMenuActive();
+
 	void saveStage();
 	void loadStage();
 
diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp
index 1a06d11..f18df01 100644
--- a/engines/pink/pink.cpp
+++ b/engines/pink/pink.cpp
@@ -147,7 +147,9 @@ Common::Error Pink::PinkEngine::run() {
 			}
 		}
 
-		_actor->update();
+		if (!_director->isMenuActive())
+			_actor->update();
+
 		_director->update();
 		_system->delayMillis(10);
 	}





More information about the Scummvm-git-logs mailing list