aboutsummaryrefslogtreecommitdiff
path: root/engines/prince/prince.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/prince/prince.cpp')
-rw-r--r--engines/prince/prince.cpp46
1 files changed, 31 insertions, 15 deletions
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp
index 533d2f4c57..f987ff222f 100644
--- a/engines/prince/prince.cpp
+++ b/engines/prince/prince.cpp
@@ -108,13 +108,22 @@ PrinceEngine::~PrinceEngine() {
delete _variaTxt;
delete[] _talkTxt;
delete _graph;
- delete _mainHero;
- delete _secondHero;
- for (uint i = 0; i < _objList.size(); ++i) {
+ for (uint i = 0; i < _objList.size(); i++) {
delete _objList[i];
}
_objList.clear();
+
+ for (uint i = 0; i < _mainHero->_moveSet.size(); i++) {
+ delete _mainHero->_moveSet[i];
+ }
+
+ for (uint i = 0; i < _secondHero->_moveSet.size(); i++) {
+ delete _secondHero->_moveSet[i];
+ }
+
+ delete _mainHero;
+ delete _secondHero;
}
GUI::Debugger *PrinceEngine::getDebugger() {
@@ -189,7 +198,8 @@ void PrinceEngine::init() {
_mainHero = new Hero(this, _graph);
_secondHero = new Hero(this, _graph);
- _mainHero->loadAnimSet(0);
+ _mainHero->loadAnimSet(1);
+ _secondHero->loadAnimSet(3);
}
void PrinceEngine::showLogo() {
@@ -278,6 +288,7 @@ bool PrinceEngine::loadLocation(uint16 locationNr) {
Resource::loadResource(_roomBmp, "room");
if (_roomBmp->getSurface()) {
_sceneWidth = _roomBmp->getSurface()->w;
+ _graph->setPalette(_roomBmp->getPalette());
}
_mainHero->_zoomBitmap->clear();
@@ -532,16 +543,16 @@ void PrinceEngine::keyHandler(Common::Event event) {
debugEngine("%d", _mainHero->_state);
break;
case Common::KEYCODE_i:
- _mainHero->_middleY -= 10;
+ _mainHero->_middleY -= 5;
break;
case Common::KEYCODE_k:
- _mainHero->_middleY += 10;
+ _mainHero->_middleY += 5;
break;
case Common::KEYCODE_j:
- _mainHero->_middleX -= 10;
+ _mainHero->_middleX -= 5;
break;
case Common::KEYCODE_l:
- _mainHero->_middleX += 10;
+ _mainHero->_middleX += 5;
break;
}
}
@@ -633,20 +644,25 @@ void PrinceEngine::showTexts() {
void PrinceEngine::drawScreen() {
const Graphics::Surface *roomSurface = _roomBmp->getSurface();
if (roomSurface) {
- _graph->setPalette(_roomBmp->getPalette());
const Graphics::Surface visiblePart = roomSurface->getSubArea(Common::Rect(_picWindowX, 0, roomSurface->w, roomSurface->h));
_graph->draw(0, 0, &visiblePart);
}
if (_mainHero->_visible) {
- const Graphics::Surface *mainHeroSurface = _mainHero->getSurface();
- //const Graphics::Surface *mainHeroShadow = _mainHero->showHeroShadow();
-
+ Graphics::Surface *mainHeroSurface = _mainHero->getSurface();
if (mainHeroSurface) {
- _mainHero->showHeroShadow();
- _graph->drawTransparent(_mainHero->_drawX, _mainHero->_drawY, mainHeroSurface);
- //_graph->drawTransparent(_mainHero->_shadowDrawX, _mainHero->_shadowDrawY, mainHeroShadow);
+ _mainHero->showHeroShadow(mainHeroSurface);
+ if (_mainHero->_zoomFactor != 0) {
+ Graphics::Surface *zoomedHeroSurface = _mainHero->zoomSprite(mainHeroSurface);
+ _graph->drawTransparent(_mainHero->_drawX, _mainHero->_drawY, zoomedHeroSurface);
+ zoomedHeroSurface->free();
+ delete zoomedHeroSurface;
+ } else {
+ _graph->drawTransparent(_mainHero->_drawX, _mainHero->_drawY, mainHeroSurface);
+ }
}
+ mainHeroSurface->free();
+ delete mainHeroSurface;
}
playNextFrame();