예제 #1
0
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);
}
예제 #2
0
파일: Game.cpp 프로젝트: Ramizen/firstGame
void Game::update(sf::Vector2f updatePos)
{
	setTextPos(updatePos);
}