VOYEUR: Extra control/group initialisation

This commit is contained in:
Paul Gilbert 2013-12-08 14:44:48 -05:00
parent a86b1c3d58
commit ce3cb58d15
4 changed files with 30 additions and 5 deletions

View File

@ -558,6 +558,7 @@ void StampBoltFile::initControl() {
_state._curMemberPtr->_controlResource = res = new ControlResource(_state,
_state._curMemberPtr->_data);
_state._vm->_controlGroupPtr = _state._curGroupPtr;
_state._vm->_controlPtr = res;
}

View File

@ -41,6 +41,7 @@ VoyeurEngine::VoyeurEngine(OSystem *syst, const VoyeurGameDescription *gameDesc)
_bVoy = NULL;
_iForceDeath = -1;
_controlPtr = NULL;
_stampFlags = 0;
initialiseManagers();
}

View File

@ -66,7 +66,6 @@ private:
Common::Array<int> _resolves;
FontInfoResource _defaultFontInfo;
int _iForceDeath;
byte *_stampData;
void ESP_Init();
void initialiseManagers();
@ -83,6 +82,8 @@ private:
void doOpening();
void playStamp();
void initStamp();
void initUseCount();
void initThreadStruct(byte *threadStruct);
protected:
// Engine APIs
@ -97,7 +98,13 @@ public:
SoundManager _soundManager;
SVoy _voy;
BoltFile *_stampLibPtr;
BoltGroup *_controlGroupPtr;
ControlResource *_controlPtr;
byte *_stampData;
BoltGroup *_stackGroupPtr;
int _stampFlags;
int _stm_useCount[8];
public:
VoyeurEngine(OSystem *syst, const VoyeurGameDescription *gameDesc);
virtual ~VoyeurEngine();

View File

@ -36,12 +36,14 @@ void VoyeurEngine::addVideoEventStart() {
}
void VoyeurEngine::playStamp() {
BoltFile *boltFile = NULL;
_filesManager.openBoltLib("stampblt.blt", boltFile);
_stampLibPtr = NULL;
_filesManager.openBoltLib("stampblt.blt", _stampLibPtr);
boltFile->getBoltGroup(0x10000);
_stampLibPtr->getBoltGroup(0x10000);
_voy._resolvePtr = &RESOLVE_TABLE[0];
PtrResource *threadsList = boltFile->boltEntry(3)._ptrResource;
initStamp();
PtrResource *threadsList = _stampLibPtr->boltEntry(3)._ptrResource;
byte *threadP = threadsList->_entries[0]->_data;
initThreadStruct(threadP);
@ -59,6 +61,20 @@ void VoyeurEngine::playStamp() {
_voy._field4386 = 0;
}
void VoyeurEngine::initStamp() {
_stampFlags &= ~1;
_stackGroupPtr = _controlGroupPtr;
if (_controlPtr->_entries.size() == 0)
error("No control entries");
initUseCount();
}
void VoyeurEngine::initUseCount() {
Common::fill(&_stm_useCount[0], &_stm_useCount[8], 0);
}
void VoyeurEngine::initThreadStruct(byte *threadStruct) {
// TODO
}