Skip to content

Commit

Permalink
NEVERHOOD: Rename some CollisionMan methods/fields
Browse files Browse the repository at this point in the history
- Remove fallback detector (I think it's not needed)
- Rename Scene insertMouse methods
  • Loading branch information
johndoe123 authored and wjp committed May 8, 2013
1 parent fec1d78 commit 4b7ad48
Show file tree
Hide file tree
Showing 25 changed files with 211 additions and 268 deletions.
40 changes: 11 additions & 29 deletions engines/neverhood/collisionman.cpp
Expand Up @@ -39,16 +39,6 @@ void CollisionMan::setHitRects(uint32 id) {

void CollisionMan::setHitRects(HitRectList *hitRects) {
_hitRects = hitRects;

// DEBUG
if (_hitRects) {
debug("CollisionMan::setHitRects() count = %d", _hitRects->size());
for (HitRectList::iterator it = _hitRects->begin(); it != _hitRects->end(); it++) {
HitRect *hitRect = &(*it);
debug("(%d, %d, %d, %d) -> %04X", hitRect->rect.x1, hitRect->rect.y1, hitRect->rect.x2, hitRect->rect.y2, hitRect->type);
}
}

}

void CollisionMan::clearHitRects() {
Expand All @@ -63,49 +53,41 @@ HitRect *CollisionMan::findHitRectAtPos(int16 x, int16 y) {
return &defaultHitRect;
}

void CollisionMan::addSprite(Sprite *sprite) {
void CollisionMan::addCollisionSprite(Sprite *sprite) {
int index = 0, insertIndex = -1;
for (Common::Array<Sprite*>::iterator iter = _sprites.begin(); iter != _sprites.end(); iter++) {
for (Common::Array<Sprite*>::iterator iter = _collisionSprites.begin(); iter != _collisionSprites.end(); iter++) {
if ((*iter)->getPriority() > sprite->getPriority()) {
insertIndex = index;
break;
}
index++;
}
if (insertIndex >= 0)
_sprites.insert_at(insertIndex, sprite);
_collisionSprites.insert_at(insertIndex, sprite);
else
_sprites.push_back(sprite);
_collisionSprites.push_back(sprite);
}

void CollisionMan::removeSprite(Sprite *sprite) {
for (uint index = 0; index < _sprites.size(); index++) {
if (_sprites[index] == sprite) {
_sprites.remove_at(index);
void CollisionMan::removeCollisionSprite(Sprite *sprite) {
for (uint index = 0; index < _collisionSprites.size(); index++) {
if (_collisionSprites[index] == sprite) {
_collisionSprites.remove_at(index);
break;
}
}
}

void CollisionMan::clearSprites() {
_sprites.clear();
void CollisionMan::clearCollisionSprites() {
_collisionSprites.clear();
}

void CollisionMan::checkCollision(Sprite *sprite, uint16 flags, int messageNum, uint32 messageParam) {
for (Common::Array<Sprite*>::iterator iter = _sprites.begin(); iter != _sprites.end(); iter++) {
for (Common::Array<Sprite*>::iterator iter = _collisionSprites.begin(); iter != _collisionSprites.end(); iter++) {
Sprite *collSprite = *iter;
if ((sprite->getFlags() & flags) && collSprite->checkCollision(sprite->getCollisionBounds())) {
sprite->sendMessage(collSprite, messageNum, messageParam);
}
}
}

void CollisionMan::save() {
// TODO
}

void CollisionMan::restore() {
// TODO
}

} // End of namespace Neverhood
14 changes: 6 additions & 8 deletions engines/neverhood/collisionman.h
Expand Up @@ -37,18 +37,16 @@ class CollisionMan {
void setHitRects(HitRectList *hitRects);
void clearHitRects();
HitRect *findHitRectAtPos(int16 x, int16 y);
void addSprite(Sprite *sprite);
void removeSprite(Sprite *sprite);
void clearSprites();
void addCollisionSprite(Sprite *sprite);
void removeCollisionSprite(Sprite *sprite);
void clearCollisionSprites();
void checkCollision(Sprite *sprite, uint16 flags, int messageNum, uint32 messageParam);
void save();
void restore();
uint getSpriteCount() const { return _sprites.size(); }
Sprite *getSprite(uint index) const { return _sprites[index]; }
uint getCollisionSpritesCount() const { return _collisionSprites.size(); }
Sprite *getCollisionSprite(uint index) const { return _collisionSprites[index]; }
protected:
NeverhoodEngine *_vm;
HitRectList *_hitRects;
Common::Array<Sprite*> _sprites;
Common::Array<Sprite*> _collisionSprites;
};


Expand Down
36 changes: 0 additions & 36 deletions engines/neverhood/detection.cpp
Expand Up @@ -108,26 +108,6 @@ static const NeverhoodGameDescription gameDescriptions[] = {
{ AD_TABLE_END_MARKER, 0, 0, 0, 0 }
};

/**
* The fallback game descriptor used by the Neverhood engine's fallbackDetector.
* Contents of this struct are to be overwritten by the fallbackDetector.
*/
static NeverhoodGameDescription g_fallbackDesc = {
{
"",
"",
AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor
Common::UNK_LANG,
Common::kPlatformPC,
ADGF_NO_FLAGS,
GUIO_NONE
},
0,
0,
0,
0,
};

} // End of namespace Neverhood

class NeverhoodMetaEngine : public AdvancedMetaEngine {
Expand All @@ -152,8 +132,6 @@ class NeverhoodMetaEngine : public AdvancedMetaEngine {
void removeSaveState(const char *target, int slot) const;
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;

const ADGameDescription *fallbackDetect(const Common::FSList &fslist) const;

};

bool NeverhoodMetaEngine::hasFeature(MetaEngineFeature f) const {
Expand Down Expand Up @@ -182,20 +160,6 @@ bool NeverhoodMetaEngine::createInstance(OSystem *syst, Engine **engine, const A
return gd != 0;
}

const ADGameDescription *NeverhoodMetaEngine::fallbackDetect(const Common::FSList &fslist) const {
// Set the default values for the fallback descriptor's ADGameDescription part.
Neverhood::g_fallbackDesc.desc.language = Common::UNK_LANG;
Neverhood::g_fallbackDesc.desc.platform = Common::kPlatformPC;
Neverhood::g_fallbackDesc.desc.flags = ADGF_NO_FLAGS;

// Set default values for the fallback descriptor's NeverhoodGameDescription part.
Neverhood::g_fallbackDesc.gameID = 0;
Neverhood::g_fallbackDesc.features = 0;
Neverhood::g_fallbackDesc.version = 3;

return NULL;
}

SaveStateList NeverhoodMetaEngine::listSaves(const char *target) const {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
Neverhood::NeverhoodEngine::SaveHeader header;
Expand Down
7 changes: 3 additions & 4 deletions engines/neverhood/diskplayerscene.cpp
Expand Up @@ -325,7 +325,7 @@ DiskplayerScene::DiskplayerScene(NeverhoodEngine *vm, Module *parentModule, int
setPalette(kDiskplayerPaletteFileHashes[paletteIndex]);

_ssPlayButton = insertSprite<DiskplayerPlayButton>(this);
_vm->_collisionMan->addSprite(_ssPlayButton);
_vm->_collisionMan->addCollisionSprite(_ssPlayButton);

_asKey = insertSprite<AsDiskplayerSceneKey>();

Expand All @@ -351,7 +351,7 @@ DiskplayerScene::DiskplayerScene(NeverhoodEngine *vm, Module *parentModule, int
_finalDiskSlot = new DiskplayerSlot(_vm, this, 20, 0);
addEntity(_finalDiskSlot);

insertMouse435(0x000408A8, 20, 620);
insertPuzzleMouse(0x000408A8, 20, 620);
showMouse(false);

_diskSmackerPlayer = new SmackerPlayer(_vm, this, 0x08288103, false, true);
Expand Down Expand Up @@ -442,7 +442,6 @@ void DiskplayerScene::update() {
}

uint32 DiskplayerScene::handleMessage(int messageNum, const MessageParam &param, Entity *sender) {
uint32 messageResult = 0;
Scene::handleMessage(messageNum, param, sender);
if (!_inputDisabled) {
switch (messageNum) {
Expand Down Expand Up @@ -473,7 +472,7 @@ uint32 DiskplayerScene::handleMessage(int messageNum, const MessageParam &param,
break;
}
}
return messageResult;
return 0;
}

void DiskplayerScene::stop() {
Expand Down
14 changes: 7 additions & 7 deletions engines/neverhood/menumodule.cpp
Expand Up @@ -240,7 +240,7 @@ MainMenu::MainMenu(NeverhoodEngine *vm, Module *parentModule)

setBackground(0x08C0020C);
setPalette(0x08C0020C);
insertMouse433(0x00208084);
insertScreenMouse(0x00208084);

insertStaticSprite(0x41137051, 100);
insertStaticSprite(0xC10B2015, 100);
Expand All @@ -251,7 +251,7 @@ MainMenu::MainMenu(NeverhoodEngine *vm, Module *parentModule)
for (uint buttonIndex = 0; buttonIndex < 9; ++buttonIndex) {
Sprite *menuButton = insertSprite<MenuButton>(this, buttonIndex,
kMenuButtonFileHashes[buttonIndex], kMenuButtonCollisionBounds[buttonIndex]);
_vm->_collisionMan->addSprite(menuButton);
_vm->_collisionMan->addCollisionSprite(menuButton);
}

SetUpdateHandler(&Scene::update);
Expand Down Expand Up @@ -466,7 +466,7 @@ TextLabelWidget::TextLabelWidget(NeverhoodEngine *vm, int16 x, int16 y, int16 it

void TextLabelWidget::addSprite() {
_parentScene->addSprite(this);
_vm->_collisionMan->addSprite(this);
_vm->_collisionMan->addCollisionSprite(this);
}

int16 TextLabelWidget::getWidth() {
Expand Down Expand Up @@ -544,7 +544,7 @@ void TextEditWidget::addSprite() {
createSurface(_baseSurfacePriority, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
refreshPosition();
_parentScene->addSprite(this);
_vm->_collisionMan->addSprite(this);
_vm->_collisionMan->addCollisionSprite(this);
_surface->setVisible(true);
_textLabelWidget = new TextLabelWidget(_vm, _rect.x1, _rect.y1 + (_rect.y2 - _rect.y1 + 1 - _textSurface->getCharHeight()) / 2,
0, _parentScene, _baseObjectPriority + 1, _baseSurfacePriority + 1,
Expand Down Expand Up @@ -708,7 +708,7 @@ void SavegameListBox::addSprite() {
createSurface(_baseSurfacePriority, _spriteResource.getDimensions().width, _spriteResource.getDimensions().height);
refreshPosition();
_parentScene->addSprite(this);
_vm->_collisionMan->addSprite(this);
_vm->_collisionMan->addCollisionSprite(this);
_surface->setVisible(true);
buildItems();
_firstVisibleItem = 0;
Expand Down Expand Up @@ -809,7 +809,7 @@ SaveGameMenu::SaveGameMenu(NeverhoodEngine *vm, Module *parentModule, StringArra

setBackground(0x30084E25);
setPalette(0x30084E25);
insertMouse433(0x84E21308, &kMouseRect);
insertScreenMouse(0x84E21308, &kMouseRect);
insertStaticSprite(0x1340A5C2, 200);
insertStaticSprite(0x1301A7EA, 200);

Expand All @@ -826,7 +826,7 @@ SaveGameMenu::SaveGameMenu(NeverhoodEngine *vm, Module *parentModule, StringArra
for (uint buttonIndex = 0; buttonIndex < 6; ++buttonIndex) {
Sprite *menuButton = insertSprite<MenuButton>(this, buttonIndex,
kSaveGameMenuButtonFileHashes[buttonIndex], kSaveGameMenuButtonCollisionBounds[buttonIndex]);
_vm->_collisionMan->addSprite(menuButton);
_vm->_collisionMan->addCollisionSprite(menuButton);
}


Expand Down
14 changes: 7 additions & 7 deletions engines/neverhood/module1000.cpp
Expand Up @@ -344,7 +344,7 @@ Scene1001::Scene1001(NeverhoodEngine *vm, Module *parentModule, int which)
setHitRects(0x004B4860);
setBackground(0x4086520E);
setPalette(0x4086520E);
insertMouse433(0x6520A400);
insertScreenMouse(0x6520A400);

if (which < 0) {
// Restoring game
Expand Down Expand Up @@ -1226,7 +1226,7 @@ Scene1002::Scene1002(NeverhoodEngine *vm, Module *parentModule, int which)
_vm->_gameState.which = 0;
}

insertMouse433(0x23303124);
insertScreenMouse(0x23303124);

tempSprite = insertStaticSprite(0xB3242310, 825);
tempClipRect.set(tempSprite->getDrawRect().x, tempSprite->getDrawRect().y,
Expand All @@ -1243,7 +1243,7 @@ Scene1002::Scene1002(NeverhoodEngine *vm, Module *parentModule, int which)
_asDoorSpy = insertSprite<AsScene1002DoorSpy>(tempClipRect, this, _asDoor, tempSprite);
_ssPressButton = insertSprite<SsCommonPressButton>(this, 0x00412692, 0x140B60BE, 800, 0);
_asVenusFlyTrap = insertSprite<AsScene1002VenusFlyTrap>(this, _klayman, false);
_vm->_collisionMan->addSprite(_asVenusFlyTrap);
_vm->_collisionMan->addCollisionSprite(_asVenusFlyTrap);

sendEntityMessage(_klayman, 0x2007, _asVenusFlyTrap);

Expand Down Expand Up @@ -1395,7 +1395,7 @@ StaticScene::StaticScene(NeverhoodEngine *vm, Module *parentModule, uint32 backg

setBackground(backgroundFileHash);
setPalette(backgroundFileHash);
insertMouse435(cursorFileHash, 20, 620);
insertPuzzleMouse(cursorFileHash, 20, 620);
}

uint32 StaticScene::handleMessage(int messageNum, const MessageParam &param, Entity *sender) {
Expand Down Expand Up @@ -1460,7 +1460,7 @@ Scene1004::Scene1004(NeverhoodEngine *vm, Module *parentModule, int which)
}
addEntity(_palette);

insertMouse433(0x03001504);
insertScreenMouse(0x03001504);

if (which < 0) {
// Restoring game
Expand Down Expand Up @@ -1550,13 +1550,13 @@ Scene1005::Scene1005(NeverhoodEngine *vm, Module *parentModule, int which)
setBackground(0x2800E011);
setPalette(0x2800E011);
insertStaticSprite(0x492D5AD7, 100);
insertMouse435(0x0E015288, 20, 620);
insertPuzzleMouse(0x0E015288, 20, 620);
} else {
setBackground(0x8870A546);
setPalette(0x8870A546);
insertStaticSprite(0x40D1E0A9, 100);
insertStaticSprite(0x149C00A6, 100);
insertMouse435(0x0A54288F, 20, 620);
insertPuzzleMouse(0x0A54288F, 20, 620);
}

drawTextToBackground();
Expand Down
22 changes: 11 additions & 11 deletions engines/neverhood/module1100.cpp
Expand Up @@ -444,8 +444,8 @@ Scene1105::Scene1105(NeverhoodEngine *vm, Module *parentModule)

_asTeddyBear = insertSprite<AsScene1105TeddyBear>(this);
ssOpenButton = insertSprite<SsScene1105OpenButton>(this);
_vm->_collisionMan->addSprite(ssOpenButton);
insertMouse435(0x10006208, 20, 620);
_vm->_collisionMan->addCollisionSprite(ssOpenButton);
insertPuzzleMouse(0x10006208, 20, 620);

loadSound(0, 0x48442057);
loadSound(1, 0xC025014F);
Expand Down Expand Up @@ -555,27 +555,27 @@ void Scene1105::createObjects() {
_ssSymbolDice[2] = insertSprite<SsScene1105SymbolDie>(2, 485, 304);

_ssSymbol1UpButton = insertSprite<SsScene1105Button>(this, 0x08002860, NRect(146, 362, 192, 403));
_vm->_collisionMan->addSprite(_ssSymbol1UpButton);
_vm->_collisionMan->addCollisionSprite(_ssSymbol1UpButton);
_ssSymbol1DownButton = insertSprite<SsScene1105Button>(this, 0x42012460, NRect(147, 404, 191, 442));
_vm->_collisionMan->addSprite(_ssSymbol1DownButton);
_vm->_collisionMan->addCollisionSprite(_ssSymbol1DownButton);
_ssSymbol2UpButton = insertSprite<SsScene1105Button>(this, 0x100030A0, NRect(308, 361, 355, 402));
_vm->_collisionMan->addSprite(_ssSymbol2UpButton);
_vm->_collisionMan->addCollisionSprite(_ssSymbol2UpButton);
_ssSymbol2DownButton = insertSprite<SsScene1105Button>(this, 0x840228A0, NRect(306, 406, 352, 445));
_vm->_collisionMan->addSprite(_ssSymbol2DownButton);
_vm->_collisionMan->addCollisionSprite(_ssSymbol2DownButton);
_ssSymbol3UpButton = insertSprite<SsScene1105Button>(this, 0x20000120, NRect(476, 358, 509, 394));
_vm->_collisionMan->addSprite(_ssSymbol3UpButton);
_vm->_collisionMan->addCollisionSprite(_ssSymbol3UpButton);
_ssSymbol3DownButton = insertSprite<SsScene1105Button>(this, 0x08043121, NRect(463, 401, 508, 438));
_vm->_collisionMan->addSprite(_ssSymbol3DownButton);
_vm->_collisionMan->addCollisionSprite(_ssSymbol3DownButton);
_ssActionButton = insertSprite<SsScene1105Button>(this, 0x8248AD35, NRect(280, 170, 354, 245));
_vm->_collisionMan->addSprite(_ssActionButton);
_vm->_collisionMan->addCollisionSprite(_ssActionButton);

_isPanelOpen = true;

_asTeddyBear->show();

// TODO: Find a nicer way
deleteSprite((Sprite**)&_mouseCursor);
insertMouse435(0x18666208, 20, 620);
insertPuzzleMouse(0x18666208, 20, 620);

}

Expand Down Expand Up @@ -652,7 +652,7 @@ Scene1109::Scene1109(NeverhoodEngine *vm, Module *parentModule, int which)

setBackground(0x8449E02F);
setPalette(0x8449E02F);
insertMouse433(0x9E02B84C);
insertScreenMouse(0x9E02B84C);

_sprite1 = insertStaticSprite(0x600CEF01, 1100);

Expand Down

0 comments on commit 4b7ad48

Please sign in to comment.