diff options
author | Paul Gilbert | 2010-02-17 11:37:17 +0000 |
---|---|---|
committer | Paul Gilbert | 2010-02-17 11:37:17 +0000 |
commit | bf82639c04ccc4508a605f263d844138f6d22a6b (patch) | |
tree | 9d304fbfe846de37139a645080bc7d578697aa28 /engines/m4/scene.cpp | |
parent | 2d03db8a203a8628a2e55c25ad8c1ab0cb47d503 (diff) | |
download | scummvm-rg350-bf82639c04ccc4508a605f263d844138f6d22a6b.tar.gz scummvm-rg350-bf82639c04ccc4508a605f263d844138f6d22a6b.tar.bz2 scummvm-rg350-bf82639c04ccc4508a605f263d844138f6d22a6b.zip |
Implemented player sprite loading portion of scene enter code
svn-id: r48076
Diffstat (limited to 'engines/m4/scene.cpp')
-rw-r--r-- | engines/m4/scene.cpp | 72 |
1 files changed, 55 insertions, 17 deletions
diff --git a/engines/m4/scene.cpp b/engines/m4/scene.cpp index 610b6191f5..a5982219a0 100644 --- a/engines/m4/scene.cpp +++ b/engines/m4/scene.cpp @@ -55,22 +55,7 @@ Scene::Scene(MadsM4Engine *vm): View(vm, Common::Rect(0, 0, vm->_screen->width() } Scene::~Scene() { - _sceneResources.hotspots->clear(); - _sceneResources.parallax->clear(); - _sceneResources.props->clear(); - - delete _sceneResources.hotspots; - delete _sceneResources.parallax; - delete _sceneResources.props; - - delete _backgroundSurface; - delete _codeSurface; - -// _vm->_palette->deleteAllRanges(); - - delete _palData; - delete _interfacePal; - delete[] _inverseColorTable; + leaveScene(); } void Scene::loadScene(int sceneNumber) { @@ -88,6 +73,12 @@ void Scene::loadScene(int sceneNumber) { } } +void Scene::leaveScene() { + delete _palData; + delete _interfacePal; + delete[] _inverseColorTable; +} + void Scene::show() { _vm->_viewManager->addView(this); } @@ -603,7 +594,6 @@ MadsScene::MadsScene(MadsEngine *vm): Scene(vm) { _vm = vm; strcpy(_statusText, ""); - strcpy(_playerSpriteName, ""); _interfaceSurface = new MadsInterfaceView(vm); _currentAction = kVerbNone; } @@ -664,6 +654,25 @@ void MadsScene::loadScene(int sceneNumber) { _vm->res()->purge(); } +void MadsScene::leaveScene() { + _sceneResources.hotspots->clear(); + _sceneResources.parallax->clear(); + _sceneResources.props->clear(); + + delete _sceneResources.hotspots; + delete _sceneResources.parallax; + delete _sceneResources.props; + + // Delete the sprites + for (uint i = 0; i <_sceneSprites.size(); ++i) delete _sceneSprites[i]; + _sceneSprites.clear(); + + delete _backgroundSurface; + delete _codeSurface; + + Scene::leaveScene(); +} + void MadsScene::show() { Scene::show(); _vm->_viewManager->addView(_interfaceSurface); @@ -773,6 +782,35 @@ void MadsScene::update() { } _interfaceSurface->copyTo(this, 0, this->height() - _interfaceSurface->height()); + + //***DEBUG*** + _sceneSprites[0]->getFrame(1)->copyTo(this, 120, 90, 0); +} + +void MadsScene::loadPlayerSprites(const char *prefix) { + const char suffixList[8] = { '8', '9', '6', '3', '2', '7', '4', '1' }; + char setName[80]; + + strcpy(setName, "*"); + strcat(setName, prefix); + strcat(setName, "_0.SS"); + char *digitP = strchr(setName, '_') + 1; + + for (int idx = 0; idx < 8; ++idx) { + *digitP = suffixList[idx]; + + if (_vm->res()->resourceExists(setName)) { + Common::SeekableReadStream *data = _vm->res()->get(setName); + SpriteAsset *playerSprites = new SpriteAsset(_vm, data, data->size(), setName); + playerSprites->translate(_vm->_palette); + _vm->res()->toss(setName); + + _sceneSprites.push_back(playerSprites); + return; + } + } + + error("Couldn't find player sprites"); } } // End of namespace M4 |