From 86a0d366e4f1234ea2f40c770efb2fffe292c9a9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 31 Dec 2013 16:36:28 -1000 Subject: VOYEUR: Implemented game ending title and credits --- engines/voyeur/staticres.cpp | 13 +++++++++ engines/voyeur/staticres.h | 2 ++ engines/voyeur/voyeur_game.cpp | 60 +++++++++++++++++++++++++++++++----------- 3 files changed, 59 insertions(+), 16 deletions(-) (limited to 'engines') diff --git a/engines/voyeur/staticres.cpp b/engines/voyeur/staticres.cpp index d0f590eab3..7bba6517fe 100644 --- a/engines/voyeur/staticres.cpp +++ b/engines/voyeur/staticres.cpp @@ -126,4 +126,17 @@ int DOT_LINE_LENGTH[9] = { 5, 7, 9, 11, 11, 11, 9, 7, 5 }; +const char *const PIRACY_MESSAGE[] = { + "It is illegal to make", + "unauthorized copies of", + "this software. Duplication", + "of this software for any", + "reason including sale,", + "loan, rental, or gift is a", + "crime. Penalties include", + "fines of up to $50,000", + "and jail terms up to", + "5 years." +}; + } // End of namespace Voyeur diff --git a/engines/voyeur/staticres.h b/engines/voyeur/staticres.h index a6b81f06d6..20bffe01e3 100644 --- a/engines/voyeur/staticres.h +++ b/engines/voyeur/staticres.h @@ -56,6 +56,8 @@ extern int DOT_LINE_START[9]; extern int DOT_LINE_OFFSET[9]; extern int DOT_LINE_LENGTH[9]; +extern const char *const PIRACY_MESSAGE[]; + } // End of namespace Voyeur #endif diff --git a/engines/voyeur/voyeur_game.cpp b/engines/voyeur/voyeur_game.cpp index c0989e2206..c57de37162 100644 --- a/engines/voyeur/voyeur_game.cpp +++ b/engines/voyeur/voyeur_game.cpp @@ -226,7 +226,6 @@ void VoyeurEngine::closeStamp() { } void VoyeurEngine::doTailTitle() { - _bVoy->freeBoltGroup(0x100); (*_graphicsManager._vPort)->setupViewPort(NULL); _graphicsManager.screenReset(); @@ -276,7 +275,7 @@ void VoyeurEngine::doClosingCredits() { return; const char *msg = (const char *)_bVoy->memberAddr(0x404); - const byte *yList = (const byte *)_bVoy->memberAddr(0x405); + const byte *creditList = (const byte *)_bVoy->memberAddr(0x405); (*_graphicsManager._vPort)->setupViewPort(NULL); _graphicsManager.setColor(1, 180, 180, 180); @@ -294,17 +293,17 @@ void VoyeurEngine::doClosingCredits() { FontInfoResource &fi = *_graphicsManager._fontPtr; for (int idx = 0; idx < 78; ++idx) { - byte *entry = yList + idx * 6; + const byte *entry = creditList + idx * 6; int flags = READ_LE_UINT16(entry + 4); if (flags & 0x10) - (*_graphicsManager->_vPort)->sFillPic(); + (*_graphicsManager._vPort)->fillPic(); if (flags & 1) { fi._foreColor = 1; fi._curFont = _bVoy->boltEntry(0x402)._fontResource; - fi.justify = true; - fi.justifyWidth = 384; + fi._justify = ALIGN_CENTRE; + fi._justifyWidth = 384; fi._justifyHeight = 240; fi._pos = Common::Point(0, READ_LE_UINT16(entry)); @@ -315,8 +314,8 @@ void VoyeurEngine::doClosingCredits() { if (flags & 0x40) { fi._foreColor = 2; fi._curFont = _bVoy->boltEntry(0x400)._fontResource; - fi.justify = true; - fi.justifyWidth = 384; + fi._justify = ALIGN_CENTRE; + fi._justifyWidth = 384; fi._justifyHeight = 240; fi._pos = Common::Point(0, READ_LE_UINT16(entry)); @@ -327,8 +326,8 @@ void VoyeurEngine::doClosingCredits() { if (flags & 2) { fi._foreColor = 1; fi._curFont = _bVoy->boltEntry(0x400)._fontResource; - fi.justify = false; - fi.justifyWidth = 384; + fi._justify = ALIGN_LEFT; + fi._justifyWidth = 384; fi._justifyHeight = 240; fi._pos = Common::Point(38, READ_LE_UINT16(entry)); @@ -336,8 +335,8 @@ void VoyeurEngine::doClosingCredits() { msg += strlen(msg) + 1; fi._foreColor = 2; - fi.justify = false; - fi.justifyWidth = 384; + fi._justify = ALIGN_LEFT; + fi._justifyWidth = 384; fi._justifyHeight = 240; fi._pos = Common::Point(198, READ_LE_UINT16(entry)); @@ -348,8 +347,8 @@ void VoyeurEngine::doClosingCredits() { if (flags & 4) { fi._foreColor = 1; fi._curFont = _bVoy->boltEntry(0x402)._fontResource; - fi.justify = true; - fi.justifyWidth = 384; + fi._justify = ALIGN_CENTRE; + fi._justifyWidth = 384; fi._justifyHeight = 240; fi._pos = Common::Point(0, READ_LE_UINT16(entry)); @@ -358,8 +357,8 @@ void VoyeurEngine::doClosingCredits() { fi._foreColor = 2; fi._curFont = _bVoy->boltEntry(0x400)._fontResource; - fi.justify = true; - fi.justifyWidth = 384; + fi._justify = ALIGN_CENTRE; + fi._justifyWidth = 384; fi._justifyHeight = 240; fi._pos = Common::Point(0, READ_LE_UINT16(entry) + 13); @@ -382,7 +381,36 @@ void VoyeurEngine::doClosingCredits() { } void VoyeurEngine::doPiracy() { + _graphicsManager.screenReset(); + _graphicsManager.setColor(1, 0, 0, 0); + _graphicsManager.setColor(2, 255, 255, 255); + _eventsManager._intPtr.field38 = true; + _eventsManager._intPtr._hasPalette = true; + (*_graphicsManager._vPort)->setupViewPort(NULL); + (*_graphicsManager._vPort)->fillPic(1); + FontInfoResource &fi = *_graphicsManager._fontPtr; + fi._curFont = _bVoy->boltEntry(0x101)._fontResource; + fi._foreColor = 2; + fi._backColor = 2; + fi._fontSaveBack = false; + fi._fontFlags = 0; + fi._justify = ALIGN_CENTRE; + fi._justifyWidth = 384; + fi._justifyHeight = 230; + + // Loop through the piracy message array to draw each line + int yp, idx; + for (idx = 0, yp = 33; idx < 10; ++idx) { + fi._pos = Common::Point(0, yp); + (*_graphicsManager._vPort)->drawText(PIRACY_MESSAGE[idx]); + + yp += fi._curFont->_fontHeight + 4; + } + + flipPageAndWait(); + _eventsManager.getMouseInfo(); + _eventsManager.delayClick(720); } void VoyeurEngine::reviewTape() { -- cgit v1.2.3