ASYLUM: Remove Puzzle::reset() functions
- Recreate all puzzle instances on reset - Clear shared data directly from the AsylumEngine::reset() function
This commit is contained in:
parent
55a9a133da
commit
6b4f3435c0
10 changed files with 15 additions and 51 deletions
|
@ -260,11 +260,19 @@ void AsylumEngine::reset() {
|
|||
_menu->setGameStarted();
|
||||
|
||||
// Reset puzzles
|
||||
for (uint32 i = 0; i < ARRAYSIZE(_puzzles); i++)
|
||||
if (_puzzles[i] != NULL)
|
||||
_puzzles[i]->reset();
|
||||
for (uint i = 0; i < ARRAYSIZE(_puzzles); i++)
|
||||
delete _puzzles[i];
|
||||
|
||||
// FIXME reset shared actor data
|
||||
initPuzzles();
|
||||
|
||||
// Reset shared data
|
||||
for (uint32 i = 0; i < 37; i++)
|
||||
_data.setData(i, 160);
|
||||
|
||||
_data.setData(37, 1);
|
||||
|
||||
// Reset special palette info
|
||||
_special->reset(true);
|
||||
}
|
||||
|
||||
void AsylumEngine::playIntro() {
|
||||
|
|
|
@ -72,12 +72,6 @@ PuzzleClock::PuzzleClock(AsylumEngine *engine) : Puzzle(engine) {
|
|||
PuzzleClock::~PuzzleClock() {
|
||||
}
|
||||
|
||||
void PuzzleClock::reset() {
|
||||
_frameIndexes[0] = 0;
|
||||
_frameIndexes[1] = 6;
|
||||
_frameIndexes[2] = 10;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Event Handling
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -34,8 +34,6 @@ public:
|
|||
PuzzleClock(AsylumEngine *engine);
|
||||
~PuzzleClock();
|
||||
|
||||
void reset();
|
||||
|
||||
private:
|
||||
uint32 _frameIndexes[3];
|
||||
bool _showCursor;
|
||||
|
|
|
@ -57,25 +57,6 @@ PuzzleFisherman::PuzzleFisherman(AsylumEngine *engine) : Puzzle(engine) {
|
|||
PuzzleFisherman::~PuzzleFisherman() {
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Reset
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void PuzzleFisherman::reset() {
|
||||
memset(&_state, 0, sizeof(_state));
|
||||
_dword_45AAD4 = false;
|
||||
|
||||
// Original setups polygons here
|
||||
|
||||
_dword_45A130 = false;
|
||||
_counter = 0;
|
||||
|
||||
// Original resets scene fields, but since we are called during a restart, the whole scene is recreated later anyway
|
||||
/*for (uint32 i = 0; i < 6; i++) {
|
||||
getWorld()->field_E8610[i] = 0;
|
||||
getWorld()->field_E8628[i] = 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Event Handling
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -34,8 +34,6 @@ public:
|
|||
PuzzleFisherman(AsylumEngine *engine);
|
||||
~PuzzleFisherman();
|
||||
|
||||
void reset();
|
||||
|
||||
private:
|
||||
bool _state[6];
|
||||
int32 _counter;
|
||||
|
|
|
@ -87,8 +87,8 @@ void PuzzleHiveControl::reset() {
|
|||
_colorL = _colorR = 0;
|
||||
_frameIndexOffset = 0;
|
||||
|
||||
memset(&_glyphFlags, false, sizeof(_glyphFlags));
|
||||
memset(&_wingsState, false, sizeof(_wingsState));
|
||||
memset(&_glyphFlags, false, sizeof(_glyphFlags));
|
||||
memset(&_wingsState, false, sizeof(_wingsState));
|
||||
|
||||
_frameIndexes[kElementSwirlRim] = 0;
|
||||
if (_leverPosition != _prevLeverPosition) {
|
||||
|
|
|
@ -60,7 +60,6 @@ public:
|
|||
~PuzzleHiveControl();
|
||||
|
||||
bool hitTest1(uint32 resourceId, Common::Point point, Common::Point location);
|
||||
void reset();
|
||||
|
||||
private:
|
||||
enum Element {
|
||||
|
@ -114,6 +113,7 @@ private:
|
|||
Control findControl();
|
||||
void updateScreen();
|
||||
void playSound();
|
||||
void reset();
|
||||
};
|
||||
|
||||
} // End of namespace Asylum
|
||||
|
|
|
@ -51,17 +51,6 @@ PuzzleLock::PuzzleLock(AsylumEngine *engine) : Puzzle(engine) {
|
|||
PuzzleLock::~PuzzleLock() {
|
||||
}
|
||||
|
||||
void PuzzleLock::reset() {
|
||||
_frameIndexes[0] = 4;
|
||||
_frameIndexes[1] = 4;
|
||||
_frameIndexes[2] = 4;
|
||||
|
||||
for (uint32 i = 0; i < 37; i++)
|
||||
getSharedData()->setData(i, 160);
|
||||
|
||||
getSharedData()->setData(37, 1);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Event Handling
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -34,8 +34,6 @@ public:
|
|||
PuzzleLock(AsylumEngine *engine);
|
||||
~PuzzleLock();
|
||||
|
||||
void reset();
|
||||
|
||||
private:
|
||||
int32 _frameIndexes[7];
|
||||
bool _incrementLock;
|
||||
|
|
|
@ -43,8 +43,6 @@ public:
|
|||
Puzzle(AsylumEngine *engine);
|
||||
virtual ~Puzzle();
|
||||
|
||||
virtual void reset() {}
|
||||
|
||||
bool handleEvent(const AsylumEvent &evt);
|
||||
|
||||
protected:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue