mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-23 19:16:21 +00:00
NEVERHOOD: More work on Scene1201
This commit is contained in:
parent
0632fc7dda
commit
f162516f25
@ -485,7 +485,6 @@ void Klayman::sub41C930(int16 x, bool flag) {
|
||||
error("// TODO AnimatedSprite_setCallback2(AnimationCallback(&Klayman::sub421550));");
|
||||
// TODO AnimatedSprite_setCallback2(AnimationCallback(&Klayman::sub421550));
|
||||
} else {
|
||||
debug("##################################################################");
|
||||
_x4 = x;
|
||||
setCallback2(AnimationCallback(&Klayman::sub41F950));
|
||||
}
|
||||
@ -773,8 +772,7 @@ void Klayman::sub41FA40() {
|
||||
if (_status3 == 2) {
|
||||
sub41C7B0();
|
||||
} else if (_status3 == 3) {
|
||||
error("// TODO sub420F20();");
|
||||
// TODO sub420F20();
|
||||
sub420F20();
|
||||
} else {
|
||||
_flagE2 = true;
|
||||
_flagE5 = true;
|
||||
@ -1626,6 +1624,23 @@ void Klayman::sub4207F0() {
|
||||
SetMessageHandler(&Klayman::handleMessage41EEF0);
|
||||
}
|
||||
|
||||
void Klayman::sub420F20() {
|
||||
_flagF8 = false;
|
||||
_flagE5 = false;
|
||||
setFileHash(0x11A8E012, 0, -1);
|
||||
SetUpdateHandler(&Klayman::update);
|
||||
SetSpriteCallback(&Klayman::spriteUpdate41F5A0);
|
||||
SetMessageHandler(&Klayman::handleMessage41EC70);
|
||||
}
|
||||
|
||||
void Klayman::spriteUpdate41F5A0() {
|
||||
if (!_flagF8 && ABS(_x4 - _x) < 80) {
|
||||
_parentScene->sendMessage(0x4829, 0, this);
|
||||
_flagF8 = true;
|
||||
}
|
||||
AnimatedSprite::updateDeltaXY();
|
||||
}
|
||||
|
||||
//##############################################################################
|
||||
|
||||
// KmScene1001
|
||||
@ -1758,8 +1773,6 @@ void KmScene1002::xUpdate() {
|
||||
uint32 KmScene1002::xHandleMessage(int messageNum, const MessageParam ¶m) {
|
||||
//ok
|
||||
debug("KmScene1002::xHandleMessage(%04X)", messageNum);
|
||||
if (messageNum == 0x100D)
|
||||
debug("-> %08X", param.asInteger());
|
||||
switch (messageNum) {
|
||||
case 0x2001:
|
||||
setCallback2(AnimationCallback(&KmScene1002::sub449E90));
|
||||
@ -1908,9 +1921,6 @@ uint32 KmScene1002::handleMessage4498E0(int messageNum, const MessageParam ¶
|
||||
_x = ((Sprite*)sender)->getX() + 75;
|
||||
}
|
||||
_y = ((Sprite*)sender)->getY() - 200;
|
||||
|
||||
debug("&&&&&&&&&&& param.asInteger() = %d", param.asInteger());
|
||||
|
||||
if (param.asInteger() == 0) {
|
||||
sub449EF0();
|
||||
} else if (param.asInteger() == 1) {
|
||||
|
@ -84,11 +84,13 @@ public:
|
||||
void sub420ED0();
|
||||
void sub4207A0();
|
||||
void sub4207F0();
|
||||
void sub420F20();
|
||||
|
||||
void spriteUpdate41F250();
|
||||
void spriteUpdate41F5F0();
|
||||
void spriteUpdate41F780();
|
||||
void spriteUpdate41F230();
|
||||
void spriteUpdate41F5A0();
|
||||
|
||||
uint32 handleMessage41D360(int messageNum, const MessageParam ¶m, Entity *sender);
|
||||
uint32 handleMessage41D480(int messageNum, const MessageParam ¶m, Entity *sender);
|
||||
|
@ -478,6 +478,69 @@ void Class463::sub40CD90() {
|
||||
_newHashListIndex = -2;
|
||||
}
|
||||
|
||||
Class465::Class465(NeverhoodEngine *vm, Sprite *class463)
|
||||
: AnimatedSprite(vm, 1200), _class463(class463) {
|
||||
|
||||
createSurface1(995, 0x828C0411);
|
||||
SetUpdateHandler(&Class465::update);
|
||||
SetMessageHandler(&Sprite::handleMessage);
|
||||
SetSpriteCallback(&Class465::spriteUpdate40D150);
|
||||
setFileHash(0x828C0411, 0, -1);
|
||||
_surface->setVisible(false);
|
||||
}
|
||||
|
||||
Class465::~Class465() {
|
||||
// TODO Sound1ChList_sub_407AF0(0x041080A4);
|
||||
}
|
||||
|
||||
void Class465::update() {
|
||||
AnimatedSprite::update();
|
||||
if (getGlobalVar(0x20A0C516)) {
|
||||
_surface->setVisible(true);
|
||||
SetUpdateHandler(&AnimatedSprite::update);
|
||||
// TODO Sound1ChList_addSoundResource(0x041080A4, 0x460A1050, true);
|
||||
// TODO Sound1ChList_playLooping(0x460A1050);
|
||||
}
|
||||
}
|
||||
|
||||
void Class465::spriteUpdate40D150() {
|
||||
_x = _class463->getX() - 18;
|
||||
_y = _class463->getY() - 158;
|
||||
}
|
||||
|
||||
AsScene1201LeftDoor::AsScene1201LeftDoor(NeverhoodEngine *vm, Sprite *klayman)
|
||||
: AnimatedSprite(vm, 1100), _soundResource(vm), _klayman(klayman) {
|
||||
|
||||
_x = 320;
|
||||
_y = 240;
|
||||
createSurface(800, 55, 199);
|
||||
if (_klayman->getX() < 100) {
|
||||
setFileHash(0x508A111B, 0, -1);
|
||||
_newHashListIndex = -2;
|
||||
_soundResource.play(calcHash("fxDoorOpen03"));
|
||||
} else {
|
||||
setFileHash(0x508A111B, -1, -1);
|
||||
_newHashListIndex = -2;
|
||||
}
|
||||
SetUpdateHandler(&AnimatedSprite::update);
|
||||
SetMessageHandler(&AsScene1201LeftDoor::handleMessage);
|
||||
}
|
||||
|
||||
uint32 AsScene1201LeftDoor::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) {
|
||||
uint32 messageResult = Sprite::handleMessage(messageNum, param, sender);
|
||||
switch (messageNum) {
|
||||
case 0x4809:
|
||||
sub40D590();
|
||||
break;
|
||||
}
|
||||
return messageResult;
|
||||
}
|
||||
|
||||
void AsScene1201LeftDoor::sub40D590() {
|
||||
setFileHash(0x508A111B, -1, -1);
|
||||
_playBackwards = true;
|
||||
_newHashListIndex = 0;
|
||||
}
|
||||
|
||||
Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
|
||||
: Scene(vm, parentModule, true), _flag(false) {
|
||||
@ -600,13 +663,11 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
|
||||
class463->getSurface()->getClipRect().y2 = 480;
|
||||
_vm->_collisionMan->addSprite(_class463);
|
||||
_class463 = addSprite(class463);
|
||||
#if 0
|
||||
tempSprite = addSprite(new Class465(_vm, _class463));
|
||||
tempSprite->getSurface()->getClipRect().x1 = x1;
|
||||
tempSprite->getSurface()->getClipRect().y1 = 0;
|
||||
tempSprite->getSurface()->getClipRect().x2 = x2;
|
||||
tempSprite->getSurface()->getClipRect().y2 = 480;
|
||||
#endif
|
||||
class463->setRepl(64, 0);
|
||||
}
|
||||
|
||||
@ -670,13 +731,11 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
|
||||
|
||||
tempSprite = addSprite(new StaticSprite(_vm, 0x63D400BC, 900));
|
||||
|
||||
#if 0
|
||||
_class467 = addSprite(new Class467(_vm, _klayman));
|
||||
_class467->getSurface()->getClipRect().x1 = x1;
|
||||
_class467->getSurface()->getClipRect().y1 = tempSprite->getSurface()->getDrawRect().y;
|
||||
_class467->getSurface()->getClipRect().x2 = tempSprite->getSurface()->getDrawRect().x + tempSprite->getSurface()->getDrawRect().width;
|
||||
_class467->getSurface()->getClipRect().y2 = 480;
|
||||
#endif
|
||||
_asLeftDoor = addSprite(new AsScene1201LeftDoor(_vm, _klayman));
|
||||
_asLeftDoor->getSurface()->getClipRect().x1 = x1;
|
||||
_asLeftDoor->getSurface()->getClipRect().y1 = tempSprite->getSurface()->getDrawRect().y;
|
||||
_asLeftDoor->getSurface()->getClipRect().x2 = tempSprite->getSurface()->getDrawRect().x + tempSprite->getSurface()->getDrawRect().width;
|
||||
_asLeftDoor->getSurface()->getClipRect().y2 = 480;
|
||||
|
||||
if (getGlobalVar(0x0A310817) && ! getGlobalVar(0x0112090A)) {
|
||||
setGlobalVar(0x0112090A, 1);
|
||||
|
@ -109,6 +109,26 @@ protected:
|
||||
void sub40CD90();
|
||||
};
|
||||
|
||||
class Class465 : public AnimatedSprite {
|
||||
public:
|
||||
Class465(NeverhoodEngine *vm, Sprite *class463);
|
||||
~Class465();
|
||||
protected:
|
||||
Sprite *_class463;
|
||||
void update();
|
||||
void spriteUpdate40D150();
|
||||
};
|
||||
|
||||
class AsScene1201LeftDoor : public AnimatedSprite {
|
||||
public:
|
||||
AsScene1201LeftDoor(NeverhoodEngine *vm, Sprite *klayman);
|
||||
protected:
|
||||
Sprite *_klayman;
|
||||
SoundResource _soundResource;
|
||||
uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender);
|
||||
void sub40D590();
|
||||
};
|
||||
|
||||
class SsScene1201Tnt : public StaticSprite {
|
||||
public:
|
||||
SsScene1201Tnt(NeverhoodEngine *vm, uint32 elemIndex, uint32 pointIndex, int16 clipY2);
|
||||
@ -128,7 +148,7 @@ protected:
|
||||
Sprite *_class463;
|
||||
Sprite *_class462;
|
||||
Sprite *_class466;
|
||||
Sprite *_class467;
|
||||
Sprite *_asLeftDoor;
|
||||
Sprite *_class468;
|
||||
Sprite *_asTape;
|
||||
bool _flag;
|
||||
|
Loading…
x
Reference in New Issue
Block a user