W jaki sposób mógłbym dodać menu do klasy gry tak by przy wlaczaniu programu pokazywało sie menu, a gdy wybiorę opcję np Play to włączy sie okno gry?
#pragma once
#include <SFML\Graphics.hpp>
#define MAX_NUMBER_OF_ITEMS 3
class Menu
{
public:
Menu(float width, float heigth);
~Menu();
void draw(sf::RenderWindow &window);
void MoveUp();
void MoveDown();
private:
int selectedItemIndex;
sf::Font font;
sf::Text menu[MAX_NUMBER_OF_ITEMS];
};
#include "Menu.h"
#include <SFML\Graphics.hpp>
#define WIDTH 900
#define HEIGTH 950
Menu::Menu(float width, float heigth)
{
if (!font.loadFromFile("font.otf"))
{
}
menu[0].setFont(font);
// menu[0].setColor(sf::Color::White);
menu[0].setString("Play");
menu[0].setPosition(sf::Vector2f(WIDTH / 2, HEIGTH / (MAX_NUMBER_OF_ITEMS + 1) * 1));
menu[1].setFont(font);
//menu[1].setColor(sf::Color::White);
menu[1].setString("Exit");
menu[1].setPosition(sf::Vector2f(WIDTH / 2, HEIGTH / (MAX_NUMBER_OF_ITEMS + 1) * 2));
}
void Menu::draw(sf::RenderWindow &window)
{
for (int i = 0; i < MAX_NUMBER_OF_ITEMS; i++)
{
window.draw(menu[i]);
}
}
#pragma once
#include <SFML\Graphics.hpp>
#include "TPlayer.h"
#include "TBlocks.h"
#define WIDTH 900
#define HEIGTH 950
class TGame
{
public:
TGame(TPlayer *player_, TBlocks *block_);
void run();
protected:
enum GameState { MENU, GAME, GAME_OVER, END };
private:
void processEvents();
void update_game();
void render();
void checkCollision();
sf::RenderWindow mWindow;
TPlayer * player;
TBlocks * block;
sf::Font font;
void menu();
};
#include "TGame.h"
#include "TBlocks.h"
#include "Collision.h"
#include <SFML\Graphics.hpp>\
#define WIDTH 900
#define HEIGTH 950
TGame::TGame(TPlayer * player_, TBlocks * block_ ) : player(player_), block(block_), mWindow(sf::VideoMode(WIDTH, HEIGTH), "GAME")
{
mWindow.setFramerateLimit(60);
}
void TGame::run()
{
while (mWindow.isOpen())
{
processEvents();
update_game();
render();
}
}
void TGame::processEvents()
{
sf::Event event;
while (mWindow.pollEvent(event))
{
if (event.type == sf::Event::Closed)
mWindow.close();
break;
}
}
void TGame::render()
{
mWindow.clear();
mWindow.draw(*block);
mWindow.draw(*player);
block->update_block();
player->update();
mWindow.display();
}
void TGame::update_game()
{
}
/*
void TGame::checkCollision()
{
if (Collision::PixelPerfectTest(player, block))
{
mWindow.close();
}
}
*/