예제 #1
0
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);
}
예제 #2
0
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);
}
예제 #3
0
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;
}
예제 #4
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;
	}
}
예제 #5
0
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);
}
예제 #6
0
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);
}
예제 #7
0
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);
}
예제 #8
0
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;
}