scummvm/engines/dreamweb/keypad.cpp
D G Turner 617f6179c1 DREAMWEB: Change various loop variables to uint, rather than size_t.
This is partly for readability and partly to avoid any possible
portability issues i.e. though they should be the same, size_t is
defined by system headers, whereas uint is defined within our build
system.

Also, replaced a array size calculation with our ARRAYSIZE macro.
2012-11-30 12:08:55 +00:00

867 lines
20 KiB
C++

/* 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 "dreamweb/sound.h"
#include "dreamweb/dreamweb.h"
namespace DreamWeb {
const uint16 kKeypadx = 36+112;
const uint16 kKeypady = 72;
void DreamWebEngine::enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3) {
RectWithCallback keypadList[] = {
{ kKeypadx+9,kKeypadx+30,kKeypady+9,kKeypady+22,&DreamWebEngine::buttonOne },
{ kKeypadx+31,kKeypadx+52,kKeypady+9,kKeypady+22,&DreamWebEngine::buttonTwo },
{ kKeypadx+53,kKeypadx+74,kKeypady+9,kKeypady+22,&DreamWebEngine::buttonThree },
{ kKeypadx+9,kKeypadx+30,kKeypady+23,kKeypady+40,&DreamWebEngine::buttonFour },
{ kKeypadx+31,kKeypadx+52,kKeypady+23,kKeypady+40,&DreamWebEngine::buttonFive },
{ kKeypadx+53,kKeypadx+74,kKeypady+23,kKeypady+40,&DreamWebEngine::buttonSix },
{ kKeypadx+9,kKeypadx+30,kKeypady+41,kKeypady+58,&DreamWebEngine::buttonSeven },
{ kKeypadx+31,kKeypadx+52,kKeypady+41,kKeypady+58,&DreamWebEngine::buttonEight },
{ kKeypadx+53,kKeypadx+74,kKeypady+41,kKeypady+58,&DreamWebEngine::buttonNine },
{ kKeypadx+9,kKeypadx+30,kKeypady+59,kKeypady+73,&DreamWebEngine::buttonNought },
{ kKeypadx+31,kKeypadx+74,kKeypady+59,kKeypady+73,&DreamWebEngine::buttonEnter },
{ kKeypadx+72,kKeypadx+86,kKeypady+80,kKeypady+94,&DreamWebEngine::quitKey },
{ 0,320,0,200,&DreamWebEngine::blank },
{ 0xFFFF,0,0,0,0 }
};
getRidOfReels();
loadKeypad();
createPanel();
showIcon();
showOuterPad();
showKeypad();
readMouse();
showPointer();
workToScreen();
delPointer();
_pressPointer = 0;
_getBack = 0;
while (true) {
delPointer();
readMouse();
showKeypad();
showPointer();
waitForVSync();
if (_pressCount == 0) {
_pressed = 255;
_graphicPress = 255;
waitForVSync();
} else
--_pressCount;
dumpPointer();
dumpKeypad();
dumpTextLine();
checkCoords(keypadList);
if (_quitRequested || (_getBack == 1))
break;
if (_lightCount == 1) {
if (_vars._lockStatus == 0)
break;
} else {
if (_pressCount == 40) {
addToPressList();
if (_pressed == 11) {
if (isItRight(digit0, digit1, digit2, digit3))
_vars._lockStatus = 0;
_sound->playChannel1(11);
_lightCount = 120;
_pressPointer = 0;
}
}
}
}
_manIsOffScreen = 0;
_keypadGraphics.clear();
restoreReels();
redrawMainScrn();
workToScreenM();
}
// Note: isItRight comes from use.asm, but is only used by enterCode(),
// so we place it here.
bool DreamWebEngine::isItRight(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3) {
return digit0 == _pressList[0] && digit1 == _pressList[1]
&& digit2 == _pressList[2] && digit3 == _pressList[3];
}
void DreamWebEngine::loadKeypad() {
loadGraphicsFile(_keypadGraphics, "G02");
}
void DreamWebEngine::quitKey() {
commandOnlyCond(4, 222);
if (_mouseButton != _oldButton && (_mouseButton & 1))
_getBack = 1;
}
void DreamWebEngine::addToPressList() {
if (_pressPointer == 5)
return;
uint8 pressed = _pressed;
if (pressed == 10)
pressed = 0;
_pressList[_pressPointer] = pressed;
++_pressPointer;
}
void DreamWebEngine::buttonOne() {
buttonPress(1);
}
void DreamWebEngine::buttonTwo() {
buttonPress(2);
}
void DreamWebEngine::buttonThree() {
buttonPress(3);
}
void DreamWebEngine::buttonFour() {
buttonPress(4);
}
void DreamWebEngine::buttonFive() {
buttonPress(5);
}
void DreamWebEngine::buttonSix() {
buttonPress(6);
}
void DreamWebEngine::buttonSeven() {
buttonPress(7);
}
void DreamWebEngine::buttonEight() {
buttonPress(8);
}
void DreamWebEngine::buttonNine() {
buttonPress(9);
}
void DreamWebEngine::buttonNought() {
buttonPress(10);
}
void DreamWebEngine::buttonEnter() {
buttonPress(11);
}
void DreamWebEngine::buttonPress(uint8 buttonId) {
commandOnlyCond(buttonId + 4, buttonId + 100);
if ((_mouseButton & 1) && (_mouseButton != _oldButton)) {
_pressed = buttonId;
_graphicPress = buttonId + 21;
_pressCount = 40;
if (buttonId != 11)
_sound->playChannel1(10);
}
}
void DreamWebEngine::showOuterPad() {
showFrame(_keypadGraphics, kKeypadx-3, kKeypady-4, 1, 0);
showFrame(_keypadGraphics, kKeypadx+74, kKeypady+76, 37, 0);
}
void DreamWebEngine::showKeypad() {
singleKey(22, kKeypadx+9, kKeypady+5);
singleKey(23, kKeypadx+31, kKeypady+5);
singleKey(24, kKeypadx+53, kKeypady+5);
singleKey(25, kKeypadx+9, kKeypady+23);
singleKey(26, kKeypadx+31, kKeypady+23);
singleKey(27, kKeypadx+53, kKeypady+23);
singleKey(28, kKeypadx+9, kKeypady+41);
singleKey(29, kKeypadx+31, kKeypady+41);
singleKey(30, kKeypadx+53, kKeypady+41);
singleKey(31, kKeypadx+9, kKeypady+59);
singleKey(32, kKeypadx+31, kKeypady+59);
if (_lightCount) {
--_lightCount;
uint8 frameIndex;
uint16 y;
if (_vars._lockStatus) {
frameIndex = 36;
y = kKeypady-1+63;
} else {
frameIndex = 41;
y = kKeypady+4+63;
}
if ((_lightCount >= 60) && (_lightCount < 100))
--frameIndex;
showFrame(_keypadGraphics, kKeypadx+60, y, frameIndex, 0);
}
}
void DreamWebEngine::singleKey(uint8 key, uint16 x, uint16 y) {
if (key == _graphicPress) {
key += 11;
if (_pressCount < 8)
key -= 11;
}
key -= 20;
showFrame(_keypadGraphics, x, y, key, 0);
}
void DreamWebEngine::dumpKeypad() {
multiDump(kKeypadx - 3, kKeypady - 4, 120, 90);
}
void DreamWebEngine::useMenu() {
getRidOfReels();
loadMenu();
createPanel();
showPanel();
showIcon();
_vars._newObs = 0;
drawFloor();
printSprites();
showFrame(_menuGraphics2, kMenux-48, kMenuy-4, 4, 0);
getUnderMenu();
showFrame(_menuGraphics2, kMenux+54, kMenuy+72, 5, 0);
workToScreenM();
_getBack = 0;
do {
delPointer();
putUnderMenu();
showMenu();
readMouse();
showPointer();
waitForVSync();
dumpPointer();
dumpMenu();
dumpTextLine();
RectWithCallback menuList[] = {
{ kMenux+54,kMenux+68,kMenuy+72,kMenuy+88,&DreamWebEngine::quitKey },
{ 0,320,0,200,&DreamWebEngine::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(menuList);
} while ((_getBack != 1) && !_quitRequested);
_manIsOffScreen = 0;
redrawMainScrn();
_menuGraphics.clear();
_menuGraphics2.clear();
restoreReels();
workToScreenM();
}
void DreamWebEngine::dumpMenu() {
multiDump(kMenux, kMenuy, 48, 48);
}
void DreamWebEngine::getUnderMenu() {
multiGet(_underTimedText, kMenux, kMenuy, 48, 48);
}
void DreamWebEngine::putUnderMenu() {
multiPut(_underTimedText, kMenux, kMenuy, 48, 48);
}
// Note: showoutermenu from the asm version was unused and thus not placed here
void DreamWebEngine::showMenu() {
++_menuCount;
if (_menuCount == 37*2)
_menuCount = 0;
showFrame(_menuGraphics, kMenux, kMenuy, _menuCount / 2, 0);
}
void DreamWebEngine::loadMenu() {
loadGraphicsFile(_menuGraphics, "S02"); // sprite name 3
loadGraphicsFile(_menuGraphics2, "G07"); // mon. graphics 2
}
void DreamWebEngine::viewFolder() {
_manIsOffScreen = 1;
getRidOfAll();
loadFolder();
_folderPage = 0;
showFolder();
workToScreenM();
_getBack = 0;
do {
if (_quitRequested)
break;
delPointer();
readMouse();
showPointer();
waitForVSync();
dumpPointer();
dumpTextLine();
checkFolderCoords();
} while (_getBack == 0);
_manIsOffScreen = 0;
_folderGraphics.clear();
_folderGraphics2.clear();
_folderGraphics3.clear();
_folderCharset.clear();
restoreAll();
redrawMainScrn();
workToScreenM();
}
void DreamWebEngine::nextFolder() {
if (_folderPage == 12) {
blank();
return;
}
commandOnlyCond(16, 201);
if ((_mouseButton == 1) && (_mouseButton != _oldButton)) {
++_folderPage;
folderHints();
delPointer();
showFolder();
_mouseButton = 0;
checkFolderCoords();
workToScreenM();
}
}
void DreamWebEngine::folderHints() {
if (_folderPage == 5) {
if ((_vars._aideDead != 1) && (getLocation(13) != 1)) {
setLocation(13);
showFolder();
const uint8 *string = getTextInFile1(30);
printDirect(string, 0, 86, 141, true);
workToScreenM();
hangOnP(200);
}
} else if (_folderPage == 9) {
if (getLocation(7) != 1) {
setLocation(7);
showFolder();
const uint8 *string = getTextInFile1(31);
printDirect(string, 0, 86, 141, true);
workToScreenM();
hangOnP(200);
}
}
}
void DreamWebEngine::lastFolder() {
if (_folderPage == 0) {
blank();
return;
}
commandOnlyCond(17, 202);
if ((_mouseButton == 1) && (_mouseButton != _oldButton)) {
--_folderPage;
delPointer();
showFolder();
_mouseButton = 0;
checkFolderCoords();
workToScreenM();
}
}
void DreamWebEngine::checkFolderCoords() {
RectWithCallback folderList[] = {
{ 280,320,160,200, &DreamWebEngine::quitKey },
{ 143,300,6,194, &DreamWebEngine::nextFolder },
{ 0,143,6,194, &DreamWebEngine::lastFolder },
{ 0,320,0,200, &DreamWebEngine::blank },
{ 0xFFFF,0,0,0, 0 }
};
checkCoords(folderList);
}
void DreamWebEngine::loadFolder() {
loadGraphicsFile(_folderGraphics, "G09"); // folder graphics 1
loadGraphicsFile(_folderGraphics2, "G10"); // folder graphics 2
loadGraphicsFile(_folderGraphics3, "G11"); // folder graphics 3
loadGraphicsFile(_folderCharset, "C02"); // character set 3
loadTempText("T50"); // folder text
}
void DreamWebEngine::showFolder() {
_commandType = 255;
if (_folderPage) {
useTempCharset(&_folderCharset);
createPanel2();
showFrame(_folderGraphics, 0, 0, 0, 0);
showFrame(_folderGraphics, 143, 0, 1, 0);
showFrame(_folderGraphics, 0, 92, 2, 0);
showFrame(_folderGraphics, 143, 92, 3, 0);
folderExit();
if (_folderPage != 1)
showLeftPage();
if (_folderPage != 12)
showRightPage();
useCharset1();
underTextLine();
} else {
createPanel2();
showFrame(_folderGraphics3, 143-28, 0, 0, 0);
showFrame(_folderGraphics3, 143-28, 92, 1, 0);
folderExit();
underTextLine();
}
}
void DreamWebEngine::folderExit() {
showFrame(_folderGraphics2, 296, 178, 6, 0);
}
void DreamWebEngine::showLeftPage() {
showFrame(_folderGraphics2, 0, 12, 3, 0);
uint16 y = 12+5;
for (uint i = 0; i < 9; ++i) {
showFrame(_folderGraphics2, 0, y, 4, 0);
y += 16;
}
showFrame(_folderGraphics2, 0, y, 5, 0);
_lineSpacing = 8;
_charShift = 91;
_kerning = 1;
uint8 pageIndex = _folderPage - 2;
const uint8 *string = getTextInFile1(pageIndex * 2);
y = 48;
for (uint i = 0; i < 2; ++i) {
uint8 lastChar;
do {
lastChar = printDirect(&string, 2, &y, 140, false);
y += _lineSpacing;
} while (lastChar != '\0');
}
_kerning = 0;
_charShift = 0;
_lineSpacing = 10;
uint8 *bufferToSwap = workspace() + (48*kScreenwidth)+2;
for (uint i = 0; i < 120; ++i) {
for (uint j = 0; j < 65; ++j) {
SWAP(bufferToSwap[j], bufferToSwap[130 - j]);
}
bufferToSwap += kScreenwidth;
}
}
void DreamWebEngine::showRightPage() {
showFrame(_folderGraphics2, 143, 12, 0, 0);
uint16 y = 12+37;
for (uint i = 0; i < 7; ++i) {
showFrame(_folderGraphics2, 143, y, 1, 0);
y += 16;
}
showFrame(_folderGraphics2, 143, y, 2, 0);
_lineSpacing = 8;
_kerning = 1;
uint8 pageIndex = _folderPage - 1;
const uint8 *string = getTextInFile1(pageIndex * 2);
y = 48;
for (uint i = 0; i < 2; ++i) {
uint8 lastChar;
do {
lastChar = printDirect(&string, 152, &y, 140, false);
y += _lineSpacing;
} while (lastChar != '\0');
}
_kerning = 0;
_lineSpacing = 10;
}
void DreamWebEngine::enterSymbol() {
_manIsOffScreen = 1;
getRidOfReels();
loadGraphicsFile(_symbolGraphics, "G12"); // symbol graphics
_symbolTopX = 24;
_symbolTopDir = 0;
_symbolBotX = 24;
_symbolBotDir = 0;
redrawMainScrn();
showSymbol();
underTextLine();
workToScreenM();
_getBack = 0;
do {
delPointer();
updateSymbolTop();
updateSymbolBot();
showSymbol();
readMouse();
showPointer();
waitForVSync();
dumpPointer();
dumpTextLine();
dumpSymbol();
RectWithCallback symbolList[] = {
{ kSymbolx+40,kSymbolx+64,kSymboly+2,kSymboly+16,&DreamWebEngine::quitSymbol },
{ kSymbolx,kSymbolx+52,kSymboly+20,kSymboly+50,&DreamWebEngine::setTopLeft },
{ kSymbolx+52,kSymbolx+104,kSymboly+20,kSymboly+50,&DreamWebEngine::setTopRight },
{ kSymbolx,kSymbolx+52,kSymboly+50,kSymboly+80,&DreamWebEngine::setBotLeft },
{ kSymbolx+52,kSymbolx+104,kSymboly+50,kSymboly+80,&DreamWebEngine::setBotRight },
{ 0,320,0,200,&DreamWebEngine::blank },
{ 0xFFFF,0,0,0,0 }
};
checkCoords(symbolList);
} while ((_getBack == 0) && !_quitRequested);
if ((_symbolBotNum == 3) && (_symbolTopNum == 5)) {
removeSetObject(43);
placeSetObject(46);
turnAnyPathOn(0, _roomNum + 12);
_manIsOffScreen = 0;
redrawMainScrn();
_symbolGraphics.clear();
restoreReels();
workToScreenM();
_sound->playChannel1(13);
} else {
removeSetObject(46);
placeSetObject(43);
turnAnyPathOff(0, _roomNum + 12);
_manIsOffScreen = 0;
redrawMainScrn();
_symbolGraphics.clear();
restoreReels();
workToScreenM();
}
}
void DreamWebEngine::quitSymbol() {
if (_symbolTopX != 24 || _symbolBotX != 24) {
blank();
return;
};
commandOnlyCond(18, 222);
if (_mouseButton == _oldButton)
return; // notqs
if (!(_mouseButton & 1))
return;
_getBack = 1;
}
void DreamWebEngine::setTopLeft() {
if (_symbolTopDir != 0) {
blank();
return;
}
commandOnlyCond(19, 210);
if (_mouseButton != 0)
_symbolTopDir = -1;
}
void DreamWebEngine::setTopRight() {
if (_symbolTopDir != 0) {
blank();
return;
}
commandOnlyCond(20, 211);
if (_mouseButton != 0)
_symbolTopDir = +1;
}
void DreamWebEngine::setBotLeft() {
if (_symbolBotDir != 0) {
blank();
return;
}
commandOnlyCond(21, 212);
if (_mouseButton != 0)
_symbolBotDir = -1;
}
void DreamWebEngine::setBotRight() {
if (_symbolBotDir != 0) {
blank();
return;
}
commandOnlyCond(22, 213);
if (_mouseButton != 0)
_symbolBotDir = +1;
}
void DreamWebEngine::dumpSymbol() {
_newTextLine = 0;
multiDump(kSymbolx, kSymboly + 20, 104, 60);
}
void DreamWebEngine::showSymbol() {
showFrame(_symbolGraphics, kSymbolx, kSymboly, 12, 0);
showFrame(_symbolGraphics, _symbolTopX + kSymbolx-44, kSymboly+20, _symbolTopNum, 32);
uint8 nextTopSymbol = nextSymbol(_symbolTopNum);
showFrame(_symbolGraphics, _symbolTopX + kSymbolx+5, kSymboly+20, nextTopSymbol, 32);
uint8 nextNextTopSymbol = nextSymbol(nextTopSymbol);
showFrame(_symbolGraphics, _symbolTopX + kSymbolx+54, kSymboly+20, nextNextTopSymbol, 32);
showFrame(_symbolGraphics, _symbolBotX + kSymbolx-44, kSymboly+49, 6 + _symbolBotNum, 32);
uint8 nextBotSymbol = nextSymbol(_symbolBotNum);
showFrame(_symbolGraphics, _symbolBotX + kSymbolx+5, kSymboly+49, 6 + nextBotSymbol, 32);
uint8 nextNextBotSymbol = nextSymbol(nextBotSymbol);
showFrame(_symbolGraphics, _symbolBotX + kSymbolx+54, kSymboly+49, 6 + nextNextBotSymbol, 32);
}
uint8 DreamWebEngine::nextSymbol(uint8 symbol) {
uint8 result = symbol + 1;
if (result == 6)
return 0;
if (result == 12)
return 6;
return result;
}
void DreamWebEngine::updateSymbolTop() {
if (!_symbolTopDir)
return; // topfinished
if (_symbolTopDir == -1) {
// Backward
_symbolTopX--;
if (_symbolTopX != (byte)-1) {
// Not wrapping
if (_symbolTopX != 24)
return; // topfinished
_symbolTopDir = 0;
} else {
_symbolTopX = 48;
_symbolTopNum++;
if (_symbolTopNum != 6)
return; // topfinished
_symbolTopNum = 0;
}
} else {
// Forward
_symbolTopX++;
if (_symbolTopX != 49) {
// Not wrapping
if (_symbolTopX != 24)
return; // topfinished
_symbolTopDir = 0;
} else {
_symbolTopX = 0;
_symbolTopNum--;
if (_symbolTopNum != (byte)-1)
return; // topfinished
_symbolTopNum = 5;
}
}
}
void DreamWebEngine::updateSymbolBot() {
if (!_symbolBotDir)
return; // botfinished
if (_symbolBotDir == -1) {
// Backward
_symbolBotX--;
if (_symbolBotX != (byte)-1) {
// Not wrapping
if (_symbolBotX != 24)
return; // botfinished
_symbolBotDir = 0;
} else {
_symbolBotX = 48;
_symbolBotNum++;
if (_symbolBotNum != 6)
return; // botfinished
_symbolBotNum = 0;
}
} else {
// Forward
_symbolBotX++;
if (_symbolBotX != 49) {
// Not wrapping
if (_symbolBotX != 24)
return; // botfinished
_symbolBotDir = 0;
} else {
_symbolBotX = 0;
_symbolBotNum--;
if (_symbolBotNum != (byte)-1)
return; // botfinished
_symbolBotNum = 5;
}
}
}
void DreamWebEngine::useDiary() {
getRidOfReels();
loadGraphicsFile(_diaryGraphics, "G14");
loadTempText("T51");
loadGraphicsFile(_diaryCharset, "C02");
createPanel();
showIcon();
showDiary();
underTextLine();
showDiaryPage();
readMouse();
showPointer();
workToScreen();
delPointer();
_getBack = 0;
RectWithCallback diaryList[] = {
{ kDiaryx+94,kDiaryx+110,kDiaryy+97,kDiaryy+113,&DreamWebEngine::diaryKeyN },
{ kDiaryx+151,kDiaryx+167,kDiaryy+71,kDiaryy+87,&DreamWebEngine::diaryKeyP },
{ kDiaryx+176,kDiaryx+192,kDiaryy+108,kDiaryy+124,&DreamWebEngine::quitKey },
{ 0,320,0,200,&DreamWebEngine::blank },
{ 0xFFFF,0,0,0,0 }
};
do {
delPointer();
readMouse();
showDiaryKeys();
showPointer();
waitForVSync();
dumpPointer();
dumpDiaryKeys();
dumpTextLine();
checkCoords(diaryList);
} while (!_getBack && !_quitRequested);
_diaryGraphics.clear();
getRidOfTempText();
_diaryCharset.clear();
restoreReels();
_manIsOffScreen = 0;
redrawMainScrn();
workToScreenM();
}
void DreamWebEngine::showDiary() {
showFrame(_diaryGraphics, kDiaryx, kDiaryy + 37, 1, 0);
showFrame(_diaryGraphics, kDiaryx + 176, kDiaryy + 108, 2, 0);
}
void DreamWebEngine::showDiaryKeys() {
if (!_pressCount)
return; // nokeyatall
_pressCount--;
if (!_pressCount)
return; // nokeyatall
if (_pressed == 'N') {
byte frame = (_pressCount == 1) ? 3 : 4;
showFrame(_diaryGraphics, kDiaryx + 94, kDiaryy + 97, frame, 0);
} else {
byte frame = (_pressCount == 1) ? 5 : 6;
showFrame(_diaryGraphics, kDiaryx + 151, kDiaryy + 71, frame, 0);
}
if (_pressCount == 1)
showDiaryPage();
}
void DreamWebEngine::dumpDiaryKeys() {
if (_pressCount == 1) {
if (_vars._sartainDead != 1 && _diaryPage == 5 && getLocation(6) != 1) {
// Add Sartain Industries note
setLocation(6);
delPointer();
const uint8 *string = getTextInFile1(12);
printDirect(string, 70, 106, 241, 241 & 1);
workToScreenM();
hangOnP(200);
createPanel();
showIcon();
showDiary();
showDiaryPage();
workToScreenM();
showPointer();
return;
} else {
multiDump(kDiaryx + 48, kDiaryy + 15, 200, 16);
}
}
multiDump(kDiaryx + 94, kDiaryy + 97, 16, 16);
multiDump(kDiaryx + 151, kDiaryy + 71, 16, 16);
}
void DreamWebEngine::diaryKeyP() {
commandOnlyCond(23, 214);
if (!_mouseButton ||
_oldButton == _mouseButton ||
_pressCount)
return; // notkeyp
_sound->playChannel1(16);
_pressCount = 12;
_pressed = 'P';
_diaryPage--;
if (_diaryPage == 0xFF)
_diaryPage = 11;
}
void DreamWebEngine::diaryKeyN() {
commandOnlyCond(23, 213);
if (!_mouseButton ||
_oldButton == _mouseButton ||
_pressCount)
return; // notkeyn
_sound->playChannel1(16);
_pressCount = 12;
_pressed = 'N';
_diaryPage++;
if (_diaryPage == 12)
_diaryPage = 0;
}
void DreamWebEngine::showDiaryPage() {
showFrame(_diaryGraphics, kDiaryx, kDiaryy, 0, 0);
_kerning = 1;
useTempCharset(&_diaryCharset);
_charShift = 91+91;
const uint8 *string = getTextInFile1(_diaryPage);
uint16 y = kDiaryy + 16;
printDirect(&string, kDiaryx + 48, &y, 240, 240 & 1);
y = kDiaryy + 16;
printDirect(&string, kDiaryx + 129, &y, 240, 240 & 1);
y = kDiaryy + 23;
printDirect(&string, kDiaryx + 48, &y, 240, 240 & 1);
_kerning = 0;
_charShift = 0;
useCharset1();
}
} // End of namespace DreamWeb