aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins/computer.cpp
diff options
context:
space:
mode:
authorStrangerke2013-01-05 18:36:24 +0100
committerStrangerke2013-01-05 18:36:24 +0100
commit792b00b7905464ad02ad3053b9ea25b8c2c54e2c (patch)
tree71b331bc84315290eef5678934378307dcc6eb96 /engines/hopkins/computer.cpp
parenteaecc37d081751bbfa4f48d432fd53ee2d11366b (diff)
downloadscummvm-rg350-792b00b7905464ad02ad3053b9ea25b8c2c54e2c.tar.gz
scummvm-rg350-792b00b7905464ad02ad3053b9ea25b8c2c54e2c.tar.bz2
scummvm-rg350-792b00b7905464ad02ad3053b9ea25b8c2c54e2c.zip
HOPKINS: Some refactoring in ComputerManager.
Diffstat (limited to 'engines/hopkins/computer.cpp')
-rw-r--r--engines/hopkins/computer.cpp95
1 files changed, 35 insertions, 60 deletions
diff --git a/engines/hopkins/computer.cpp b/engines/hopkins/computer.cpp
index fb9ca799cd..0efa1a0c26 100644
--- a/engines/hopkins/computer.cpp
+++ b/engines/hopkins/computer.cpp
@@ -128,7 +128,7 @@ void ComputerManager::showComputer(ComputerEnum mode) {
outText(Common::String(_menuText[0]._line));
else if (mode == COMPUTER_SAMANTHAS)
outText(Common::String(_menuText[1]._line));
- else if (mode == COMPUTER_PUBLIC)
+ else // COMPUTER_PUBLIC
outText(Common::String(_menuText[2]._line));
setTextColor(1);
@@ -142,16 +142,12 @@ void ComputerManager::showComputer(ComputerEnum mode) {
TXT4(280, 224, 8);
bool passwordMatch = false;
- if (mode == COMPUTER_HOPKINS) {
- if (!strcmp(_inputBuf, "HOPKINS"))
- passwordMatch = true;
- } else if (mode == COMPUTER_SAMANTHAS) {
- if (!strcmp(_inputBuf, "328MHZA"))
- passwordMatch = true;
- } else if (mode == COMPUTER_PUBLIC) {
- if (!strcmp(_inputBuf, "ALLFREE"))
- passwordMatch = true;
- }
+ if ((mode == COMPUTER_HOPKINS) && !strcmp(_inputBuf, "HOPKINS"))
+ passwordMatch = true;
+ else if ((mode == COMPUTER_SAMANTHAS) && !strcmp(_inputBuf, "328MHZA"))
+ passwordMatch = true;
+ else if ((mode == COMPUTER_PUBLIC) && !strcmp(_inputBuf, "ALLFREE"))
+ passwordMatch = true;
if (passwordMatch) {
while (!_vm->shouldQuit()) {
@@ -278,9 +274,10 @@ void ComputerManager::showComputer(ComputerEnum mode) {
restoreFBIRoom();
_vm->_eventsManager.mouseOff();
}
- if (mode == 1)
+
+ if (mode == COMPUTER_HOPKINS)
_vm->_globals._exitId = 13;
- if ((uint16)(mode - 2) <= 1u)
+ else // Free access or Samantha
_vm->_globals._exitId = 14;
_vm->_graphicsManager.RESET_SEGMENT_VESA();
@@ -530,19 +527,6 @@ void ComputerManager::restoreFBIRoom() {
* Display texts for the given menu entry
*/
void ComputerManager::readText(int idx) {
- uint16 v1;
- bool foundFl;
- int v4;
- int v5;
- int v6;
- int v7;
- int v8;
- uint16 v10;
- byte *ptr;
- Common::String v12;
- Common::String numStr;
- int num;
-
_vm->_eventsManager._escKeyFl = false;
if (_vm->_globals._language == LANG_EN)
@@ -552,47 +536,38 @@ void ComputerManager::readText(int idx) {
else if (_vm->_globals._language == LANG_SP)
_vm->_fileManager.constructFilename(_vm->_globals.HOPLINK, "THOPKES.TXT");
- ptr = _vm->_fileManager.loadFile(_vm->_globals._curFilename);
- v1 = _vm->_fileManager.fileSize(_vm->_globals._curFilename);
- foundFl = false;
- int v3;
- for (v3 = 0; v3 < v1; v3++) {
- if (ptr[v3] == '%') {
- numStr = Common::String::format("%c%c", ptr[v3 + 1], ptr[v3 + 2]);
- num = atol(numStr.c_str());
-
- if (num == idx)
- foundFl = true;
+ byte *ptr = _vm->_fileManager.loadFile(_vm->_globals._curFilename);
+ uint16 fileSize = _vm->_fileManager.fileSize(_vm->_globals._curFilename);
+ int pos;
+ for (pos = 0; pos < fileSize; pos++) {
+ if (ptr[pos] == '%') {
+ Common::String numStr = Common::String::format("%c%c", ptr[pos + 1], ptr[pos + 2]);
+ if (idx == atol(numStr.c_str()))
+ break;
}
- if (foundFl)
- break;
}
- v4 = v3;
- if (v3 > v1 - 1)
+ if (pos > fileSize - 3)
error("Error with Hopkins computer file");
- v10 = v3 + 3;
- v5 = 1;
- v6 = 5;
- v7 = 0;
+ pos += 3;
+ int lineNum = 5;
+ Common::String curStr = "";
+ byte curChar;
do {
- v4 = ptr[v10];
- if (v4 == 13) {
- v8 = v4;
- setTextPosition(v6, v5);
- outText(v12);
-
- ++v6;
- v5 = 1;
+ curChar = ptr[pos];
+ if (curChar == 13) {
+ setTextPosition(lineNum, 1);
+ outText(curStr);
+
+ ++lineNum;
_vm->_eventsManager.VBL();
- v4 = v8;
- v12 = "";
- } else if (v4 != '%') {
- v12 += v4;
- ++v7;
+ curStr = "";
+ } else if (curChar != '%') {
+ curStr += curChar;
}
- ++v10;
- } while (v4 != '%');
+ ++pos;
+ assert(pos <= fileSize);
+ } while (curChar != '%');
_vm->_eventsManager.waitKeyPress();
ptr = _vm->_globals.freeMemory(ptr);