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;
}
Exemplo n.º 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();
}