aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins
diff options
context:
space:
mode:
authorPaul Gilbert2012-12-02 22:14:03 +1100
committerPaul Gilbert2012-12-02 22:14:03 +1100
commit222c3f2661f1c5a747728405ed934f3ae273f5f1 (patch)
treeb685e1c1146000333001e0a3394036c0cce9fef9 /engines/hopkins
parent4631b46f347122b35e5ebf0a383364da0bce9981 (diff)
downloadscummvm-rg350-222c3f2661f1c5a747728405ed934f3ae273f5f1.tar.gz
scummvm-rg350-222c3f2661f1c5a747728405ed934f3ae273f5f1.tar.bz2
scummvm-rg350-222c3f2661f1c5a747728405ed934f3ae273f5f1.zip
HOPKINS: Implemented ADULT() method needed for Windows demo
Diffstat (limited to 'engines/hopkins')
-rw-r--r--engines/hopkins/hopkins.cpp57
-rw-r--r--engines/hopkins/hopkins.h4
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();