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 } }
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); }
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); } }
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()); }
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()); }