void TickerTape::setPositions(TextAction &action) { Vec2i txtDims = Vec2i(textDims(this, getText(action.m_targetIndex))); Vec2i widgetSize = getSize() - getBordersAll(); int yPos = (widgetSize.h - txtDims.h) / 2; int aPos; if (m_anchor.isPercentage()) { if (m_anchor.getPercentage() == -1) { aPos = widgetSize.w; } else { aPos = int(m_anchor.getPercentage() / 100.f * widgetSize.w); } } else { aPos = m_anchor.getAbsolute(); } if (m_align == Alignment::CENTERED) { aPos -= txtDims.w / 2; } else if (m_align == Alignment::FLUSH_LEFT) { // nop } else if (m_align == Alignment::FLUSH_RIGHT) { aPos -= txtDims.w; } else { assert(false); } Vec2i destPos(getBorderLeft() + aPos, getBorderTop() + yPos); TextWidget::setTextPos(destPos, action.m_targetIndex); Vec2f targetPos = Vec2f(destPos); Vec2f startOffset, endOffset; if (m_alternateOrigin && action.m_actionNumber % 2 == 1) { startOffset = m_endOffset; endOffset = m_startOffset; } else { startOffset = m_startOffset; endOffset = m_endOffset; } if (action.m_phaseNumber == 0) { action.m_startPos = targetPos + startOffset; action.m_destPos = targetPos; } else if (action.m_phaseNumber == 1) { action.m_startPos = action.m_destPos = targetPos; } else if (action.m_phaseNumber == 2) { action.m_startPos = targetPos; action.m_destPos = targetPos + endOffset; } setTextPos(Vec2i(action.m_startPos), action.m_targetIndex); setTextFade(action.m_startAlpha, action.m_targetIndex); }
void Game::update(sf::Vector2f updatePos) { setTextPos(updatePos); }