mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-15 14:18:37 +00:00
VOYEUR: Implemented support methods needed for doApt
This commit is contained in:
parent
798a93d899
commit
e44fa657e4
@ -110,7 +110,7 @@ public:
|
||||
int _evidence[20];
|
||||
|
||||
Common::Array<VoyeurEvent> _events;
|
||||
byte *_field4376;
|
||||
int _field4376;
|
||||
int _field4378;
|
||||
int _field437A;
|
||||
int _field437C;
|
||||
|
@ -423,6 +423,8 @@ public:
|
||||
static void unloadAllStacks(VoyeurEngine *vm);
|
||||
static int _currentMouseX;
|
||||
static int _currentMouseY;
|
||||
static int _doAptState1;
|
||||
static int _doAptState2;
|
||||
|
||||
static void init();
|
||||
private:
|
||||
@ -449,6 +451,9 @@ private:
|
||||
void savePrevious();
|
||||
void setButtonFlag(int idx, byte bits);
|
||||
void clearButtonFlag(int idx, byte bits);
|
||||
void loadTheApt();
|
||||
void freeTheApt();
|
||||
void doAptAnim(int mode);
|
||||
public:
|
||||
VoyeurEngine *_vm;
|
||||
|
||||
|
@ -33,6 +33,8 @@ byte *ThreadResource::_threadDataPtr;
|
||||
CMapResource *ThreadResource::_cmd14Pal;
|
||||
int ThreadResource::_currentMouseX;
|
||||
int ThreadResource::_currentMouseY;
|
||||
int ThreadResource::_doAptState1;
|
||||
int ThreadResource::_doAptState2;
|
||||
|
||||
void ThreadResource::init() {
|
||||
_stampFlags = 0;
|
||||
@ -41,6 +43,8 @@ void ThreadResource::init() {
|
||||
_cmd14Pal = nullptr;
|
||||
_currentMouseX = 392;
|
||||
_currentMouseY = 57;
|
||||
_doAptState1 = -1;
|
||||
_doAptState2 = -1;
|
||||
}
|
||||
|
||||
ThreadResource::ThreadResource(BoltFilesState &state, const byte *src):
|
||||
@ -764,31 +768,31 @@ void ThreadResource::parsePlayCommands() {
|
||||
|
||||
case 19:
|
||||
_vm->_voy._field472 = 140;
|
||||
_vm->loadTheApt();
|
||||
loadTheApt();
|
||||
_vm->_voy._field472 = 141;
|
||||
_vm->freeTheApt();
|
||||
freeTheApt();
|
||||
break;
|
||||
|
||||
case 20:
|
||||
_vm->_voy._field472 = -1;
|
||||
_vm->loadTheApt();
|
||||
loadTheApt();
|
||||
_vm->_voy._field472 = 141;
|
||||
_vm->freeTheApt();
|
||||
freeTheApt();
|
||||
break;
|
||||
|
||||
case 21:
|
||||
_vm->_voy._field472 = -1;
|
||||
_vm->loadTheApt();
|
||||
loadTheApt();
|
||||
_vm->_voy._field472 = 140;
|
||||
_vm->freeTheApt();
|
||||
freeTheApt();
|
||||
break;
|
||||
|
||||
case 23:
|
||||
_vm->_voy._field474 = 17;
|
||||
_vm->_voy._field472 = -1;
|
||||
_vm->loadTheApt();
|
||||
loadTheApt();
|
||||
_vm->_voy._field472 = 144;
|
||||
_vm->freeTheApt();
|
||||
freeTheApt();
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1050,7 +1054,24 @@ bool ThreadResource::cardPerform2(const byte *pSrc, int cardCmdId) {
|
||||
}
|
||||
|
||||
int ThreadResource::doApt() {
|
||||
warning("TODO: doApt");
|
||||
int varC = -1;
|
||||
loadTheApt();
|
||||
|
||||
_vm->_playStamp2 = 151;
|
||||
byte *dataP = _vm->_bVoy->memberAddr(_vm->_playStamp1);
|
||||
PictureResource *srcPic = _vm->_bVoy->boltEntry(_vm->_playStamp1 + 3)._picResource;
|
||||
_vm->_eventsManager.getMouseInfo();
|
||||
|
||||
if (_doAptState1 == -1) {
|
||||
_doAptState1 = READ_LE_UINT16(dataP + 18) + 16;
|
||||
_doAptState2 = READ_LE_UINT16(dataP + 20) + 16;
|
||||
_vm->_playStamp2 = 153;
|
||||
}
|
||||
|
||||
if (_vm->_voy._field470 == 16) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1319,4 +1340,164 @@ void ThreadResource::clearButtonFlag(int idx, byte bits) {
|
||||
_buttonFlags[idx] &= ~bits;
|
||||
}
|
||||
|
||||
void ThreadResource::loadTheApt() {
|
||||
switch (_vm->_voy._field474) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 17:
|
||||
_vm->_playStamp1 = 0x5700;
|
||||
break;
|
||||
case 3:
|
||||
_vm->_playStamp1 = 0x5800;
|
||||
break;
|
||||
case 4:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
_vm->_playStamp1 = 0x5900;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (_vm->_voy._field472 == 143)
|
||||
_vm->_voy._field472 = -1;
|
||||
|
||||
if (_vm->_voy._field472 != -1) {
|
||||
doAptAnim(1);
|
||||
_vm->_bVoy->getBoltGroup(_vm->_playStamp1);
|
||||
_vm->_voy._field472 = -1;
|
||||
_vm->_graphicsManager._backgroundPage = _vm->_bVoy->boltEntry(
|
||||
_vm->_playStamp1 + 5)._picResource;
|
||||
(*_vm->_graphicsManager._vPort)->setupViewPort(
|
||||
_vm->_graphicsManager._backgroundPage);
|
||||
} else {
|
||||
_vm->_bVoy->getBoltGroup(_vm->_playStamp1);
|
||||
_vm->_graphicsManager._backgroundPage = _vm->_bVoy->boltEntry(
|
||||
_vm->_playStamp1 + 5)._picResource;
|
||||
(*_vm->_graphicsManager._vPort)->setupViewPort(
|
||||
_vm->_graphicsManager._backgroundPage);
|
||||
}
|
||||
|
||||
CMapResource *pal = _vm->_bVoy->boltEntry(_vm->_playStamp1 + 4)._cMapResource;
|
||||
pal->_steps = 1;
|
||||
pal->startFade();
|
||||
|
||||
(*_vm->_graphicsManager._vPort)->_flags |= 8;
|
||||
_vm->_graphicsManager.flipPage();
|
||||
_vm->_eventsManager.sWaitFlip();
|
||||
|
||||
while (!_vm->shouldQuit() && (_vm->_eventsManager._fadeStatus & 1))
|
||||
_vm->_eventsManager.delay(1);
|
||||
}
|
||||
|
||||
void ThreadResource::freeTheApt() {
|
||||
_vm->_graphicsManager.fadeDownICF1(5);
|
||||
(*_vm->_graphicsManager._vPort)->_flags |= 8;
|
||||
_vm->_graphicsManager.flipPage();
|
||||
_vm->_eventsManager.sWaitFlip();
|
||||
|
||||
while (!_vm->shouldQuit() && (_vm->_eventsManager._fadeStatus & 1))
|
||||
_vm->_eventsManager.delay(1);
|
||||
|
||||
_vm->_graphicsManager.fadeUpICF1(0);
|
||||
|
||||
if (_vm->_playStamp2 != -1) {
|
||||
_vm->_soundManager.stopVOCPlay();
|
||||
_vm->_playStamp2 = -1;
|
||||
}
|
||||
|
||||
if (_vm->_voy._field472 == -1) {
|
||||
_vm->_graphicsManager.fadeDownICF(6);
|
||||
} else {
|
||||
doAptAnim(2);
|
||||
}
|
||||
|
||||
if (_vm->_voy._field472 == 140) {
|
||||
_vm->_graphicsManager.screenReset();
|
||||
_vm->_graphicsManager.resetPalette();
|
||||
}
|
||||
|
||||
(*_vm->_graphicsManager._vPort)->setupViewPort(nullptr);
|
||||
_vm->_bVoy->freeBoltGroup(_vm->_playStamp1);
|
||||
_vm->_playStamp1 = -1;
|
||||
_vm->_voy._field4386 = 0;
|
||||
}
|
||||
|
||||
void ThreadResource::doAptAnim(int mode) {
|
||||
_vm->_bVoy->freeBoltGroup(0x10100);
|
||||
|
||||
int id = 0;
|
||||
switch (_vm->_voy._field472) {
|
||||
case 140:
|
||||
id = 0x5A00;
|
||||
break;
|
||||
case 141:
|
||||
id = 0x6000;
|
||||
break;
|
||||
case 142:
|
||||
id = 0x6600;
|
||||
break;
|
||||
case 143:
|
||||
id = 0x6C00;
|
||||
break;
|
||||
case 144:
|
||||
id = 0x6F00;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
int id2 = (id == 0x6C00 || id == 0x6F00) ? 1 : 2;
|
||||
switch (_vm->_voy._field474) {
|
||||
case 3:
|
||||
id += id2 << 8;
|
||||
break;
|
||||
case 4:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
id += id2 << 9;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (mode)
|
||||
id += 0x100;
|
||||
|
||||
if (_vm->_bVoy->getBoltGroup(id)) {
|
||||
CMapResource *pal = _vm->_bVoy->boltEntry(id)._cMapResource;
|
||||
pal->_steps = 1;
|
||||
|
||||
for (int idx = 0; (idx < 6) && !_vm->shouldQuit(); ++idx) {
|
||||
PictureResource *pic = _vm->_bVoy->boltEntry(id + idx)._picResource;
|
||||
(*_vm->_graphicsManager._vPort)->setupViewPort(pic);
|
||||
|
||||
(*_vm->_graphicsManager._vPort)->_flags |= 8;
|
||||
_vm->_graphicsManager.flipPage();
|
||||
_vm->_eventsManager.sWaitFlip();
|
||||
|
||||
_vm->_eventsManager.delay(5);
|
||||
}
|
||||
|
||||
_vm->_bVoy->freeBoltGroup(id);
|
||||
}
|
||||
|
||||
_vm->_bVoy->getBoltGroup(0x10100);
|
||||
}
|
||||
|
||||
} // End of namespace Voyeur
|
||||
|
@ -663,4 +663,47 @@ void GraphicsManager::doScroll(const Common::Point &pt) {
|
||||
error("TODO: doScroll");
|
||||
}
|
||||
|
||||
void GraphicsManager::fadeDownICF1(int steps) {
|
||||
if (steps > 0) {
|
||||
int stepAmount = _vm->_voy._field4378 / steps;
|
||||
|
||||
for (int idx = 0; idx < steps; ++idx) {
|
||||
_vm->_voy._field4378 -= stepAmount;
|
||||
_vm->_eventsManager.delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
_vm->_voy._field4378 = 0;
|
||||
}
|
||||
|
||||
void GraphicsManager::fadeUpICF1(int steps) {
|
||||
if (steps > 0) {
|
||||
int stepAmount = (63 - _vm->_voy._field4378) / steps;
|
||||
|
||||
for (int idx = 0; idx < steps; ++idx) {
|
||||
_vm->_voy._field4378 += stepAmount;
|
||||
_vm->_eventsManager.delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
_vm->_voy._field4378 = 63;
|
||||
}
|
||||
|
||||
void GraphicsManager::fadeDownICF(int steps) {
|
||||
if (steps > 0) {
|
||||
_vm->_eventsManager.mouseOff();
|
||||
int stepAmount1 = _vm->_voy._field4376 / steps;
|
||||
int stepAmount2 = _vm->_voy._field4378 / steps;
|
||||
|
||||
for (int idx = 0; idx < steps; ++idx) {
|
||||
_vm->_voy._field4376 -= stepAmount1;
|
||||
_vm->_voy._field4378 -= stepAmount2;
|
||||
_vm->_eventsManager.delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
_vm->_voy._field4376 = 0;
|
||||
_vm->_voy._field4378 = 0;
|
||||
}
|
||||
|
||||
} // End of namespace Voyeur
|
||||
|
@ -112,6 +112,9 @@ public:
|
||||
void setColor(int idx, byte r, byte g, byte b);
|
||||
void screenReset();
|
||||
void doScroll(const Common::Point &pt);
|
||||
void fadeDownICF1(int steps);
|
||||
void fadeUpICF1(int steps);
|
||||
void fadeDownICF(int steps);
|
||||
};
|
||||
|
||||
} // End of namespace Voyeur
|
||||
|
@ -134,7 +134,7 @@ void VoyeurEngine::globalInitBolt() {
|
||||
// Setup default flags
|
||||
Common::fill((byte *)&_voy, (byte *)&_voy + sizeof(SVoy), 0);
|
||||
_voy._field478 = 1;
|
||||
_voy._field4376 = nullptr; // Original set 63h:63h
|
||||
_voy._field4376 = _voy._field4378 = 127;
|
||||
_voy._field4F2 = 9999;
|
||||
_voy._field472 = -1;
|
||||
_voy._field478 = 256;
|
||||
|
@ -87,7 +87,6 @@ private:
|
||||
void closeStamp();
|
||||
void reviewTape();
|
||||
bool doGossip();
|
||||
int doApt();
|
||||
void doTapePlaying();
|
||||
bool checkForMurder();
|
||||
void checkForIncriminate();
|
||||
@ -144,8 +143,6 @@ public:
|
||||
* Saves the last time the game was played
|
||||
*/
|
||||
void saveLastInplay();
|
||||
void loadTheApt();
|
||||
void freeTheApt();
|
||||
void makeViewFinder();
|
||||
void initIFace();
|
||||
void checkTransition();
|
||||
|
@ -69,7 +69,7 @@ void VoyeurEngine::playStamp() {
|
||||
buttonId = threadP->doInterface();
|
||||
|
||||
if (buttonId == -2) {
|
||||
switch (doApt()) {
|
||||
switch (threadP->doApt()) {
|
||||
case 0:
|
||||
_voy._field472 = 140;
|
||||
break;
|
||||
@ -237,11 +237,6 @@ bool VoyeurEngine::doGossip() {
|
||||
return false;
|
||||
}
|
||||
|
||||
int VoyeurEngine::doApt() {
|
||||
warning("TODO");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void VoyeurEngine::doTapePlaying() {
|
||||
warning("TODO");
|
||||
}
|
||||
@ -264,14 +259,6 @@ int VoyeurEngine::getChooseButton() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void VoyeurEngine::loadTheApt() {
|
||||
error("TODO: loadTheApt");
|
||||
}
|
||||
|
||||
void VoyeurEngine::freeTheApt() {
|
||||
error("TODO: freeTheApt");
|
||||
}
|
||||
|
||||
void VoyeurEngine::makeViewFinder() {
|
||||
error("TODO:makeViewFinder");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user