Ejemplo n.º 1
0
void AGOSEngine_Feeble::timerProc() {
	if (_videoLockOut & 0x80E9 || _videoLockOut & 2)
		return;

	_syncCount++;

	_videoLockOut |= 2;

	if (!(_videoLockOut & 0x10)) {
		_syncFlag2 = !_syncFlag2;
		if (!_syncFlag2) {
			processVgaEvents();
		} else {
			// Double speed on Oracle
			if (getGameType() == GType_FF && getBitFlag(99)) {
				processVgaEvents();
			} else if (_scrollCount == 0) {
				_videoLockOut &= ~2;
				return;
			}
		}

		if (getGameType() == GType_FF && _interactiveVideo) {
			// Controls Omni TV videos
			if (getBitFlag(42)) {
				stopInteractiveVideo();
			} else {
				_moviePlayer->nextFrame();
			}
		}

		animateSprites();
	}

	if (_displayFlag) {
		if (getGameType() == GType_FF && !(getFeatures() & GF_DEMO)) {
			if (!getBitFlag(78)) {
				oracleLogo();
			}
			if (getBitFlag(76)) {
				swapCharacterLogo();
			}
		}
		handleMouseMoved();
		displayScreen();
		_displayFlag = 0;
	}

	_videoLockOut &= ~2;
}
Ejemplo n.º 2
0
void AGOSEngine_FeebleDemo::handleWobble() {
    if (_lastClickRem == _currentBox)
        return;

    stopInteractiveVideo();

    if (_currentBox && (_currentBox->id >= 11 && _currentBox->id <= 19)) {
        char filename[15];
        sprintf(filename, "wobble%d.smk", _currentBox->id - 10);

        startInteractiveVideo(filename);
    }

    _lastClickRem = _currentBox;
}
Ejemplo n.º 3
0
void AGOSEngine_FeebleDemo::mainMenu() {
    for (int i = 1; i <= 6; i++)
        enableBox(i);

    for (int i = 11; i <= 19; i++)
        disableBox(i);

    playVideo("mmfadein.smk", true);

    startInteractiveVideo("mainmenu.smk");

    HitArea *ha = 0;
    do {
        _lastHitArea = NULL;
        _lastHitArea3 = NULL;

        while (_lastHitArea3 == 0) {
            if (shouldQuit())
                return;
            handleText();
            delay(1);
        }

        ha = _lastHitArea;
    } while (ha == NULL || !(ha->id >= 1 && ha->id <= 6));

    if (shouldQuit())
        return;

    stopInteractiveVideo();

    if (ha->id == 1) {
        // Feeble Files Data
        playVideo("ffade5.smk");
        playVideo("ftext0.smk");
        playVideo("ftext1.smk", true);
        waitForSpace();
        playVideo("ftext2.smk", true);
        waitForSpace();
        playVideo("ftext3.smk", true);
        waitForSpace();
        playVideo("ftext4.smk", true);
        waitForSpace();
        playVideo("ftext5.smk", true);
        waitForSpace();
    } else if (ha->id == 2) {
        // Opening Sequence
        playVideo("ffade1.smk");
        playVideo("musosp1.smk");
        playVideo("newcred.smk");
        playVideo("fasall.smk");
        playVideo("mus5p2.smk");
        playVideo("coach.smk");
        playVideo("outmin.smk");
    } else if (ha->id == 3) {
        // Technical Information
        playVideo("ffade3.smk");
        playVideo("idfx4a.smk");
        playVideo("idfx4b.smk");
        playVideo("idfx4c.smk");
        playVideo("idfx4d.smk");
        playVideo("idfx4e.smk");
        playVideo("idfx4f.smk");
        playVideo("idfx4g.smk");
    } else if (ha->id == 4) {
        // About AdventureSoft
        playVideo("ffade2.smk");
        playVideo("fscene3b.smk");
        playVideo("fscene3a.smk");
        playVideo("fscene3c.smk");
        playVideo("fscene3g.smk");
    } else if (ha->id == 5) {
        // Video Clips
        playVideo("ffade4.smk");
        filmMenu();
    } else if (ha->id == 6) {
        // Exit InfoDisk
        playVideo("ffade6.smk");
        exitMenu();
    }
}
Ejemplo n.º 4
0
void AGOSEngine_FeebleDemo::filmMenu() {
    for (int i = 1; i <= 6; i++)
        disableBox(i);

    for (int i = 11; i <= 19; i++)
        enableBox(i);

    if (!_filmMenuUsed) {
        playVideo("fclipsin.smk", true);
    } else {
        playVideo("fclipin2.smk", true);
    }

    _filmMenuUsed = true;

    HitArea *ha;
    while (!shouldQuit()) {
        _lastHitArea = NULL;
        _lastHitArea3 = NULL;

        while (!shouldQuit() && _lastHitArea3 == 0) {
            handleWobble();
            delay(1);
        }

        ha = _lastHitArea;

        if (ha == NULL)
            continue;

        stopInteractiveVideo();

        if (ha->id == 11) {
            playVideo("fgo1.smk");
            playVideo("maze.smk");
        } else if (ha->id == 12) {
            playVideo("fgo2.smk");
            playVideo("radioin.smk");
        } else if (ha->id == 13) {
            playVideo("fgo3.smk");
            playVideo("pad.smk");
        } else if (ha->id == 14) {
            playVideo("fgo4.smk");
            playVideo("bridge.smk");
        } else if (ha->id == 15) {
            playVideo("fgo5.smk");
            playVideo("pilldie.smk");
        } else if (ha->id == 16) {
            playVideo("fgo6.smk");
            playVideo("bikebust.smk");
        } else if (ha->id == 17) {
            playVideo("fgo7.smk");
            playVideo("statue.smk");
        } else if (ha->id == 18) {
            playVideo("fgo8.smk");
            playVideo("junkout.smk");
        } else if (ha->id == 19) {
            playVideo("fgo9.smk");
            break;
        }

        playVideo("fclipin2.smk", true);
    }
}