void ConsoleWindow::startHighlight(int x, int y) { clearHighlight(); float lineX, lineY; if (!getPosition(x, y, lineX, lineY)) return; _highlightX = floor(lineX); _highlightY = floor(lineY); highlightClip(_highlightX, _highlightY); updateHighlight(); }
void Board::redo() { if(canRedo()) { clearHighlight(); undrawConnection(); Move* m = _redo.take(0); setField(m->x1, m->y1, EMPTY); setField(m->x2, m->y2, EMPTY); updateField(m->x1, m->y1); updateField(m->x2, m->y2); gravity(m->x1, true); gravity(m->x2, true); _undo.append(m); emit changed(); } }
void ConsoleWindow::highlightLine(int x, int y) { clearHighlight(); float lineX, lineY; if (!getPosition(x, y, lineX, lineY)) return; _highlightX = 0; _highlightY = floor(lineY); highlightClip(_highlightX, _highlightY); const Common::UString &line = (_highlightY == 0) ? _input->get() : _lines[_lines.size() - _highlightY]->get(); _highlightLength = line.size(); updateHighlight(); }
void Board::undo() { if(canUndo()) { clearHighlight(); undrawConnection(); Move* m = _undo.last(); _undo.take(); if(gravityFlag()) { int y; // When both tiles reside in the same column, the order of undo is // significant (we must undo the lower tile first). if(m->x1 == m->x2 && m->y1 < m->y2) { std::swap(m->x1, m->x2); std::swap(m->y1, m->y2); } for(y = 0; y < m->y1; y++) { setField(m->x1, y, getField(m->x1, y+1)); updateField(m->x1, y); } for(y = 0; y < m->y2; y++) { setField(m->x2, y, getField(m->x2, y+1)); updateField(m->x2, y); } } setField(m->x1, m->y1, m->tile); setField(m->x2, m->y2, m->tile); updateField(m->x1, m->y1); updateField(m->x2, m->y2); _redo.prepend(m); emit changed(); } }
ConsoleWindow::ConsoleWindow(const Common::UString &font, uint32 lines, uint32 history, int fontHeight) : _font(FontMan.get(font, fontHeight)), _historySizeMax(history), _historySizeCurrent(0), _historyStart(0), _cursorPosition(0), _overwrite(false), _cursorBlinkState(false), _lastCursorBlink(0) { assert(lines >= 2); assert(history >= lines); setTag("ConsoleWindow"); setClickable(true); _lineHeight = _font.getFont().getHeight() + _font.getFont().getLineSpacing(); _height = floorf(lines * _lineHeight); _prompt = new Graphics::Aurora::Text(_font, ""); _input = new Graphics::Aurora::Text(_font, ""); const float cursorHeight = _font.getFont().getHeight(); _cursor = new Graphics::Aurora::GUIQuad("", 0.0, 1.0, 0.0, cursorHeight); _cursor->setXOR(true); _highlight = new Graphics::Aurora::GUIQuad("", 0.0, 0.0, 0.0, cursorHeight); _highlight->setColor(1.0, 1.0, 1.0, 0.0); _highlight->setXOR(true); _lines.reserve(lines - 1); for (uint32 i = 0; i < (lines - 1); i++) _lines.push_back(new Graphics::Aurora::Text(_font, "")); notifyResized(0, 0, GfxMan.getScreenWidth(), GfxMan.getScreenHeight()); updateScrollbarLength(); updateScrollbarPosition(); clearHighlight(); calculateDistance(); }
void QDeclarativeViewInspectorPrivate::clearEditorItems() { clearHighlight(); setSelectedItems(QList<QGraphicsItem*>()); }
void QDeclarativeViewInspectorPrivate::_q_reloadView() { clearHighlight(); emit q->reloadRequested(); }
void MenuInventory::logic() { // if the player has just died, the penalty is half his current currency. if (stats->death_penalty && DEATH_PENALTY) { std::string death_message = ""; // remove a % of currency if (DEATH_PENALTY_CURRENCY > 0) { if (currency > 0) removeCurrency((currency * DEATH_PENALTY_CURRENCY) / 100); death_message += msg->get("Lost %d%% of %s. ", DEATH_PENALTY_CURRENCY, CURRENCY); } // remove a % of either total xp or xp since the last level if (DEATH_PENALTY_XP > 0) { if (stats->xp > 0) stats->xp -= (stats->xp * DEATH_PENALTY_XP) / 100; death_message += msg->get("Lost %d%% of total XP. ", DEATH_PENALTY_XP); } else if (DEATH_PENALTY_XP_CURRENT > 0) { if (stats->xp - stats->xp_table[stats->level-1] > 0) stats->xp -= ((stats->xp - stats->xp_table[stats->level-1]) * DEATH_PENALTY_XP_CURRENT) / 100; death_message += msg->get("Lost %d%% of current level XP. ", DEATH_PENALTY_XP_CURRENT); } // prevent down-leveling from removing too much xp if (stats->xp < stats->xp_table[stats->level-1]) stats->xp = stats->xp_table[stats->level-1]; // remove a random carried item if (DEATH_PENALTY_ITEM) { std::vector<int> removable_items; removable_items.clear(); for (int i=0; i < MAX_EQUIPPED; i++) { if (!inventory[EQUIPMENT][i].empty()) { if (items->items[inventory[EQUIPMENT][i].item].type != "quest") removable_items.push_back(inventory[EQUIPMENT][i].item); } } for (int i=0; i < MAX_CARRIED; i++) { if (!inventory[CARRIED][i].empty()) { if (items->items[inventory[CARRIED][i].item].type != "quest") removable_items.push_back(inventory[CARRIED][i].item); } } if (!removable_items.empty()) { int random_item = rand() % removable_items.size(); remove(removable_items[random_item]); death_message += msg->get("Lost %s.",items->items[removable_items[random_item]].name); } } log_msg = death_message; stats->death_penalty = false; } // a copy of currency is kept in stats, to help with various situations stats->currency = currency = getCurrency(); // check close button if (visible) { tablist.logic(); if (closeButton->checkClick()) { visible = false; snd->play(sfx_close); } if (drag_prev_src == -1) { clearHighlight(); } } }
void Board::mousePressEvent(QMouseEvent *e) { // Calculate field position int pos_x = (e->pos().x() - xOffset()) / tiles.tileWidth(); int pos_y = (e->pos().y() - yOffset()) / tiles.tileHeight(); if(e->pos().x() < xOffset() || e->pos().y() < yOffset() || pos_x >= x_tiles() || pos_y >= y_tiles()) { pos_x = -1; pos_y = -1; } // Mark tile if(e->button() == LeftButton) { clearHighlight(); if(pos_x != -1) marked(pos_x, pos_y); } // Assist by highlighting all tiles of same type if(e->button() == RightButton) { int clicked_tile = getField(pos_x, pos_y); // Clear marked tile if(mark_x != -1 && getField(mark_x, mark_y) != clicked_tile) { // We need to set mark_x and mark_y to -1 before calling // updateField() to ensure the tile is redrawn as unmarked. int oldmarkx = mark_x; int oldmarky = mark_y; mark_x = -1; mark_y = -1; updateField(oldmarkx, oldmarky, false); } else { mark_x = -1; mark_y = -1; } // Perform highlighting if(clicked_tile != highlighted_tile) { int old_highlighted = highlighted_tile; highlighted_tile = clicked_tile; for(int i = 0; i < x_tiles(); i++) { for(int j = 0; j < y_tiles(); j++) { const int field_tile = getField(i, j); if(field_tile != EMPTY) { if(field_tile == old_highlighted) updateField(i, j, false); else if(field_tile == clicked_tile) updateField(i, j, false); } } } } } }
void GraphicsLayerScene::updateSelection(Symbol* symbol) { clearHighlight(); m_selectedSymbols.append(symbol); emit featureSelected(symbol); }