diff options
-rw-r--r-- | engines/hopkins/hopkins.cpp | 57 | ||||
-rw-r--r-- | engines/hopkins/hopkins.h | 4 |
2 files changed, 60 insertions, 1 deletions
diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp index d04b926f08..d4d5411054 100644 --- a/engines/hopkins/hopkins.cpp +++ b/engines/hopkins/hopkins.cpp @@ -181,7 +181,10 @@ bool HopkinsEngine::runWin95Demo() { memset(_globals.SAUVEGARDE, 0, 2000); _globals.SORTIE = 0; _globals.PASSWORD = true; - warning("TODO ADULT();"); + + if (!ADULT()) + return Common::kNoError; + // v37 = v35; LABEL_18: if (_globals.SORTIE == 300) @@ -3090,4 +3093,56 @@ void HopkinsEngine::syncSoundSettings() { void HopkinsEngine::NO_DISPO(int sortie) { warning("STUB - NO_DISPO"); } + +bool HopkinsEngine::ADULT() { + int xp, yp; + int buttonIndex; + + _graphicsManager.min_x = 0; + _graphicsManager.min_y = 0; + _graphicsManager.max_x = SCREEN_WIDTH; + _graphicsManager.max_y = SCREEN_HEIGHT - 1; + _eventsManager.CASSE = false; + _globals.FORET = false; + _globals.FLAG_VISIBLE = false; + _globals.DESACTIVE_INVENT = true; + _globals.SORTIE = false; + + _graphicsManager.LOAD_IMAGE("ADULT"); + _graphicsManager.FADE_INW(); + _eventsManager.MOUSE_ON(); + _eventsManager.CHANGE_MOUSE(0); + _eventsManager.btsouris = false; + _eventsManager.souris_n = false; + + do { + xp = _eventsManager.XMOUSE(); + yp = _eventsManager.YMOUSE(); + + buttonIndex = 0; + if (xp >= 37 && xp <= 169 && yp >= 406 && yp <= 445) + buttonIndex = 2; + else if (xp >= 424 && xp <= 602 && yp >= 406 && yp <= 445) + buttonIndex = 1; + + _eventsManager.VBL(); + } while (!shouldQuit() && (buttonIndex == 0 || _eventsManager.BMOUSE() != 1)); + + _globals.DESACTIVE_INVENT = false; + _globals.FLAG_VISIBLE = false; + _graphicsManager.FADE_OUTW(); + + if (buttonIndex != 2) { + // Quit game + return false; + } else { + // Continue + _graphicsManager.min_x = 0; + _graphicsManager.max_y = 20; + _graphicsManager.max_x = SCREEN_WIDTH; + _graphicsManager.max_y = SCREEN_HEIGHT - 20; + return true; + } +} + } // End of namespace Hopkins diff --git a/engines/hopkins/hopkins.h b/engines/hopkins/hopkins.h index 7663926566..81d8f6b2cd 100644 --- a/engines/hopkins/hopkins.h +++ b/engines/hopkins/hopkins.h @@ -115,6 +115,10 @@ private: bool runLinuxDemo(); bool runLinuxFull(); + /** + * Show warning screen about the game being adults only. + */ + bool ADULT(); protected: // Engine APIs virtual Common::Error run(); |