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:
Julien Templier 2011-07-25 06:05:35 -04:00 committed by Eugene Sandulenko
parent 55a9a133da
commit 6b4f3435c0
No known key found for this signature in database
GPG key ID: 014D387312D34F08
10 changed files with 15 additions and 51 deletions

View file

@ -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() {

View file

@ -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
//////////////////////////////////////////////////////////////////////////

View file

@ -34,8 +34,6 @@ public:
PuzzleClock(AsylumEngine *engine);
~PuzzleClock();
void reset();
private:
uint32 _frameIndexes[3];
bool _showCursor;

View file

@ -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
//////////////////////////////////////////////////////////////////////////

View file

@ -34,8 +34,6 @@ public:
PuzzleFisherman(AsylumEngine *engine);
~PuzzleFisherman();
void reset();
private:
bool _state[6];
int32 _counter;

View file

@ -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) {

View file

@ -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

View file

@ -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
//////////////////////////////////////////////////////////////////////////

View file

@ -34,8 +34,6 @@ public:
PuzzleLock(AsylumEngine *engine);
~PuzzleLock();
void reset();
private:
int32 _frameIndexes[7];
bool _incrementLock;

View file

@ -43,8 +43,6 @@ public:
Puzzle(AsylumEngine *engine);
virtual ~Puzzle();
virtual void reset() {}
bool handleEvent(const AsylumEvent &evt);
protected: