Skip to content

Commit

Permalink
PRINCE: showHero(), scrollHero() update
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaslw committed Jul 21, 2014
1 parent 6a4ea9e commit 2024fea
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
39 changes: 26 additions & 13 deletions engines/prince/hero.cpp
Expand Up @@ -53,6 +53,7 @@ Hero::~Hero() {
free(_shadowBitmap);
delete[] _shadowLine;
freeHeroAnim();
freeOldMove();
}

bool Hero::loadAnimSet(uint32 animSetNr) {
Expand Down Expand Up @@ -641,9 +642,8 @@ void Hero::heroStanding() {
}

void Hero::showHero() {
if (_visible) {
//cmp w FLAGI+NOHEROATALL,ax
//jnz @@no_hero_visible
if (_visible && !_vm->_flags->getFlagValue(Flags::NOHEROATALL)) {

if (_talkTime != 0) {
_talkTime--;
}
Expand Down Expand Up @@ -860,13 +860,17 @@ void Hero::showHero() {
_middleY = READ_UINT16(_currCoords - 2);
selectZoom();

free(_coords);
_coords = nullptr;
_currCoords = nullptr;
if (_coords != nullptr) {
free(_coords);
_coords = nullptr;
_currCoords = nullptr;
}

free(_dirTab);
_dirTab = nullptr;
_currDirTab = nullptr;
if (_dirTab != nullptr) {
free(_dirTab);
_dirTab = nullptr;
_currDirTab = nullptr;
}

_boredomTime = 0;
_phase = 0;
Expand Down Expand Up @@ -933,22 +937,31 @@ void Hero::heroMoveGotIt(int x, int y, int dir) {
}
}

//TODO - test this
void Hero::scrollHero() {
//FLAGI+SCROLLTYPE ??
//int scrollType = 0;
int scrollType = _vm->_flags->getFlagValue(Flags::SCROLLTYPE);
int position = _middleX;
int scrollValue, scrollValue2;

/*
switch (scrollType) {
case 0:
position = _middleX;
break;
case 1:
scrollValue = _vm->_flags->getFlagValue(Flags::SCROLLVALUE);
position = _vm->_normAnimList[scrollValue]._currX + _vm->_normAnimList[scrollValue]._currW / 2;
break;
case 2:
scrollValue = _vm->_flags->getFlagValue(Flags::SCROLLVALUE);
scrollValue2 = _vm->_flags->getFlagValue(Flags::SCROLLVALUE2);
position = scrollValue;
if (scrollValue < scrollValue2) {
_vm->_flags->setFlagValue(Flags::SCROLLVALUE, 0);
} else {
_vm->_flags->setFlagValue(Flags::SCROLLVALUE, scrollValue - scrollValue2);
}
break;
}
*/

int locationWidth = _vm->_sceneWidth;
int difference = locationWidth - _vm->kNormalWidth / 2;
Expand Down
3 changes: 3 additions & 0 deletions engines/prince/prince.cpp
Expand Up @@ -469,6 +469,9 @@ bool PrinceEngine::loadLocation(uint16 locationNr) {
_graph->makeShadowTable(70, _graph->_shadowTable70);
_graph->makeShadowTable(50, _graph->_shadowTable50);

_mainHero->freeOldMove();
_secondHero->freeOldMove();

return true;
}

Expand Down

0 comments on commit 2024fea

Please sign in to comment.