void MystAreaSlider::handleMouseUp() { const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); updatePosition(mouse); // Restore background restoreBackground(); // Draw slider drawConditionalDataToScreen(1); // Save slider value uint16 value = 0; if (_flagHV & 2) { if (_stepsV) value = (_pos.y - _minV) / _stepV; else value = _pos.y; } else if (_flagHV & 1) { if (_stepsH) value = (_pos.x - _minH) / _stepH; else value = _pos.x; } _vm->_stack->setVarValue(_imageSwitchVar, value); MystAreaDrag::handleMouseUp(); }
void MystResourceType10::handleMouseUp() { const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); updatePosition(mouse); // Restore background restoreBackground(); // Draw slider drawConditionalDataToScreen(1); // Save slider value uint16 value = 0; if (_flagHV & 2) { if (_stepsV) value = (_pos.y - _minV) / _stepV; else value = _pos.y; } else if (_flagHV & 1) { if (_stepsH) value = (_pos.x - _minH) / _stepH; else value = _pos.x; } _vm->_scriptParser->setVarValue(_var8, value); MystResourceType11::handleMouseUp(); // No longer in drag mode _vm->_dragResource = 0; }
void ScummEngine_v0::clearSentenceLine() { Common::Rect sentenceline; sentenceline.top = _virtscr[kVerbVirtScreen].topline; sentenceline.bottom = _virtscr[kVerbVirtScreen].topline + 8; sentenceline.left = 0; sentenceline.right = _virtscr[kVerbVirtScreen].w - 1; restoreBackground(sentenceline); }
void ThemeEngine::drawCaret(const Common::Rect &r, bool erase, WidgetStateInfo state) { if (!ready()) return; if (erase) { restoreBackground(r); addDirtyRect(r); } else queueDD(kDDCaret, r); }
void MystAreaSlider::handleMouseDrag() { const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); updatePosition(mouse); MystAreaDrag::handleMouseDrag(); // Restore background restoreBackground(); // Draw slider drawConditionalDataToScreen(2); }
void ThemeEngine::drawChar(const Common::Rect &r, byte ch, const Graphics::Font *font, WidgetStateInfo state, FontColor color) { if (!ready()) return; Common::Rect charArea = r; charArea.clip(_screen.w, _screen.h); uint32 rgbColor = _overlayFormat.RGBToColor(_textColors[color]->r, _textColors[color]->g, _textColors[color]->b); restoreBackground(charArea); font->drawChar(&_screen, ch, charArea.left, charArea.top, rgbColor); addDirtyRect(charArea); }
MoveSinglePieceAnimation::MoveSinglePieceAnimation(ChessGraphics *graphics, const int from, const int to, int steps) : AbstractPieceMoveAnimation(graphics, graphics->getPieceImage(from), graphics->getFieldSize(false)) , m_from(graphics->getFieldPosition(from, false)) , m_to( graphics->getFieldPosition(to , false)) , m_it(0,1, steps ? steps : (int)(sqrt(Game::getWalkDistance(from,to))*28)) { m_pos = m_from; const CRect startRect(m_from, m_fieldSize); restoreBackground(startRect); saveImageRect(startRect); paint(); }
void MystResourceType10::handleMouseDown() { // Tell the engine we are dragging a resource _vm->_dragResource = this; const Common::Point &mouse = _vm->_system->getEventManager()->getMousePos(); updatePosition(mouse); MystResourceType11::handleMouseDown(); // Restore background restoreBackground(); // Draw slider drawConditionalDataToScreen(2); }
void MasterApplication::init() { connect( this, &MasterApplication::lastWindowClosed, this, &MasterApplication::quit ); masterWindow_.reset( new MasterWindow( displayGroup_, *config_ )); pixelStreamWindowManager_.reset( new PixelStreamWindowManager( *displayGroup_ )); initPixelStreamLauncher(); startDeflectServer(); startWebservice( config_->getWebServicePort( )); initMPIConnection(); restoreBackground(); #if ENABLE_TUIO_TOUCH_LISTENER initTouchListener(); #endif }
void unmergeBackgroundIncrust(backgroundIncrustStruct * pHead, int ovl, int idx) { backgroundIncrustStruct *pl; backgroundIncrustStruct *pl2; objectParamsQuery params; getMultipleObjectParam(ovl, idx, ¶ms); int x = params.X; int y = params.Y; pl = pHead; pl2 = pl; pl = pl2->next; while (pl) { pl2 = pl; if ((pl->overlayIdx == ovl) || (ovl == -1)) if ((pl->objectIdx == idx) || (idx == -1)) if ((pl->X == x) && (pl->Y == y)) restoreBackground(pl); pl = pl2->next; } }
void ScummEngine_v4::o4_oldRoomEffect() { int a; _opcode = fetchScriptByte(); if ((_opcode & 0x1F) == 3) { a = getVarOrDirectWord(PARAM_1); #if 1 if (_game.platform == Common::kPlatformFMTowns && _game.version == 3) { // FIXME / TODO: OK the first thing to note is: at least in Zak256, // maybe also in other games, this opcode does a bit more. I added // some stubs here, but somebody with a full IDA or more knowledge // about this will have to fill in the gaps. At least now we know // that something is missing here :-) if (a == 4) { //printf("o5_oldRoomEffect ODDBALL: _opcode = 0x%x, a = 0x%x\n", _opcode, a); // No idea what byte_2FCCF is, but it's a globale boolean flag. // I only add it here as a temporary hack to make the pseudo code compile. // Maybe it is just there as a reentry protection guard, given // how it is used? It might also correspond to _screenEffectFlag. int byte_2FCCF = 0; // For now, we force a redraw of the screen background. This // way the Zak end credits seem to work mostly correct. VirtScreen *vs = &_virtscr[kMainVirtScreen]; restoreBackground(Common::Rect(0, vs->topline, vs->w, vs->topline + vs->h)); vs->setDirtyRange(0, vs->h); updateDirtyScreen(kMainVirtScreen); if (byte_2FCCF) { // Here now "sub_1C44" is called, which sets byte_2FCCF to 0 then // calls yet another sub (which also reads byte_2FCCF): byte_2FCCF = 0; //call sub_0BB3 // Now sub_085C is called. This is quite simply: it sets // 0xF000 bytes. starting at 0x40000 to 0. No idea what that // buffer is, maybe a screen buffer, though. Note that // 0xF000 = 320*192. // Maybe this is also the charset mask being cleaned? // call sub_085C // And then sub_1C54 is called, which is almost identical to // the above sub_1C44, only it sets byte_2FCCF to 1: byte_2FCCF = 1; // call sub_0BB3 } else { // Here only sub_085C is called (see comment above) // call sub_085C } return; } #endif } if (a) { _switchRoomEffect = (byte)(a & 0xFF); _switchRoomEffect2 = (byte)(a >> 8); } else {
void ScummEngine_v2::redrawV2Inventory() { VirtScreen *vs = &_virtscr[kVerbVirtScreen]; int i; int max_inv; Common::Rect inventoryBox; int inventoryArea = (_game.platform == Common::kPlatformNES) ? 48: 32; int maxChars = (_game.platform == Common::kPlatformNES) ? 13: 18; _mouseOverBoxV2 = -1; if (!(_userState & USERSTATE_IFACE_INVENTORY)) // Don't draw inventory unless active return; // Clear on all invocations inventoryBox.top = vs->topline + inventoryArea; inventoryBox.bottom = vs->topline + vs->h; inventoryBox.left = 0; inventoryBox.right = vs->w; restoreBackground(inventoryBox); _string[1].charset = 1; max_inv = getInventoryCount(_scummVars[VAR_EGO]) - _inventoryOffset; if (max_inv > 4) max_inv = 4; for (i = 0; i < max_inv; i++) { int obj = findInventory(_scummVars[VAR_EGO], i + 1 + _inventoryOffset); if (obj == 0) break; _string[1].ypos = _mouseOverBoxesV2[i].rect.top + vs->topline; _string[1].xpos = _mouseOverBoxesV2[i].rect.left; _string[1].right = _mouseOverBoxesV2[i].rect.right - 1; _string[1].color = _mouseOverBoxesV2[i].color; const byte *tmp = getObjOrActorName(obj); assert(tmp); // Prevent inventory entries from overflowing by truncating the text byte msg[20]; msg[maxChars] = 0; strncpy((char *)msg, (const char *)tmp, maxChars); // Draw it drawString(1, msg); } // If necessary, draw "up" arrow if (_inventoryOffset > 0) { _string[1].xpos = _mouseOverBoxesV2[kInventoryUpArrow].rect.left; _string[1].ypos = _mouseOverBoxesV2[kInventoryUpArrow].rect.top + vs->topline; _string[1].right = _mouseOverBoxesV2[kInventoryUpArrow].rect.right - 1; _string[1].color = _mouseOverBoxesV2[kInventoryUpArrow].color; if (_game.platform == Common::kPlatformNES) drawString(1, (const byte *)"\x7E"); else drawString(1, (const byte *)" \1\2"); } // If necessary, draw "down" arrow if (_inventoryOffset + 4 < getInventoryCount(_scummVars[VAR_EGO])) { _string[1].xpos = _mouseOverBoxesV2[kInventoryDownArrow].rect.left; _string[1].ypos = _mouseOverBoxesV2[kInventoryDownArrow].rect.top + vs->topline; _string[1].right = _mouseOverBoxesV2[kInventoryDownArrow].rect.right - 1; _string[1].color = _mouseOverBoxesV2[kInventoryDownArrow].color; if (_game.platform == Common::kPlatformNES) drawString(1, (const byte *)"\x7F"); else drawString(1, (const byte *)" \3\4"); } }
void AnimatedImage::hide() { stopAnimation(); restoreBackground(); m_lastPaintedFrame = NULL; }