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); }
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(); }