void PriorTrickWidget::paintComponent( const agui::PaintEvent &paintEvent )
	{
		paintEvent.graphics()->drawText(
			agui::Point(alignString(m_priorTrickText,
			agui::ALIGN_CENTER),0),m_priorTrickText.c_str(),
			getFontColor(),getFont());

		//not interested if too few cards
		if(m_cards.size() < 3)
			return;

		int cutThroatYOffset = 0;
		if(m_cards.size() == 3)
		{
			agui::Dimension heartSz = getSuitImgSize(Card::HEARTS);
			cutThroatYOffset = (heartSz.getHeight() * m_scale * m_imgScale) / 2;
		}

		int newVGap = m_vgap * m_scale;
		int newHGap = m_hgap * m_scale;

		renderCard(agui::ALIGN_BOTTOM_CENTER,m_cards[0],0,-newVGap - cutThroatYOffset,
			paintEvent);
		renderCard(agui::ALIGN_MIDDLE_LEFT,m_cards[1],newHGap,
			(newVGap / 2) - cutThroatYOffset,paintEvent);

		if(m_cards.size() > 3)
		{
			renderCard(agui::ALIGN_TOP_CENTER,m_cards[2],0,
				getFont()->getLineHeight() + (newVGap / 2) - cutThroatYOffset,paintEvent);
		}

		renderCard(agui::ALIGN_MIDDLE_RIGHT,m_cards.back(),-newHGap,
			(newVGap / 2) - cutThroatYOffset,paintEvent);
	}
示例#2
0
void render()
{
	glClearColor(0.38f, 0.32f, 0.3f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	gluLookAt(0.0f, 0.0f, depth, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
	// Do this in the loading screen eventually...
	static GLuint bg_texture = load_texture("wood_grain.jpg");
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, bg_texture);
	///
	//if (gameData.is_my_turn()) { glColor3f(1.0f, 0.9f, 0.9f); }
	//else { glColor3f(0.8f, 0.8f, 1.0f); }
	glColor3f(1.0f, 0.9f, 0.9f);
	glBegin(GL_QUADS);
	glTexCoord2f(0, 0); glVertex3f(-2.2f, -1.4f, 0.0f);
	glTexCoord2f(0, 1); glVertex3f(-2.2f, 1.4f, 0.0f);
	glTexCoord2f(1, 1); glVertex3f(2.2f, 1.4f, 0.0f);
	glTexCoord2f(1, 0); glVertex3f(2.2f, -1.4f, 0.0f);
	glEnd();
	glDisable(GL_TEXTURE_2D);
	switch (gameData.get_game_state()) {
	case CHAT_SCREEN: 
		renderConnectionMenu(gameData.is_player_ready(), msg, messages);
		break;
	case  START_GAME:
		renderGameBoard(GLUT_WINDOW_WIDTH, GLUT_WINDOW_HEIGHT, gameData);
		// render something to see play order.
		break;
	case GAME:
		renderGameBoard(GLUT_WINDOW_WIDTH, GLUT_WINDOW_HEIGHT, gameData);
		for (auto const &it : player.hand) {
			renderCard(it.second, true, hoverCard == &it.second);
		}
		for (std::list<std::pair<int, CardHolder>>::iterator it = drawing_cards.begin(); it != drawing_cards.end(); ++it) {
			renderCard(it->second, true, false);
		}
		for (std::list<std::pair<int, CardHolder>>::iterator it = playing_cards.begin(); it != playing_cards.end(); ++it) {
			renderCard(it->second, true, false);
		}
		for (auto const &it : opponent.hand) {
			renderCard(it.second, false, hoverCard == &it.second);
		}
		for (auto const &it : opponent.in_play) {
			renderCard(it.second, true, (hoverCard == &it.second) || it.second.isAttackable());
		}
		for (auto const &it : player.in_play) {
			renderCard(it.second, true, hoverCard == &it.second);
		}
		for (std::list<std::pair<int, CardHolder>>::iterator it = drawing_cards_opponent.begin(); it != drawing_cards_opponent.end(); ++it) {
			renderCard(it->second, false, false);
		}
		for (std::list<std::pair<int, CardHolder>>::reverse_iterator it = playing_cards_opponent.rbegin(); it != playing_cards_opponent.rend(); ++it) {
			renderCard(it->second, true, false);
		}
		if (attack_drag) {
			renderArrow(attackingCard->getX()+0.075f, attackingCard->getY()+0.15f, 0.0f, arrow_head_x, arrow_head_y, 0.0f);
		}
		if (cardGrabbed) { renderCard(*hoverCard, true, true); }
		/*if (gameData.getPlayFirst()) {glColor3f(1.0, 0.0, 0.0);}
		else {glColor3f(0.0, 0.0, 1.0);}*/
		//glutSolidCube(0.1);
		break;
	};
	glutSwapBuffers();
}