Beispiel #1
0
void CGEEngine::switchScene(int newScene) {
	debugC(1, kCGEDebugEngine, "CGEEngine::switchScene(%d)", newScene);

	if (newScene == _now)
		return;

	if (newScene < 0) {
		_commandHandler->addCommand(kCmdLabel, -1, 0, NULL);  // wait for repaint
		_commandHandler->addCallback(kCmdExec,  -1, 0, kQGame); // quit game
	} else {
		_now = newScene;
		_mouse->off();
		if (_hero) {
			_hero->park();
			_hero->step(0);
			_vga->_spareQ->_show = false;
		}
		_sceneLight->gotoxy(kSceneX + ((_now - 1) % kSceneNx) * kSceneDx + kSceneSX,
		                  kSceneY + ((_now - 1) / kSceneNx) * kSceneDy + kSceneSY);
		killText();
		if (!_startupMode)
			keyClick();
		_commandHandler->addCommand(kCmdLabel, -1, 0, NULL);  // wait for repaint
		_commandHandler->addCallback(kCmdExec,  0, 0, kXScene); // switch scene

	}
}
Beispiel #2
0
BuzzerLive::BuzzerLive() {
    soundPlayer = new QMediaPlayer();
    inWin = false;
    buzzDir = new QDir("media/buzzer/sounds/");
    mp3Files = buzzDir->entryList(QDir::Files);

    textTimeout = new QTimer;
    textTimeout->setInterval(3000);
    connect(textTimeout, SIGNAL(timeout()), this, SLOT(killText()));

    dTeamName = new QLabel();
    dTeamName->setWordWrap(true);
    dTeamName->setAlignment(Qt::AlignCenter);
    dTeamName->setStyleSheet("margin: 0; padding: 0; background-color: black; color: white; font: 100pt;");

    videoPlayer = new QMediaPlayer();
    videoWidget = new QVideoWidget();
    videoPlayer->setVideoOutput(videoWidget);
    connect(videoPlayer, SIGNAL(stateChanged(QMediaPlayer::State)), this , SLOT(videoStateChanged(QMediaPlayer::State)));
    connect(videoPlayer, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this , SLOT(videoStatusChanged(QMediaPlayer::MediaStatus)));

    layout = new QStackedLayout();
    layout->addWidget(dTeamName);
    layout->addWidget(videoWidget);
    layout->setCurrentWidget(dTeamName);
    connect(layout, SIGNAL(currentChanged(int)), this, SLOT(checkVideoHidden(int)));

    setLayout(layout);
}
Beispiel #3
0
void EventManager::handleEvents() {
	while (_eventQueueTail != _eventQueueHead) {
		CGEEvent e = _eventQueue[_eventQueueTail];
		if (e._mask) {
			if (_mouse->_hold && e._spritePtr != _mouse->_hold)
				_mouse->_hold->touch(e._mask | kEventAttn, e._x - _mouse->_hold->_x, e._y - _mouse->_hold->_y);

			// update mouse cursor position
			if (e._mask & kMouseRoll)
				_mouse->gotoxy(e._x, e._y);

			// activate current touched SPRITE
			if (e._spritePtr) {
				if (e._mask & kEventKeyb)
					e._spritePtr->touch(e._mask, e._x, e._y);
				else
					e._spritePtr->touch(e._mask, e._x - e._spritePtr->_x, e._y - e._spritePtr->_y);
			} else if (_sys)
					_sys->touch(e._mask, e._x, e._y);

			if (e._mask & kMouseLeftDown) {
				_mouse->_hold = e._spritePtr;
				if (_mouse->_hold) {
					_mouse->_hold->_flags._hold = true;

					if (_mouse->_hold->_flags._drag) {
						_mouse->_hx = e._x - _mouse->_hold->_x;
						_mouse->_hy = e._y - _mouse->_hold->_y;
					}
				}
			}

			if (e._mask & kMouseLeftUp) {
				if (_mouse->_hold) {
					_mouse->_hold->_flags._hold = false;
					_mouse->_hold = NULL;
				}
			}
			///Touched = e.Ptr;

			// discard Text if button released
			if (e._mask & (kMouseLeftUp | kMouseRightUp))
				killText();
		}
		_eventQueueTail = (_eventQueueTail + 1) % kEventMax;
	}
	if (_mouse->_hold) {
		if (_mouse->_hold->_flags._drag)
			_mouse->_hold->gotoxy(_mouse->_x - _mouse->_hx, _mouse->_y - _mouse->_hy);
	}
}
Beispiel #4
0
void CGEEngine::inf(const char *text) {
	debugC(1, kCGEDebugEngine, "CGEEngine::inf(%s)", text);

	killText();
	_talk = new Talk(this, text, kTBRect);
	if (!_talk)
		return;

	_talk->_flags._kill = true;
	_talk->_flags._bDel = true;
	_talk->setName(_text->getText(kInfName));
	_talk->center();
	_talk->gotoxy(_talk->_x, _talk->_y - 20);
	_talk->_z = 126;
	_talk->_ref = kInfRef;
	_vga->_showQ->insert(_talk, _vga->_showQ->last());
}
Beispiel #5
0
void Text::say(const char *text, Sprite *spr) {
	killText();
	_talk = new Talk(_vm, text, kTBRound);
	if (!_talk)
		return;

	bool east = spr->_flags._east;
	int x = (east) ? (spr->_x + spr->_w - 2) : (spr->_x + 2);
	int y = spr->_y + 2;
	Sprite *spike = new Spike(_vm);
	uint16 sw = spike->_w;

	if (east) {
		if (x + sw + kTextRoundCorner + 5 >= kScrWidth)
			east = false;
	} else {
		if (x <= 5 + kTextRoundCorner + sw)
			east = true;
	}
	x = (east) ? (spr->_x + spr->_w - 2) : (spr->_x + 2 - sw);
	if (spr->_ref == 1)
		x += ((east) ? -10 : 10); // Hero

	_talk->_flags._kill = true;
	_talk->_flags._bDel = true;
	_talk->setName(_text->getText(kSayName));
	_talk->gotoxy(x - (_talk->_w - sw) / 2 - 3 + 6 * east, y - spike->_h - _talk->_h + 1);
	_talk->_z = 125;
	_talk->_ref = kSayRef;

	spike->gotoxy(x, _talk->_y + _talk->_h - 1);
	spike->_z = 126;
	spike->_flags._slav = true;
	spike->_flags._kill = true;
	spike->setName(_text->getText(kSayName));
	spike->step(east);
	spike->_ref = kSayRef;

	_vga->_showQ->insert(_talk, _vga->_showQ->last());
	_vga->_showQ->insert(spike, _vga->_showQ->last());
}