diff options
Diffstat (limited to 'engines/m4/scene.cpp')
-rw-r--r-- | engines/m4/scene.cpp | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/engines/m4/scene.cpp b/engines/m4/scene.cpp deleted file mode 100644 index be49dcb13f..0000000000 --- a/engines/m4/scene.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "common/system.h" - -#include "m4/dialogs.h" -#include "m4/globals.h" -#include "m4/scene.h" -#include "m4/events.h" -#include "m4/graphics.h" -#include "m4/rails.h" -#include "m4/font.h" -#include "m4/m4_views.h" -#include "m4/mads_views.h" -#include "m4/compression.h" -#include "m4/staticres.h" - -namespace M4 { - -Scene::Scene(MadsM4Engine *vm, SceneResources *res): View(vm, Common::Rect(0, 0, vm->_screen->width(), - vm->_screen->height())), _sceneResources(res) { - _screenType = VIEWID_SCENE; - - _sceneResources->hotspots = new HotSpotList(); - _sceneResources->dynamicHotspots = new HotSpotList(); - _backgroundSurface = new M4Surface(); - _walkSurface = new M4Surface(); - _palData = NULL; - _interfacePal = NULL; - _interfaceSurface = NULL; - _vm->_rails->setCodeSurface(_walkSurface); - _currentScene = -1; -} - -Scene::~Scene() { - leaveScene(); - _vm->_scene = NULL; -} - -void Scene::loadScene(int sceneNumber) { - _previousScene = _currentScene; - _currentScene = sceneNumber; - _nextScene = sceneNumber; -} - -void Scene::leaveScene() { - if (_palData) { - _vm->_palette->deleteRange(_palData); - delete _palData; - _palData = NULL; - } - if (_interfacePal) { - _vm->_palette->deleteRange(_interfacePal); - delete _interfacePal; - _interfacePal = NULL; - } -} - -void Scene::show() { - _vm->_viewManager->addView(this); -} - -void Scene::showInterface() { - _vm->_viewManager->addView(_interfaceSurface); -} - -void Scene::hideInterface() { - _vm->_viewManager->deleteView(_interfaceSurface); -} - -void Scene::showSprites() { - // TODO: This is all experimental code, it needs heavy restructuring - // and cleanup - - // taken from set_walker_scaling() in adv_walk.cpp. A proper implementation will need - // to store these in global variables - int minScaling = FixedDiv(_sceneResources->backScale << 16, 100 << 16); - int maxScaling = FixedDiv(_sceneResources->frontScale << 16, 100 << 16); - int scaler; - - _vm->_actor->setWalkerDirection(kFacingSouthEast); - //_vm->_actor->setWalkerPalette(); - - // taken from set_walker_scaling() in adv_walk.cpp - if (_sceneResources->frontY == _sceneResources->backY) - scaler = 0; - else - scaler = FixedDiv(maxScaling - minScaling, - (_sceneResources->frontY << 16) - (_sceneResources->backY << 16)); - - // FIXME: For now, we (incorrectly) scale the walker to 50% of the scene's max scaling - _vm->_actor->setWalkerScaling(scaler / 2); - // Test code to display the protagonist - _vm->_actor->placeWalkerSpriteAt(0, 320, 200); - - // Test code to display scene sprites - // TODO -} - -// Test function, shows all scene hotspots -void Scene::showHotSpots() { - int i = 0; - HotSpot *currentHotSpot; - - // hotspots (green) - for (i = 0; i < _sceneResources->hotspots->size(); i++) { - currentHotSpot = _sceneResources->hotspots->get(i); - _backgroundSurface->frameRect(currentHotSpot->getRect(), _vm->_palette->GREEN); - } - - // Dynamic hotspots (red) - for (i = 0; i < _sceneResources->dynamicHotspots->size(); i++) { - currentHotSpot = _sceneResources->dynamicHotspots->get(i); - _backgroundSurface->frameRect(currentHotSpot->getRect(), _vm->_palette->RED); - } -} - -/** - * Debug function that shows the walkable areas by copying them over the current background surface - */ -void Scene::showCodes() { - if (_vm->isM4()) { - // Show the walk areas for the M4 engine in black and white - const byte *srcP = (const byte *)_walkSurface->getBasePtr(0, 0); - byte *destP = _backgroundSurface->getBasePtr(0, 0); - - for (int i = 0; i < _walkSurface->width() * _walkSurface->height(); i++) - destP[i] = (srcP[i] & 0x10) ? 0xFF : 0; - - byte colors[256 * 3]; - memset(colors, 0, sizeof(colors)); - colors[255 * 3 + 0] = 255; - colors[255 * 3 + 1] = 255; - colors[255 * 3 + 2] = 255; - _vm->_palette->setPalette(colors, 0, 256); - } else { - // MADS handling - - // copy the walk data to the background, in whatever current palette is active - _walkSurface->copyTo(_backgroundSurface); - - // Show all the scene's walk nodes - SceneNodeList &nodeList = _madsVm->scene()->getSceneResources()._nodes; - _backgroundSurface->setColor(_madsVm->_palette->WHITE); - for (uint i = 0; i < nodeList.size() - 2; ++i) { - // Draw a little cross at the node's position - _backgroundSurface->hLine(nodeList[i].pt.x - 2, nodeList[i].pt.x + 2, nodeList[i].pt.y); - _backgroundSurface->vLine(nodeList[i].pt.x, nodeList[i].pt.y - 2, nodeList[i].pt.y + 2); - } - - ((MadsScene *)this)->_spriteSlots.fullRefresh(); - } -} - -void Scene::playIntro() { - -} - -void Scene::onRefresh(RectList *rects, M4Surface *destSurface) { - update(); - View::onRefresh(rects, destSurface); -} - -bool Scene::onEvent(M4EventType eventType, int32 param1, int x, int y, bool &captureEvents) { - //if (_vm->getGameType() != GType_Burger) - // return false; - - // If the game is currently paused, don't do any scene processing - if (_vm->_kernel->paused) - return false; - - switch (eventType) { - case MEVENT_LEFT_CLICK: - leftClick(x, y); - break; - case MEVENT_RIGHT_CLICK: - rightClick(x, y); - break; - case MEVENT_MOVE: - mouseMove(x, y); - break; - default: - return false; - } - - return true; -} - -} // End of namespace M4 |