[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