int ai::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: moveNextStep((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 1: { GameState _r = generateGameState((*reinterpret_cast< const GameSetting(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< GameState*>(_a[0]) = _r; } break; case 2: changeSetting(); break; case 3: renderGameBoard((*reinterpret_cast< const GameState(*)>(_a[1]))); break; case 4: changeBoard((*reinterpret_cast< GameState(*)>(_a[1]))); break; default: ; } _id -= 5; } return _id; }
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(); }