LOL/PC-98: fixed minor bugs in text displayer

svn-id: r44834
This commit is contained in:
Florian Kagerer 2009-10-09 17:31:01 +00:00
parent efb1c33715
commit 7825128639
3 changed files with 42 additions and 12 deletions

View File

@ -1579,7 +1579,7 @@ void LoLEngine::initDialogueSequence(int controlMode, int pageNum) {
} else {
_screen->fillRect(0, 128, 319, 199, 1);
gui_drawBox(0, 129, 320, 71, 136, 251, -1);
gui_drawBox(1, 130, 318, 69, 136, 251, 252);
gui_drawBox(1, 130, 318, 69, 136, 251, 252);
}
_screen->modifyScreenDim(5, 8, 131, 306, 66);
@ -2510,7 +2510,10 @@ int LoLEngine::processMagicFireball(int charNum, int spellLevel) {
int sH = ((fb->progress / 8 + shp[2] + fireBallWH) << 8) / shp[2];
if (fb->finalize) {
_screen->drawShape(_screen->_curPage, shp, fX, fY, 0, 0x1004, _trueLightTable1, _trueLightTable2, sW, sH);
if (_flags.use16ColorMode)
_screen->drawShape(_screen->_curPage, shp, fX, fY, 0, 4, sW, sH);
else
_screen->drawShape(_screen->_curPage, shp, fX, fY, 0, 0x1004, _trueLightTable1, _trueLightTable2, sW, sH);
if (finShpIndex2[fb->finProgress] != -1) {
shp = _fireballShapes[finShpIndex2[fb->finProgress]];
@ -2522,7 +2525,10 @@ int LoLEngine::processMagicFireball(int charNum, int spellLevel) {
}
} else {
_screen->drawShape(_screen->_curPage, shp, fX, fY, 0, 0x1004, _trueLightTable1, _trueLightTable2, sW, sH);
if (_flags.use16ColorMode)
_screen->drawShape(_screen->_curPage, shp, fX, fY, 0, 4, sW, sH);
else
_screen->drawShape(_screen->_curPage, shp, fX, fY, 0, 0x1004, _trueLightTable1, _trueLightTable2, sW, sH);
}
if (fb->finalize) {

View File

@ -1274,7 +1274,10 @@ uint16 TIMInterpreter_LoL::processDialogue() {
_screen->fillRect(d->sx, d->sy + d->h - 9, d->sx + d->w - 1, d->sy + d->h - 1, d->unkA);
} else {
const ScreenDim *d = _screen->_curDim;
_screen->fillRect(d->sx, d->sy, d->sx + d->w - (_vm->gameFlags().use16ColorMode ? 3 : 2), d->sy + d->h - 1, d->unkA);
if (_vm->gameFlags().use16ColorMode)
_screen->fillRect(d->sx, d->sy, d->sx + d->w - 3, d->sy + d->h - 2, d->unkA);
else
_screen->fillRect(d->sx, d->sy, d->sx + d->w - 2, d->sy + d->h - 1, d->unkA);
_vm->_txt->clearDim(4);
_vm->_txt->resetDimTextPositions(4);
}

View File

@ -63,9 +63,22 @@ TextDisplayer_LoL::~TextDisplayer_LoL() {
void TextDisplayer_LoL::setupField(bool mode) {
if (_vm->textEnabled()) {
int y = 142;
int h = 37;
int stepY = 3;
int stepH = 1;
if (_vm->gameFlags().use16ColorMode) {
y = 140;
h = 39;
stepY = 4;
stepH = 2;
}
if (mode) {
_screen->copyRegionToBuffer(3, 0, 0, 320, 40, _vm->_pageBuffer1);
_screen->copyRegion(80, 142, 0, 0, 240, 37, 0, 3, Screen::CR_NO_P_CHECK);
_screen->copyRegion(80, y, 0, 0, 240, h, 0, 3, Screen::CR_NO_P_CHECK);
_screen->copyRegionToBuffer(3, 0, 0, 320, 40, _vm->_pageBuffer2);
_screen->copyBlockToPage(3, 0, 0, 320, 40, _vm->_pageBuffer1);
} else {
@ -73,11 +86,11 @@ void TextDisplayer_LoL::setupField(bool mode) {
int cp = _screen->setCurPage(2);
_screen->copyRegionToBuffer(3, 0, 0, 320, 40, _vm->_pageBuffer1);
_screen->copyBlockToPage(3, 0, 0, 320, 40, _vm->_pageBuffer2);
_screen->copyRegion(0, 0, 80, 142, 240, 37, 3, _screen->_curPage, Screen::CR_NO_P_CHECK);
_screen->copyRegion(0, 0, 80, y, 240, h, 3, _screen->_curPage, Screen::CR_NO_P_CHECK);
for (int i = 177; i > 141; i--) {
uint32 endTime = _vm->_system->getMillis() + _vm->_tickLength;
_screen->copyRegion(83, i, 83, i - 1, 235, 3, 0, 0, Screen::CR_NO_P_CHECK);
_screen->copyRegion(83, i - stepH + 1, 83, i - stepH, 235, stepY, 0, 0, Screen::CR_NO_P_CHECK);
_screen->copyRegion(83, i + 1, 83, i + 1, 235, 1, 2, 0, Screen::CR_NO_P_CHECK);
_vm->updateInput();
_screen->updateScreen();
@ -105,14 +118,22 @@ void TextDisplayer_LoL::expandField() {
_vm->_timer->disable(11);
_screen->setScreenDim(clearDim(3));
_screen->copyRegionToBuffer(3, 0, 0, 320, 10, tmp);
if (_vm->gameFlags().use16ColorMode)
_screen->copyRegion(83, 139, 0, 0, 235, 4, 0, 2, Screen::CR_NO_P_CHECK);
else
_screen->copyRegion(83, 140, 0, 0, 235, 3, 0, 2, Screen::CR_NO_P_CHECK);
int y = 140;
int h = 3;
int stepH = 0;
if (_vm->gameFlags().use16ColorMode) {
y = 139;
h = 4;
stepH = 1;
}
_screen->copyRegion(83, y, 0, 0, 235, h, 0, 2, Screen::CR_NO_P_CHECK);
for (int i = 140; i < 177; i++) {
uint32 endTime = _vm->_system->getMillis() + _vm->_tickLength;
_screen->copyRegion(0, 0, 83, i, 235, 3, 2, 0, Screen::CR_NO_P_CHECK);
_screen->copyRegion(0, 0, 83, i - stepH, 235, h, 2, 0, Screen::CR_NO_P_CHECK);
_vm->updateInput();
_screen->updateScreen();
_vm->delayUntil(endTime);