diff options
-rw-r--r-- | engines/pink/director.cpp | 6 | ||||
-rw-r--r-- | engines/pink/director.h | 6 | ||||
-rw-r--r-- | engines/pink/pink.cpp | 15 | ||||
-rw-r--r-- | engines/pink/pink.h | 2 |
4 files changed, 17 insertions, 12 deletions
diff --git a/engines/pink/director.cpp b/engines/pink/director.cpp index 97df17436a..4d16709357 100644 --- a/engines/pink/director.cpp +++ b/engines/pink/director.cpp @@ -76,15 +76,15 @@ static const Graphics::MacMenuData menuSubItems[] = { }; -Director::Director() +Director::Director(Common::PEResources &exe) : _surface(640, 480) { _wm.setScreen(&_surface); _wm.setMode(Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu | Graphics::kWMModalMenuMode); _wm.setMenuHotzone(Common::Rect(0, 0, 640, 23)); _wm.setMenuDelay(250000); - _menu = _wm.addMenu(); - _menu->addStaticMenus(menuSubItems); + _menu = Graphics::MacMenu::createMenuFromPEexe(exe, &_wm); + _menu->calcDimensions(); } void Director::update() { diff --git a/engines/pink/director.h b/engines/pink/director.h index 842330c1f0..e2526adfc2 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 Common { + class PEResources; +} + namespace Graphics { class MacMenu; } @@ -42,7 +46,7 @@ class ActionSound; class Director { public: - Director(); + Director(Common::PEResources &exe); void update(); bool processEvent(Common::Event &event); diff --git a/engines/pink/pink.cpp b/engines/pink/pink.cpp index 73c6f5ec5a..4f7e84f595 100644 --- a/engines/pink/pink.cpp +++ b/engines/pink/pink.cpp @@ -72,8 +72,13 @@ Common::Error PinkEngine::init() { initGraphics(640, 480); + Common::PEResources exeResources; + Common::String fileName = isPeril() ? "pptp.exe" : "hpp.exe"; + exeResources.loadFromEXE(fileName); + + _console = new Console(this); - _director = new Director(); + _director = new Director(exeResources); _director->getWndManager().setEnginePauseCallback(this, &pauseEngine); @@ -90,7 +95,7 @@ Common::Error PinkEngine::init() { if (!_orb.open(orbName) || (_bro && !_bro->open(broName) && _orb.getTimestamp() == _bro->getTimestamp())) return Common::kNoGameDataFoundError; - if (!loadCursors()) + if (!loadCursors(exeResources)) return Common::kNoGameDataFoundError; setCursor(kLoadingCursor); @@ -229,12 +234,8 @@ bool PinkEngine::checkValueOfVariable(Common::String &variable, Common::String & return _variables[variable] == value; } -bool PinkEngine::loadCursors() { - Common::PEResources exeResources; +bool PinkEngine::loadCursors(Common::PEResources &exeResources) { bool isPokus = !isPeril(); - Common::String fileName = isPokus ? "hpp.exe" : "pptp.exe"; - if (!exeResources.loadFromEXE(fileName)) - return false; _cursors.reserve(kCursorsCount); diff --git a/engines/pink/pink.h b/engines/pink/pink.h index faed498a8f..ac70e1bca7 100644 --- a/engines/pink/pink.h +++ b/engines/pink/pink.h @@ -122,7 +122,7 @@ public: private: Common::Error init(); - bool loadCursors(); + bool loadCursors(Common::PEResources &exeResources); void initModule(const Common::String &moduleName, const Common::String &pageName, Archive *saveFile); void addModule(const Common::String &moduleName); |