NEVERHOOD: Work on Module1600:

- Rename stuff (also in related files)
This commit is contained in:
johndoe123 2012-10-05 21:55:51 +00:00 committed by Willem Jan Palenstijn
parent cb5ca83578
commit b320c9f5a0
9 changed files with 449 additions and 441 deletions

View File

@ -304,12 +304,13 @@ void GameModule::startup() {
setGlobalVar(0x0A18CA33, 0);
setGlobalVar(0x0112090A, 0);
//setGlobalVar(0x000CF819, 1);
setGlobalVar(0x04A105B3, 2);
// <<<DEBUG
#if 1
_vm->gameState().sceneNum = 7;
createModule(1300, -1);
_vm->gameState().sceneNum = 8;
createModule(1600, -1);
#endif
#if 0
_vm->gameState().sceneNum = 0;

View File

@ -1608,6 +1608,7 @@ Scene1405::Scene1405(NeverhoodEngine *vm, Module *parentModule, int which)
setPalette(0x0C0C007D);
insertMouse435(0xC00790C8, 20, 620);
// DEBUG>>>
// TODO: Some debug code: Leave two matching tiles open
for (int i = 0; i < 48; i++)
setSubVar(0xCCE0280F, i, 1);
@ -1619,6 +1620,7 @@ Scene1405::Scene1405(NeverhoodEngine *vm, Module *parentModule, int which)
break;
}
}
// <<<DEBUG
for (uint32 tileIndex = 0; tileIndex < 48; tileIndex++) {
_tiles[tileIndex] = insertSprite<AsScene1405Tile>(this, tileIndex);

View File

@ -132,8 +132,10 @@ void Scene1501::update() {
uint32 Scene1501::handleMessage(int messageNum, const MessageParam &param, Entity *sender) {
uint32 messageResult = Scene::handleMessage(messageNum, param, sender);
if (messageNum == 0x0009) {
switch (messageNum) {
case 0x0009:
_flag = true;
break;
}
return messageResult;
}

File diff suppressed because it is too large Load Diff

View File

@ -41,10 +41,10 @@ protected:
void updateScene();
};
class Class521 : public AnimatedSprite {
class AsCommonCar : public AnimatedSprite {
public:
Class521(NeverhoodEngine *vm, Scene *parentScene, int16 x, int16 y);
~Class521();
AsCommonCar(NeverhoodEngine *vm, Scene *parentScene, int16 x, int16 y);
~AsCommonCar();
void setPathPoints(NPointArray *pathPoints);
protected:
Scene *_parentScene;
@ -105,33 +105,33 @@ protected:
void sub45E0A0();
};
class Class546 : public AnimatedSprite {
class AsScene1608Door : public AnimatedSprite {
public:
Class546(NeverhoodEngine *vm, Scene *parentScene);
AsScene1608Door(NeverhoodEngine *vm, Scene *parentScene);
protected:
Scene *_parentScene;
uint32 handleMessage(int messageNum, const MessageParam &param, Entity *sender);
void sub44D710();
void sub44D760();
void sub44D790();
void sub44D7F0();
void stOpenDoor();
void stOpenDoorDone();
void stCloseDoor();
void stCloseDoorDone();
};
class Class547 : public AnimatedSprite {
class AsScene1608IdleCarLower : public AnimatedSprite {
public:
Class547(NeverhoodEngine *vm, int16 x, int16 y);
AsScene1608IdleCarLower(NeverhoodEngine *vm, int16 x, int16 y);
};
class Class548 : public AnimatedSprite {
class AsScene1608IdleCarFull : public AnimatedSprite {
public:
Class548(NeverhoodEngine *vm, int16 x, int16 y);
AsScene1608IdleCarFull(NeverhoodEngine *vm, int16 x, int16 y);
};
class Class518 : public AnimatedSprite {
class AsCommonCarConnector : public AnimatedSprite {
public:
Class518(NeverhoodEngine *vm, Class521 *class521);
AsCommonCarConnector(NeverhoodEngine *vm, AsCommonCar *asCar);
protected:
Class521 *_class521;
AsCommonCar *_asCar;
void update();
};
@ -140,34 +140,34 @@ public:
Scene1608(NeverhoodEngine *vm, Module *parentModule, int which);
~Scene1608();
protected:
Class521 *_class521;
AsCommonCar *_asCar;
Sprite *_class545;
Sprite *_class546;
Sprite *_class547;
Sprite *_class548;
Sprite *_asDoor;
Sprite *_asIdleCarLower;
Sprite *_asIdleCarFull;
Sprite *_sprite1;
Sprite *_sprite2;
Sprite *_sprite3;
Sprite *_asTape;
Klayman *_klayman2;
Klayman *_kmScene1608;
NRect _rect1;
NRect _rect2;
NRect _rect3;
int _flag1;
bool _flag2;
bool _flag3;
bool _flag4;
int _carStatus;
bool _carClipFlag;
bool _klaymanInCar;
int _countdown1;
NPointArray *_roomPathPoints;
void update44CE90();
void update44CED0();
void update44CFE0();
void update44D0C0();
void update44D1E0();
uint32 handleMessage44D2A0(int messageNum, const MessageParam &param, Entity *sender);
uint32 handleMessage44D3C0(int messageNum, const MessageParam &param, Entity *sender);
uint32 handleMessage44D470(int messageNum, const MessageParam &param, Entity *sender);
uint32 handleMessage44D510(int messageNum, const MessageParam &param, Entity *sender);
void upLowerFloor();
void upUpperFloor();
void upCarAtHome();
void upGettingOutOfCar();
void upRidingCar();
uint32 hmLowerFloor(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmUpperFloor(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmRidingCar(int messageNum, const MessageParam &param, Entity *sender);
uint32 hmCarAtHome(int messageNum, const MessageParam &param, Entity *sender);
void updateKlaymanCliprect();
};
class Scene1609 : public Scene {
@ -176,12 +176,12 @@ public:
protected:
Sprite *_ssButton;
AsScene3011Symbol *_asSymbols[12];
int _index1;
int _index2;
int _index3;
int _currentSymbolIndex;
int _noisySymbolIndex;
int _symbolPosition;
int _countdown1;
bool _flag5;
bool _flag6;
bool _changeCurrentSymbol;
bool _isSolved;
void update();
uint32 handleMessage(int messageNum, const MessageParam &param, Entity *sender);
bool testVars();

View File

@ -249,7 +249,7 @@ Scene2501::Scene2501(NeverhoodEngine *vm, Module *parentModule, int which)
_class437 = createSprite<Class437>(0x99BE9015); // Don't add this to the sprite list
addEntity(_class437);
_class521 = createSprite<Class521>(this, 211, 400); // Create but don't add to the sprite list yet
_asCar = createSprite<AsCommonCar>(this, 211, 400); // Create but don't add to the sprite list yet
_class541 = insertSprite<Class541>(211, 400);
_class542 = insertSprite<Class542>(211, 400);
insertStaticSprite(0xC42AC521, 1500);
@ -262,11 +262,11 @@ Scene2501::Scene2501(NeverhoodEngine *vm, Module *parentModule, int which)
setRectList(0x004B2608);
SetMessageHandler(&Scene2501::handleMessage);
SetUpdateHandler(&Scene2501::update);
sendMessage(_class521, 0x2009, 0);
_class521->setVisible(false);
sendMessage(_asCar, 0x2009, 0);
_asCar->setVisible(false);
_currTrackIndex = 0;
} else if (which == 1 || which == 2) {
addSprite(_class521);
addSprite(_asCar);
_kmScene2501 = (Klayman*)new KmScene2501(_vm, this, 275, 393);
_klaymanInCar = true;
sendMessage(_kmScene2501, 0x2000, 1);
@ -284,33 +284,33 @@ Scene2501::Scene2501(NeverhoodEngine *vm, Module *parentModule, int which)
setRectList(0x004B2608);
SetMessageHandler(&Scene2501::handleMessage);
SetUpdateHandler(&Scene2501::update);
sendMessage(_class521, 0x2009, 0);
_class521->setVisible(false);
sendMessage(_asCar, 0x2009, 0);
_asCar->setVisible(false);
_currTrackIndex = 0;
}
_class517 = insertSprite<Class517>(_class521, _class437->getSurface(), 4);
_class520 = insertSprite<Class520>(_class521, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_class521, _class437->getSurface(), 4);
insertSprite<Class518>(_class521);
_class517 = insertSprite<Class517>(_asCar, _class437->getSurface(), 4);
_class520 = insertSprite<Class520>(_asCar, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_asCar, _class437->getSurface(), 4);
insertSprite<AsCommonCarConnector>(_asCar);
_pointListsCount = 3;
_newTrackIndex = -1;
_dataResource.load(calcHash("Ashooded"));
_trackPoints = _dataResource.getPointArray(_sceneInfos[_currTrackIndex]->pointListName);
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (which >= 0 && _sceneInfos[_currTrackIndex]->which2 == which) {
NPoint testPoint = (*_trackPoints)[_trackPoints->size() - 1];
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
if (testPoint.x < 0 || testPoint.x >= 640 || testPoint.y < 0 || testPoint.y >= 480)
sendMessage(_class521, 0x2007, 150);
sendMessage(_asCar, 0x2007, 150);
} else {
NPoint testPoint = (*_trackPoints)[0];
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
if (testPoint.x < 0 || testPoint.x >= 640 || testPoint.y < 0 || testPoint.y >= 480)
sendMessage(_class521, 0x2008, 150);
sendMessage(_asCar, 0x2008, 150);
}
_carStatus = 0;
@ -322,23 +322,23 @@ Scene2501::~Scene2501() {
if (_klaymanInCar)
delete _kmScene2501;
else
delete _class521;
delete _asCar;
}
void Scene2501::update() {
Scene::update();
if (_carStatus == 1) {
removeSprite(_klayman);
addSprite(_class521);
addSprite(_asCar);
clearRectList();
_klaymanInCar = true;
SetMessageHandler(&Scene2501::hmCarAtHome);
SetUpdateHandler(&Scene2501::upCarAtHome);
_class541->setVisible(false);
_class542->setVisible(false);
_class521->setVisible(true);
sendMessage(_class521, 0x2009, 0);
_class521->handleUpdate();
_asCar->setVisible(true);
sendMessage(_asCar, 0x2009, 0);
_asCar->handleUpdate();
_klayman = NULL;
_carStatus = 0;
}
@ -348,8 +348,8 @@ void Scene2501::update() {
void Scene2501::upCarAtHome() {
Scene::update();
if (_mouseClicked) {
if (_mouseClickPos.x <= 210 && _class521->getX() == 211 && _class521->getY() == 400) {
sendMessage(_class521, 0x200A, 0);
if (_mouseClickPos.x <= 210 && _asCar->getX() == 211 && _asCar->getY() == 400) {
sendMessage(_asCar, 0x200A, 0);
SetUpdateHandler(&Scene2501::upGettingOutOfCar);
} else {
findClosestTrack(_mouseClickPos);
@ -365,7 +365,7 @@ void Scene2501::upGettingOutOfCar() {
Scene::update();
if (_carStatus == 2) {
_klayman = _kmScene2501;
removeSprite(_class521);
removeSprite(_asCar);
addSprite(_klayman);
_klaymanInCar = false;
SetMessageHandler(&Scene2501::handleMessage);
@ -373,7 +373,7 @@ void Scene2501::upGettingOutOfCar() {
setRectList(0x004B2608);
_class541->setVisible(true);
_class542->setVisible(true);
_class521->setVisible(false);
_asCar->setVisible(false);
setMessageList(0x004B2570);
runMessageList();
_klayman->handleUpdate();
@ -413,7 +413,7 @@ uint32 Scene2501::hmRidingCar(int messageNum, const MessageParam &param, Entity
} else if (_sceneInfos[_currTrackIndex]->which1 == 0) {
SetMessageHandler(&Scene2501::hmCarAtHome);
SetUpdateHandler(&Scene2501::upCarAtHome);
sendMessage(_class521, 0x200F, 1);
sendMessage(_asCar, 0x200F, 1);
} else if (_sceneInfos[_currTrackIndex]->which1 > 0) {
leaveScene(_sceneInfos[_currTrackIndex]->which1);
}
@ -424,7 +424,7 @@ uint32 Scene2501::hmRidingCar(int messageNum, const MessageParam &param, Entity
} else if (_sceneInfos[_currTrackIndex]->which2 == 0) {
SetMessageHandler(&Scene2501::hmCarAtHome);
SetUpdateHandler(&Scene2501::upCarAtHome);
sendMessage(_class521, 0x200F, 1);
sendMessage(_asCar, 0x200F, 1);
} else if (_sceneInfos[_currTrackIndex]->which2 > 0) {
leaveScene(_sceneInfos[_currTrackIndex]->which2);
}
@ -452,13 +452,13 @@ uint32 Scene2501::hmCarAtHome(int messageNum, const MessageParam &param, Entity
void Scene2501::changeTrack() {
_currTrackIndex = _newTrackIndex;
_trackPoints = _dataResource.getPointArray(_sceneInfos[_currTrackIndex]->pointListName);
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (_currTrackIndex == 0) {
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
} else {
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
}
sendPointMessage(_class521, 0x2004, _clickPoint);
sendPointMessage(_asCar, 0x2004, _clickPoint);
_newTrackIndex = -1;
}
@ -482,12 +482,12 @@ void Scene2501::findClosestTrack(NPoint &pt) {
_newTrackIndex = minMatchTrackIndex;
_clickPoint = pt;
if (_currTrackIndex == 0)
sendMessage(_class521, 0x2003, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2003, _trackPoints->size() - 1);
else
sendMessage(_class521, 0x2003, 0);
sendMessage(_asCar, 0x2003, 0);
} else {
_newTrackIndex = -1;
sendMessage(_class521, 0x2004, pt);
sendMessage(_asCar, 0x2004, pt);
}
}

View File

@ -61,7 +61,7 @@ public:
Scene2501(NeverhoodEngine *vm, Module *parentModule, int which);
virtual ~Scene2501();
protected:
Class521 *_class521;
AsCommonCar *_asCar;
Sprite *_class437;
Sprite *_class517;
Sprite *_class519;

View File

@ -523,8 +523,8 @@ Class437::Class437(NeverhoodEngine *vm, uint32 fileHash)
StaticSprite::update();
}
Class517::Class517(NeverhoodEngine *vm, AnimatedSprite *class521, BaseSurface *shadowSurface, uint index)
: AnimatedSprite(vm, 1100), _class521(class521), _index(index), _animFileHash(0) {
Class517::Class517(NeverhoodEngine *vm, AnimatedSprite *asCar, BaseSurface *shadowSurface, uint index)
: AnimatedSprite(vm, 1100), _asCar(asCar), _index(index), _animFileHash(0) {
SetUpdateHandler(&Class517::update);
createShadowSurface(shadowSurface, 320, 240, 100); // TODO Use actual dimensions from resource
@ -537,28 +537,28 @@ void Class517::update() {
}
void Class517::updateShadow() {
if (_class521->getFrameIndex() != _currFrameIndex || _class521->getCurrAnimFileHash() != _animFileHash) {
uint32 fileHash = _class521->getCurrAnimFileHash();
if (_asCar->getFrameIndex() != _currFrameIndex || _asCar->getCurrAnimFileHash() != _animFileHash) {
uint32 fileHash = _asCar->getCurrAnimFileHash();
if (fileHash == 0x35698F78 || fileHash == 0x192ADD30 || fileHash == 0x9C220DA4 ||
fileHash == 0x9966B138 || fileHash == 0xB579A77C || fileHash == 0xA86A9538 ||
fileHash == 0xD4220027 || fileHash == 0xD00A1364 || fileHash == 0xD4AA03A4 ||
fileHash == 0xF46A0324) {
startAnimation(fileHash, _class521->getFrameIndex(), -1);
_newStickFrameIndex = _class521->getFrameIndex();
startAnimation(fileHash, _asCar->getFrameIndex(), -1);
_newStickFrameIndex = _asCar->getFrameIndex();
}
_animFileHash = fileHash;
}
_x = _class521->getX() + kClass517Points[_index].x;
_y = _class521->getY() + kClass517Points[_index].y;
if (!_class521->getVisible()) {
_x = _asCar->getX() + kClass517Points[_index].x;
_y = _asCar->getY() + kClass517Points[_index].y;
if (!_asCar->getVisible()) {
startAnimation(0x1209E09F, 0, -1);
_newStickFrameIndex = 0;
}
setDoDeltaX(_class521->isDoDeltaX() ? 1 : 0);
setDoDeltaX(_asCar->isDoDeltaX() ? 1 : 0);
}
Class519::Class519(NeverhoodEngine *vm, Sprite *class521, BaseSurface *shadowSurface, uint index)
: AnimatedSprite(vm, 1100), _class521(class521), _index(index) {
Class519::Class519(NeverhoodEngine *vm, Sprite *asCar, BaseSurface *shadowSurface, uint index)
: AnimatedSprite(vm, 1100), _asCar(asCar), _index(index) {
SetUpdateHandler(&Class519::update);
createShadowSurface1(shadowSurface, 0x60281C10, 150);
@ -567,13 +567,13 @@ Class519::Class519(NeverhoodEngine *vm, Sprite *class521, BaseSurface *shadowSur
}
void Class519::update() {
_x = _class521->getX() + kClass517Points[_index].x;
_y = _class521->getY() + kClass517Points[_index].y;
_x = _asCar->getX() + kClass517Points[_index].x;
_y = _asCar->getY() + kClass517Points[_index].y;
AnimatedSprite::update();
}
Class520::Class520(NeverhoodEngine *vm, Sprite *class521, BaseSurface *shadowSurface, int16 frameIndex)
: AnimatedSprite(vm, 1100), _class521(class521) {
Class520::Class520(NeverhoodEngine *vm, Sprite *asCar, BaseSurface *shadowSurface, int16 frameIndex)
: AnimatedSprite(vm, 1100), _asCar(asCar) {
SetUpdateHandler(&Class520::update);
createShadowSurface1(shadowSurface, 0x0759129C, 100);
@ -582,8 +582,8 @@ Class520::Class520(NeverhoodEngine *vm, Sprite *class521, BaseSurface *shadowSur
}
void Class520::update() {
_x = _class521->getX();
_y = _class521->getY();
_x = _asCar->getX();
_y = _asCar->getY();
AnimatedSprite::update();
}
@ -613,43 +613,43 @@ Scene2701::Scene2701(NeverhoodEngine *vm, Module *parentModule, int which)
_class437 = createSprite<Class437>(sceneInfo->class437Filename);
addEntity(_class437);
_class521 = insertSprite<Class521>(this, 320, 240);
_class517 = insertSprite<Class517>(_class521, _class437->getSurface(), 4);
_class520 = insertSprite<Class520>(_class521, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_class521, _class437->getSurface(), 4);
_asCar = insertSprite<AsCommonCar>(this, 320, 240);
_class517 = insertSprite<Class517>(_asCar, _class437->getSurface(), 4);
_class520 = insertSprite<Class520>(_asCar, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_asCar, _class437->getSurface(), 4);
} else {
_class437 = NULL;
_class521 = insertSprite<Class521>(this, 320, 240);
_asCar = insertSprite<AsCommonCar>(this, 320, 240);
}
_class518 = insertSprite<Class518>(_class521);
_asCarConnector = insertSprite<AsCommonCarConnector>(_asCar);
_which1 = sceneInfo->which1;
_which2 = sceneInfo->which2;
_dataResource.load(sceneInfo->dataResourceFilename);
_trackPoints = _dataResource.getPointArray(sceneInfo->pointListName);
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (which == _which2) {
NPoint testPoint = (*_trackPoints)[_trackPoints->size() - 1];
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
if (testPoint.x < 0 || testPoint.x >= 640 || testPoint.y < 0 || testPoint.y >= 480)
sendMessage(_class521, 0x2007, 150);
sendMessage(_asCar, 0x2007, 150);
} else {
NPoint testPoint = (*_trackPoints)[0];
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
if (testPoint.x < 0 || testPoint.x >= 640 || testPoint.y < 0 || testPoint.y >= 480)
sendMessage(_class521, 0x2008, 150);
sendMessage(_asCar, 0x2008, 150);
}
_class521->setClipRect(clipRect);
_class518->setClipRect(clipRect);
_asCar->setClipRect(clipRect);
_asCarConnector->setClipRect(clipRect);
if (which == 1) {
SetMessageHandler(&Scene2701::handleMessage42F500);
} else {
sendMessage(_class521, 0x2009, 0);
sendMessage(_asCar, 0x2009, 0);
SetMessageHandler(&Scene2701::handleMessage42F600);
}
@ -659,7 +659,7 @@ uint32 Scene2701::handleMessage42F500(int messageNum, const MessageParam &param,
Scene::handleMessage(messageNum, param, sender);
switch (messageNum) {
case 0x0001:
sendPointMessage(_class521, 0x2004, param.asPoint());
sendPointMessage(_asCar, 0x2004, param.asPoint());
break;
case 0x2005:
if (_which1 >= 0)
@ -683,7 +683,7 @@ uint32 Scene2701::handleMessage42F600(int messageNum, const MessageParam &param,
if (param.asPoint().x >= 385) {
leaveScene(0);
} else {
sendPointMessage(_class521, 0x2004, param.asPoint());
sendPointMessage(_asCar, 0x2004, param.asPoint());
SetMessageHandler(&Scene2701::handleMessage42F500);
}
break;
@ -723,11 +723,11 @@ Scene2702::Scene2702(NeverhoodEngine *vm, Module *parentModule, int which)
_class437 = createSprite<Class437>(0x12002035);
addEntity(_class437);
_class521 = insertSprite<Class521>(this, 320, 240);
_class517 = insertSprite<Class517>(_class521, _class437->getSurface(), 4);
insertSprite<Class518>(_class521);
_class520 = insertSprite<Class520>(_class521, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_class521, _class437->getSurface(), 4);
_asCar = insertSprite<AsCommonCar>(this, 320, 240);
_class517 = insertSprite<Class517>(_asCar, _class437->getSurface(), 4);
insertSprite<AsCommonCarConnector>(_asCar);
_class520 = insertSprite<Class520>(_asCar, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_asCar, _class437->getSurface(), 4);
_dataResource.load(0x04310014);
@ -761,14 +761,14 @@ Scene2702::Scene2702(NeverhoodEngine *vm, Module *parentModule, int which)
}
_trackPoints = _dataResource.getPointArray(_currSceneInfos[_currTrackIndex]->pointListName);
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (which == _currSceneInfos[_currTrackIndex]->which2) {
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_class521, 0x2007, 150);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2007, 150);
} else {
sendMessage(_class521, 0x2002, 0);
sendMessage(_class521, 0x2008, 150);
sendMessage(_asCar, 0x2002, 0);
sendMessage(_asCar, 0x2008, 150);
}
_palette->copyBasePalette(0, 256, 0);
@ -777,13 +777,13 @@ Scene2702::Scene2702(NeverhoodEngine *vm, Module *parentModule, int which)
void Scene2702::update() {
Scene::update();
if (_flag1 && _class521->getX() > 422) {
if (_flag1 && _asCar->getX() > 422) {
debug("fade #1");
_palette->addBasePalette(calcHash("paPodShade"), 65, 31, 65);
_palette->addBasePalette(calcHash("paKlayShade"), 0, 65, 0);
_palette->startFadeToPalette(12);
_flag1 = false;
} else if (!_flag1 && _class521->getX() <= 422) {
} else if (!_flag1 && _asCar->getX() <= 422) {
debug("fade #2");
_palette->addBasePalette(calcHash("paPodFloor"), 65, 31, 65);
_palette->addBasePalette(calcHash("paKlayFloor"), 0, 65, 0);
@ -839,35 +839,35 @@ void Scene2702::findClosestTrack(NPoint pt) {
_newTrackDestX = pt.x;
if (_currSceneInfos == _sceneInfos[0]) {
if (_currTrackIndex == 0)
sendMessage(_class521, 0x2003, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2003, _trackPoints->size() - 1);
else
sendMessage(_class521, 0x2003, 0);
sendMessage(_asCar, 0x2003, 0);
} else if (_currTrackIndex == 2) {
sendMessage(_class521, 0x2003, 0);
sendMessage(_asCar, 0x2003, 0);
} else {
sendMessage(_class521, 0x2003, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2003, _trackPoints->size() - 1);
}
} else {
_newTrackIndex = -1;
sendMessage(_class521, 0x2004, pt.x);
sendMessage(_asCar, 0x2004, pt.x);
}
}
void Scene2702::changeTrack() {
_currTrackIndex = _newTrackIndex;
_trackPoints = _dataResource.getPointArray(_currSceneInfos[_currTrackIndex]->pointListName);
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (_currSceneInfos == _sceneInfos[0]) {
if (_currTrackIndex == 0)
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
else
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
} else if (_currTrackIndex == 2) {
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
} else {
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
}
sendMessage(_class521, 0x2004, _newTrackDestX);
sendMessage(_asCar, 0x2004, _newTrackDestX);
_newTrackIndex = -1;
}
@ -900,56 +900,56 @@ Scene2704::Scene2704(NeverhoodEngine *vm, Module *parentModule, int which, uint3
_class437 = createSprite<Class437>(sceneInfo->class437Filename);
addEntity(_class437);
_class521 = insertSprite<Class521>(this, 320, 240);
_class517 = insertSprite<Class517>(_class521, _class437->getSurface(), 4);
_class520 = insertSprite<Class520>(_class521, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_class521, _class437->getSurface(), 4);
_asCar = insertSprite<AsCommonCar>(this, 320, 240);
_class517 = insertSprite<Class517>(_asCar, _class437->getSurface(), 4);
_class520 = insertSprite<Class520>(_asCar, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_asCar, _class437->getSurface(), 4);
} else {
_class437 = NULL;
_class517 = NULL;
_class521 = insertSprite<Class521>(this, 320, 240);
_asCar = insertSprite<AsCommonCar>(this, 320, 240);
}
_class518 = insertSprite<Class518>(_class521);
_asCarConnector = insertSprite<AsCommonCarConnector>(_asCar);
_which1 = sceneInfo->which1;
_which2 = sceneInfo->which2;
_dataResource.load(sceneInfo->dataResourceFilename);
_trackPoints = _dataResource.getPointArray(sceneInfo->pointListName);
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (sceneInfo->rectListName) {
_rectList = _dataResource.getRectArray(sceneInfo->rectListName);
// TODO _class521->setPathRects(_rectList);
// TODO _asCar->setPathRects(_rectList);
}
if (which == _which2) {
NPoint testPoint = (*_trackPoints)[_trackPoints->size() - 1];
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
if (testPoint.x > 0 && testPoint.x < 640 && testPoint.y > 0 && testPoint.y < 480)
sendMessage(_class521, 0x2009, 0);
sendMessage(_asCar, 0x2009, 0);
else
sendMessage(_class521, 0x2007, 0);
sendMessage(_asCar, 0x2007, 0);
} else {
NPoint testPoint = (*_trackPoints)[0];
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
if (testPoint.x > 0 && testPoint.x < 640 && testPoint.y > 0 && testPoint.y < 480)
sendMessage(_class521, 0x2009, 0);
sendMessage(_asCar, 0x2009, 0);
else
sendMessage(_class521, 0x2008, 0);
sendMessage(_asCar, 0x2008, 0);
}
if (clipRect) {
_class521->getClipRect() = *clipRect;
_asCar->getClipRect() = *clipRect;
if (_class517)
_class517->getClipRect() = *clipRect;
if (_class520)
_class520->getClipRect() = *clipRect;
if (_class519)
_class519->getClipRect() = *clipRect;
if (_class518)
_class518->getClipRect() = *clipRect;
if (_asCarConnector)
_asCarConnector->getClipRect() = *clipRect;
}
}
@ -957,7 +957,7 @@ Scene2704::Scene2704(NeverhoodEngine *vm, Module *parentModule, int which, uint3
void Scene2704::update() {
Scene::update();
if (_mouseClicked) {
sendPointMessage(_class521, 0x2004, _mouseClickPos);
sendPointMessage(_asCar, 0x2004, _mouseClickPos);
_mouseClicked = false;
}
}
@ -1004,11 +1004,11 @@ Scene2706::Scene2706(NeverhoodEngine *vm, Module *parentModule, int which)
_class437 = createSprite<Class437>(0x18808B88);
addEntity(_class437);
_class521 = insertSprite<Class521>(this, 320, 240);
_class517 = insertSprite<Class517>(_class521, _class437->getSurface(), 4);
_class518 = insertSprite<Class518>(_class521);
_class520 = insertSprite<Class520>(_class521, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_class521, _class437->getSurface(), 4);
_asCar = insertSprite<AsCommonCar>(this, 320, 240);
_class517 = insertSprite<Class517>(_asCar, _class437->getSurface(), 4);
_asCarConnector = insertSprite<AsCommonCarConnector>(_asCar);
_class520 = insertSprite<Class520>(_asCar, _class437->getSurface(), 4);
_class519 = insertSprite<Class519>(_asCar, _class437->getSurface(), 4);
_dataResource.load(0x06000162);
@ -1020,20 +1020,20 @@ Scene2706::Scene2706(NeverhoodEngine *vm, Module *parentModule, int which)
_currTrackIndex = 0;
_trackPoints = _dataResource.getPointArray(calcHash(kSceneInfo2706[_currTrackIndex].pointListName));
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (which == kSceneInfo2706[_currTrackIndex].which2) {
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
if (which == 5)
sendMessage(_class521, 0x2007, 50);
sendMessage(_asCar, 0x2007, 50);
else
sendMessage(_class521, 0x2007, 150);
sendMessage(_asCar, 0x2007, 150);
} else {
sendMessage(_class521, 0x2002, 0);
sendMessage(_asCar, 0x2002, 0);
if (which == 5)
sendMessage(_class521, 0x2008, 50);
sendMessage(_asCar, 0x2008, 50);
else
sendMessage(_class521, 0x2008, 150);
sendMessage(_asCar, 0x2008, 150);
}
}
@ -1084,24 +1084,24 @@ void Scene2706::findClosestTrack(NPoint pt) {
_newTrackIndex = minMatchTrackIndex;
_newTrackDestX = pt.x;
if (_currTrackIndex == 0)
sendMessage(_class521, 0x2003, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2003, _trackPoints->size() - 1);
else
sendMessage(_class521, 0x2003, 0);
sendMessage(_asCar, 0x2003, 0);
} else {
_newTrackIndex = -1;
sendMessage(_class521, 0x2004, pt.x);
sendMessage(_asCar, 0x2004, pt.x);
}
}
void Scene2706::changeTrack() {
_currTrackIndex = _newTrackIndex;
_trackPoints = _dataResource.getPointArray(calcHash(kSceneInfo2706[_currTrackIndex].pointListName));
_class521->setPathPoints(_trackPoints);
_asCar->setPathPoints(_trackPoints);
if (_currTrackIndex == 0)
sendMessage(_class521, 0x2002, _trackPoints->size() - 1);
sendMessage(_asCar, 0x2002, _trackPoints->size() - 1);
else
sendMessage(_class521, 0x2002, 0);
sendMessage(_class521, 0x2004, _newTrackDestX);
sendMessage(_asCar, 0x2002, 0);
sendMessage(_asCar, 0x2004, _newTrackDestX);
_newTrackIndex = -1;
}

View File

@ -56,10 +56,10 @@ public:
class Class517 : public AnimatedSprite {
public:
Class517(NeverhoodEngine *vm, AnimatedSprite *class521, BaseSurface *shadowSurface, uint index);
Class517(NeverhoodEngine *vm, AnimatedSprite *asCar, BaseSurface *shadowSurface, uint index);
protected:
uint _index;
AnimatedSprite *_class521;
AnimatedSprite *_asCar;
uint32 _animFileHash;
void update();
void updateShadow();
@ -67,18 +67,18 @@ protected:
class Class519 : public AnimatedSprite {
public:
Class519(NeverhoodEngine *vm, Sprite *class521, BaseSurface *shadowSurface, uint index);
Class519(NeverhoodEngine *vm, Sprite *asCar, BaseSurface *shadowSurface, uint index);
protected:
uint _index;
Sprite *_class521;
Sprite *_asCar;
void update();
};
class Class520 : public AnimatedSprite {
public:
Class520(NeverhoodEngine *vm, Sprite *class521, BaseSurface *shadowSurface, int16 frameIndex);
Class520(NeverhoodEngine *vm, Sprite *asCar, BaseSurface *shadowSurface, int16 frameIndex);
protected:
Sprite *_class521;
Sprite *_asCar;
void update();
};
@ -86,12 +86,12 @@ class Scene2701 : public Scene {
public:
Scene2701(NeverhoodEngine *vm, Module *parentModule, int which);
protected:
Class521 *_class521;
AsCommonCar *_asCar;
Sprite *_class437;
Sprite *_class517;
Sprite *_class520;
Sprite *_class519;
Sprite *_class518;
Sprite *_asCarConnector;
Sprite *_sprite1;
int _which1, _which2;
NPointArray *_trackPoints;
@ -103,7 +103,7 @@ class Scene2702 : public Scene {
public:
Scene2702(NeverhoodEngine *vm, Module *parentModule, int which);
protected:
Class521 *_class521;
AsCommonCar *_asCar;
Sprite *_class437;
Sprite *_class517;
Sprite *_class520;
@ -126,10 +126,10 @@ public:
Scene2704(NeverhoodEngine *vm, Module *parentModule, int which, uint32 sceneInfoId, int16 value,
const uint32 *staticSprites = NULL, const NRect *clipRect = NULL);
protected:
Class521 *_class521;
AsCommonCar *_asCar;
Sprite *_class437;
Sprite *_class517;
Sprite *_class518;
Sprite *_asCarConnector;
Sprite *_class520;
Sprite *_class519;
int _which1, _which2;
@ -143,10 +143,10 @@ class Scene2706 : public Scene {
public:
Scene2706(NeverhoodEngine *vm, Module *parentModule, int which);
protected:
Class521 *_class521;
AsCommonCar *_asCar;
Sprite *_class437;
Sprite *_class517;
Sprite *_class518;
Sprite *_asCarConnector;
Sprite *_class520;
Sprite *_class519;
int16 _newTrackDestX;