void AGOSEngine::o_addBox() { // 107: add item box uint flags = 0; uint id = getVarOrWord(); uint params = id / 1000; uint x, y, w, h, verb; Item *item; id = id % 1000; if (params & 1) flags |= kBFInvertTouch; if (params & 2) flags |= kBFNoTouchName; if (params & 4) flags |= kBFBoxItem; if (params & 8) flags |= kBFTextBox; if (params & 16) flags |= kBFDragBox; x = getVarOrWord(); y = getVarOrWord(); w = getVarOrWord(); h = getVarOrWord(); item = getNextItemPtrStrange(); verb = getVarOrWord(); if (x >= 1000) { verb += 0x4000; x -= 1000; } defineBox(id, x, y, w, h, flags, verb, item); }
void AGOSEngine_Feeble::off_addBox() { // 107: add item hitarea uint flags = 0; uint id = getVarOrWord(); uint params = id / 1000; uint x, y, w, h, verb; Item *item; id = id % 1000; if (params & 1) flags |= kBFInvertTouch; if (params & 2) flags |= kBFNoTouchName; if (params & 4) flags |= kBFBoxItem; if (params & 8) flags |= kBFTextBox; if (params & 16) flags |= kBFHyperBox; x = getVarOrWord(); y = getVarOrWord(); w = getVarOrWord(); h = getVarOrWord(); item = getNextItemPtrStrange(); verb = getVarOrWord(); defineBox(id, x, y, w, h, flags, verb, item); }
void AGOSEngine_Feeble::hyperLinkOff() { if (!getBitFlag(51)) return; _variableArray[52] = _textWindow->x + _textWindow->textColumn - _variableArray[50]; defineBox(_variableArray[53], _variableArray[50], _variableArray[51], _variableArray[52], 15, 145, 208, _dummyItem2); _variableArray[53]++; _hyperLink = 0; }
void AGOSEngine_Feeble::checkLinkBox() { // Check for boxes spilling over to next row of text if (_hyperLink != 0) { _variableArray[52] = _textWindow->x + _textWindow->textColumn - _variableArray[50]; if (_variableArray[52] != 0) { defineBox(_variableArray[53], _variableArray[50], _variableArray[51], _variableArray[52], 15, 145, 208, _dummyItem2); _variableArray[53]++; } _variableArray[50] = _textWindow->x; _variableArray[51] = _textWindow->textRow + _textWindow->y + (_oracleMaxScrollY-_textWindow->scrollY) * 15; } }
void AGOSEngine_Waxworks::oww_addTextBox() { // 65: add hit area uint id = getVarOrWord(); uint x = getVarOrWord(); uint y = getVarOrWord(); uint w = getVarOrWord(); uint h = getVarOrWord(); uint number = getVarOrByte(); if (number < _numTextBoxes) defineBox(id, x, y, w, h, (number << 8) + 129, 208, _dummyItem2); }
void AGOSEngine_Feeble::off_addTextBox() { // 65: add hit area uint flags = kBFTextBox | kBFBoxItem; uint id = getVarOrWord(); uint params = id / 1000; uint x, y, w, h, num; id %= 1000; if (params & 1) flags |= kBFInvertTouch; x = getVarOrWord(); y = getVarOrWord(); w = getVarOrWord(); h = getVarOrWord(); num = getVarOrByte(); if (num < _numTextBoxes) defineBox(id, x, y, w, h, flags + (num << 8), 208, _dummyItem2); }
void AGOSEngine::vc50_setBox() { uint16 id, x, y, w, h, msg1, msg2, flags; const uint16 *vlut; id = vcReadNextWord(); vlut = &_videoWindows[vcReadNextWord() * 4]; x = vlut[0] * 16 + vcReadNextWord(); y = vlut[1] + vcReadNextWord(); h = vcReadNextWord(); w = vcReadNextWord(); msg1 = vcReadNextWord(); msg2 = vcReadNextWord(); flags = vcReadNextWord(); // Compressed string if (!(flags & kOBFUseMessageList)) { msg1 += 0x8000; } defineBox(id, x, y, h, w, msg1, msg2, flags); }
Common::Error AGOSEngine_FeebleDemo::go() { // Main menu defineBox( 1, 80, 75, 81, 117, kBFBoxDead, 0, NULL); defineBox( 2, 267, 21, 105, 97, kBFBoxDead, 0, NULL); defineBox( 3, 456, 89, 125, 103, kBFBoxDead, 0, NULL); defineBox( 4, 151, 225, 345, 41, kBFBoxDead, 0, NULL); defineBox( 5, 169, 319, 109, 113, kBFBoxDead, 0, NULL); defineBox( 6, 404, 308, 62, 117, kBFBoxDead, 0, NULL); // Film menu defineBox(11, 28, 81, 123, 93, kBFBoxDead, 0, NULL); defineBox(12, 182, 81, 123, 93, kBFBoxDead, 0, NULL); defineBox(13, 335, 81, 123, 93, kBFBoxDead, 0, NULL); defineBox(14, 488, 81, 123, 93, kBFBoxDead, 0, NULL); defineBox(15, 28, 201, 123, 93, kBFBoxDead, 0, NULL); defineBox(16, 182, 201, 123, 93, kBFBoxDead, 0, NULL); defineBox(17, 335, 201, 123, 93, kBFBoxDead, 0, NULL); defineBox(18, 488, 201, 123, 93, kBFBoxDead, 0, NULL); defineBox(19, 255, 357, 135, 45, kBFBoxDead, 0, NULL); // Exit Menu defineBox(21, 548, 421, 42, 21, kBFBoxDead, 0, NULL); // Text Window used by Feeble Files Data section if (_language ==Common::DE_DEU) { _textWindow = openWindow(322, 457, 196, 15, 1, 0, 255); } else { _textWindow = openWindow(444, 452, 196, 15, 1, 0, 255); } playVideo("winasoft.smk"); playVideo("fbigtalk.smk"); while (!shouldQuit()) mainMenu(); return Common::kNoError; }