Skip to content

Commit

Permalink
NEVERHOOD: Add Scene1609
Browse files Browse the repository at this point in the history
- Use Scene::insertSprite<> in all scenes
  • Loading branch information
johndoe123 authored and wjp committed May 8, 2013
1 parent af2820f commit 2275141
Show file tree
Hide file tree
Showing 12 changed files with 260 additions and 162 deletions.
2 changes: 1 addition & 1 deletion engines/neverhood/gamemodule.cpp
Expand Up @@ -276,7 +276,7 @@ void GameModule::startup() {
createModule(1000, -1);
#endif
#if 1
_vm->gameState().sceneNum = 7;
_vm->gameState().sceneNum = 8;
_vm->gameState().which = 1;
createModule(1600, -1);
#endif
Expand Down
34 changes: 16 additions & 18 deletions engines/neverhood/module1200.cpp
Expand Up @@ -766,7 +766,7 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)

insertMouse433(0x9A2C0409);

_asTape = addSprite(new AsScene1201Tape(_vm, this, 3, 1100, 243, 340, 0x9148A011));
_asTape = insertSprite<AsScene1201Tape>(this, 3, 1100, 243, 340, 0x9148A011);
_vm->_collisionMan->addSprite(_asTape);

tempSprite = insertStaticSprite(0x03C82530, 100);
Expand All @@ -781,7 +781,7 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
tempSprite = insertStaticSprite(0x04063110, 500);
topY4 = tempSprite->getY() + 1;

_class466 = addSprite(new Class466(_vm, getGlobalVar(0x000CF819) && which != 1));
_class466 = insertSprite<Class466>(getGlobalVar(0x000CF819) && which != 1);
_class466->setClipRect(0, topY4, 640, 480);

insertStaticSprite(0x400B04B0, 1200);
Expand All @@ -792,7 +792,7 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
tempSprite = insertStaticSprite(0xA29223FA, 1200);
x2 = tempSprite->getX() + tempSprite->getDrawRect().width;

class464 = addSprite(new Class464(_vm));
class464 = insertSprite<Class464>();

debug("Scene1201: which = %d", which);

Expand Down Expand Up @@ -833,20 +833,18 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
} else {
setBackground(0x40206EC5);
setPalette(0x40206EC5);
_asRightDoor = addSprite(new AsScene1201RightDoor(_vm, _klayman, which == 2));
_asRightDoor = insertSprite<AsScene1201RightDoor>(_klayman, which == 2);
}

if (getGlobalVar(0x000CF819)) {
insertStaticSprite(0x10002ED8, 500);
if (!getGlobalVar(0x0A18CA33)) {
AsScene1201TntMan *asTntMan;
asTntMan = new AsScene1201TntMan(_vm, this, _class466, which == 1);
asTntMan->setClipRect(x1, 0, x2, 480);
_vm->_collisionMan->addSprite(asTntMan);
_asTntMan = addSprite(asTntMan);
tempSprite = addSprite(new Class465(_vm, _asTntMan));
_asTntMan = insertSprite<AsScene1201TntMan>(this, _class466, which == 1);
_asTntMan->setClipRect(x1, 0, x2, 480);
_asTntMan->setRepl(64, 0);
_vm->_collisionMan->addSprite(_asTntMan);
tempSprite = insertSprite<Class465>(_asTntMan);
tempSprite->setClipRect(x1, 0, x2, 480);
asTntMan->setRepl(64, 0);
}

uint32 tntIndex = 1;
Expand All @@ -859,15 +857,15 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
clipY2 = topY2;
else
clipY2 = topY3;
addSprite(new SsScene1201Tnt(_vm, tntIndex, getSubVar(0x10055D14, tntIndex), clipY2));
insertSprite<SsScene1201Tnt>(tntIndex, getSubVar(0x10055D14, tntIndex), clipY2);
elemIndex = getSubVar(0x10055D14, tntIndex + 1);
if (kScene1201PointArray[elemIndex].y < 175)
clipY2 = topY1;
else if (kScene1201PointArray[elemIndex].y < 230)
clipY2 = topY2;
else
clipY2 = topY3;
addSprite(new SsScene1201Tnt(_vm, tntIndex + 1, getSubVar(0x10055D14, tntIndex + 1), clipY2));
insertSprite<SsScene1201Tnt>(tntIndex + 1, getSubVar(0x10055D14, tntIndex + 1), clipY2);
tntIndex += 3;
}

Expand Down Expand Up @@ -895,7 +893,7 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
else
clipY2 = topY3;
}
addSprite(new SsScene1201Tnt(_vm, tntIndex, getSubVar(0x10055D14, tntIndex), clipY2));
insertSprite<SsScene1201Tnt>(tntIndex, getSubVar(0x10055D14, tntIndex), clipY2);
tntIndex++;
}

Expand All @@ -909,7 +907,7 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)

tempSprite = insertStaticSprite(0x63D400BC, 900);

_asLeftDoor = addSprite(new AsScene1201LeftDoor(_vm, _klayman));
_asLeftDoor = insertSprite<AsScene1201LeftDoor>(_klayman);
_asLeftDoor->setClipRect(x1, tempSprite->getDrawRect().y, tempSprite->getDrawRect().x2(), 480);

if (getGlobalVar(0x0A310817) && ! getGlobalVar(0x0112090A)) {
Expand All @@ -919,12 +917,12 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which)
_asMatch = NULL;

if (getGlobalVar(0x0112090A) < 3) {
_asMatch = addSprite(new AsScene1201Match(_vm, this));
_asMatch = insertSprite<AsScene1201Match>(this);
_vm->_collisionMan->addSprite(_asMatch);
}

if (getGlobalVar(0x0A310817) && !getGlobalVar(0x0A18CA33)) {
_asCreature = addSprite(new AsScene1201Creature(_vm, this, _klayman));
_asCreature = insertSprite<AsScene1201Creature>(this, _klayman);
_asCreature->setClipRect(x1, 0, x2, 480);
}

Expand Down Expand Up @@ -1131,7 +1129,7 @@ Scene1202::Scene1202(NeverhoodEngine *vm, Module *parentModule, int which)
insertMouse435(0x10ED160A, 20, 620);

for (int i = 0; i < 18; i++) {
_asTntItems[i] = addSprite(new AsScene1202TntItem(_vm, this, i));
_asTntItems[i] = insertSprite<AsScene1202TntItem>(this, i);
_vm->_collisionMan->addSprite(_asTntItems[i]);
}

Expand Down
2 changes: 1 addition & 1 deletion engines/neverhood/module1200.h
Expand Up @@ -179,7 +179,7 @@ class Scene1201 : public Scene {
// TODO ResourceTable _resourceTable1;
// TODO ResourceTable _resourceTable2;
Sprite *_asMatch;
Sprite *_asTntMan;
AsScene1201TntMan *_asTntMan;
Sprite *_asCreature;
Sprite *_class466;
Sprite *_asLeftDoor;
Expand Down
60 changes: 29 additions & 31 deletions engines/neverhood/module1300.cpp
Expand Up @@ -424,20 +424,20 @@ Scene1302::Scene1302(NeverhoodEngine *vm, Module *parentModule, int which)
setPalette(0x420643C4);
insertMouse433(0x643C0428);

_class595 = addSprite(new Class595(_vm, this));
_class595 = insertSprite<Class595>(this);
_sprite1 = insertStaticSprite(0x942FC224, 300);
_sprite2 = insertStaticSprite(0x70430830, 1200);
_sprite2->setVisible(false);
_sprite3 = insertStaticSprite(0x16E01E20, 1100);

_asRing1 = addSprite(new AsScene1002Ring(_vm, this, false, 218, 122, _class595->getDrawRect().y, false));
_asRing2 = addSprite(new AsScene1002Ring(_vm, this, true, 218 + 32, 132, _class595->getDrawRect().y, getGlobalVar(0x13206309)));
_asRing3 = addSprite(new AsScene1002Ring(_vm, this, false, 218 + 32 + 32, 122, _class595->getDrawRect().y, false));
_asRing4 = addSprite(new AsScene1002Ring(_vm, this, true, 218 + 32 + 32 + 32, 132, _class595->getDrawRect().y, getGlobalVar(0x80101B1E)));
_asRing5 = addSprite(new AsScene1002Ring(_vm, this, false, 218 + 32 + 32 + 32 + 32, 115, _class595->getDrawRect().y, false));
_asRing1 = insertSprite<AsScene1002Ring>(this, false, 218, 122, _class595->getDrawRect().y, false);
_asRing2 = insertSprite<AsScene1002Ring>(this, true, 218 + 32, 132, _class595->getDrawRect().y, getGlobalVar(0x13206309));
_asRing3 = insertSprite<AsScene1002Ring>(this, false, 218 + 32 + 32, 122, _class595->getDrawRect().y, false);
_asRing4 = insertSprite<AsScene1002Ring>(this, true, 218 + 32 + 32 + 32, 132, _class595->getDrawRect().y, getGlobalVar(0x80101B1E));
_asRing5 = insertSprite<AsScene1002Ring>(this, false, 218 + 32 + 32 + 32 + 32, 115, _class595->getDrawRect().y, false);

_asBridge = addSprite(new AsScene1302Bridge(_vm, this));
_ssFence = addSprite(new SsScene1302Fence(_vm));
_asBridge = insertSprite<AsScene1302Bridge>(this);
_ssFence = insertSprite<SsScene1302Fence>();
_ssFence->setClipRect(0, 0, 640, _sprite1->getDrawRect().y2());

if (which < 0) {
Expand All @@ -450,7 +450,7 @@ Scene1302::Scene1302(NeverhoodEngine *vm, Module *parentModule, int which)

_klayman->setClipRect(0, 0, _sprite3->getDrawRect().x2(), 480);

_asVenusFlyTrap = addSprite(new AsScene1002VenusFlyTrap(_vm, this, _klayman, true));
_asVenusFlyTrap = insertSprite<AsScene1002VenusFlyTrap>(this, _klayman, true);
_vm->_collisionMan->addSprite(_asVenusFlyTrap);

sendEntityMessage(_klayman, 0x2007, _asVenusFlyTrap);
Expand Down Expand Up @@ -643,7 +643,7 @@ Scene1303::Scene1303(NeverhoodEngine *vm, Module *parentModule, int which)
insertMouse433(0x81A9801D);

if (!getGlobalVar(0xAC00C0D0)) {
_asBalloon = addSprite(new AsScene1303Balloon(_vm, this));
_asBalloon = insertSprite<AsScene1303Balloon>(this);
_vm->_collisionMan->addSprite(_asBalloon);
}

Expand Down Expand Up @@ -711,15 +711,15 @@ Scene1304::Scene1304(NeverhoodEngine *vm, Module *parentModule, int which)
insertMouse433(0xC021006A);

if (getGlobalVar(0xAC00C0D0)) {
_class545 = addSprite(new Class545(_vm, this, 0, 1100, 278, 347));
_class545 = insertSprite<Class545>(this, 0, 1100, 278, 347);
_vm->_collisionMan->addSprite(_class545);
} else {
_class545 = addSprite(new AnimatedSprite(_vm, 0x80106018, 100, 279, 48));
_class545 = insertSprite<AnimatedSprite>(0x80106018, 100, 279, 48);
// TODO _class545->setUpdateDeltaXY();
}

if (!getGlobalVar(0x31C63C51)) {
_class544 = addSprite(new Class544(_vm, this, 1100, 278, 347));
_class544 = insertSprite<Class544>(this, 1100, 278, 347);
_vm->_collisionMan->addSprite(_class544);
} else {
_class544 = NULL;
Expand Down Expand Up @@ -893,20 +893,19 @@ Scene1306::Scene1306(NeverhoodEngine *vm, Module *parentModule, int which)
insertMouse433(0x0311005B);

if (!getGlobalVar(0x13382860)) {
_class545 = addSprite(new Class545(_vm, this, 2, 1100, 435, 445));
_class545 = insertSprite<Class545>(this, 2, 1100, 435, 445);
_vm->_collisionMan->addSprite(_class545);
}

_ssButton = addSprite(new SsCommonButtonSprite(_vm, this, 0x404A36A0, 100, 0x440C1000));
_ssButton = insertSprite<SsCommonButtonSprite>(this, 0x404A36A0, 100, 0x440C1000);

_asTape = addSprite(new AsScene1201Tape(_vm, this, 19, 1100, 359, 445, 0x9148A011));
_asTape = insertSprite<AsScene1201Tape>(this, 19, 1100, 359, 445, 0x9148A011);

_asElevatorDoor = new AnimatedSprite(_vm, 0x043B0270, 90, 320, 240);
_asElevatorDoor = insertSprite<AnimatedSprite>(0x043B0270, 90, 320, 240);
_asElevatorDoor->setFileHash(0x043B0270, 6, -1);
_asElevatorDoor->setNewHashListIndex(6);
addSprite(_asElevatorDoor);

_asElevator = addSprite(new AsScene1306Elevator(_vm, this, _asElevatorDoor));
_asElevator = insertSprite<AsScene1306Elevator>(this, _asElevatorDoor);

_sprite1 = insertStaticSprite(0x036A1EE0, 80);

Expand Down Expand Up @@ -1309,7 +1308,7 @@ Scene1307::Scene1307(NeverhoodEngine *vm, Module *parentModule, int which)

for (uint keyIndex = 0; keyIndex < 3; keyIndex++) {
if (getSubVar(0x08D0AB11, keyIndex)) {
_asKeys[keyIndex] = addSprite(new AsScene1307Key(_vm, this, keyIndex, _clipRects));
_asKeys[keyIndex] = insertSprite<AsScene1307Key>(this, keyIndex, _clipRects);
_vm->_collisionMan->addSprite(_asKeys[keyIndex]);
} else {
_asKeys[keyIndex] = NULL;
Expand Down Expand Up @@ -1600,21 +1599,21 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which)
setPalette(0x41024202);
insertMouse433(0x24206418);

_asTape = addSprite(new AsScene1201Tape(_vm, this, 17, 1100, 502, 445, 0x9148A011));
_asTape = insertSprite<AsScene1201Tape>(this, 17, 1100, 502, 445, 0x9148A011);
_vm->_collisionMan->addSprite(_asTape);

if (getGlobalVar(0x01023818)) {
addSprite(new Class513(_vm));
addSprite(new AnimatedSprite(_vm, 0x461A1490, 200, 235, 429));
insertSprite<Class513>();
insertSprite<AnimatedSprite>(0x461A1490, 200, 235, 429);
}

_sprite1 = insertStaticSprite(0x0A042060, 1100);
_class549 = addSprite(new Class549(_vm, this));
_class593 = addSprite(new Class593(_vm, this));
_class549 = insertSprite<Class549>(this);
_class593 = insertSprite<Class593>(this);

_class601_1 = addSprite(new Class601(_vm, kScene1308FileHashes[getSubVar(0x0C10A000, 1)], 0));
_class601_2 = addSprite(new Class601(_vm, kScene1308FileHashes[getSubVar(0x0C10A000, 0)], 1));
_class601_2 = addSprite(new Class601(_vm, kScene1308FileHashes[getSubVar(0x0C10A000, 2)], 2));
_class601_1 = insertSprite<Class601>(kScene1308FileHashes[getSubVar(0x0C10A000, 1)], 0);
_class601_2 = insertSprite<Class601>(kScene1308FileHashes[getSubVar(0x0C10A000, 0)], 1);
_class601_2 = insertSprite<Class601>(kScene1308FileHashes[getSubVar(0x0C10A000, 2)], 2);

_sprite2 = insertStaticSprite(0x40043120, 995);
_sprite3 = insertStaticSprite(0x43003100, 995);
Expand Down Expand Up @@ -1644,7 +1643,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which)
insertKlayman<KmScene1308>(475, 440);
setMessageList(0x004B58B0);
if (getGlobalVar(0x80455A41)) {
_sprite5 = addSprite(new Class592(_vm, this));
_sprite5 = insertSprite<Class592>(this);
_sprite4 = insertStaticSprite(0x0101A624, 1100);
_sprite4->setVisible(false);
} else {
Expand Down Expand Up @@ -1672,8 +1671,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which)
}

if (getGlobalVar(0x04A105B3) == 4) {
_class489 = new Class489(_vm, this, _klayman, 0);
addSprite(_class489);
_class489 = insertSprite<Class489>(this, _klayman, (Sprite*)NULL);
_vm->_collisionMan->addSprite(_class489);
_class489->setClipRect(0, 0, 640, _sprite2->getDrawRect().y2());
_class489->setRepl(64, 0);
Expand Down

0 comments on commit 2275141

Please sign in to comment.