siema, mam pewien problem ze sprawdzaniem stanu gry.
Otóż mam konstruktor:
Menu::Menu(sf::Texture t, sf::Texture tP, sf::Texture tAut, sf::Texture tQ, sf::Sprite m, sf::Sprite p, sf::Sprite aut,
sf::Sprite qu,int &game)
{
if(!t.loadFromFile("menu.png"))
std::cout << "nie udalo sie zaladowac tla menu" << std::endl;
if(!tP.loadFromFile("Play.png"))
std::cout << "nie udalo sie zaladowac Play" << std::endl;
if(!tAut.loadFromFile("options.png"))
std::cout << "nie udalo sie zaladowac Options" << std::endl;
if(!tQ.loadFromFile("Quit.png"))
std::cout << "nie udalo sie zaladowac quit" << std::endl;
game = Glowne;
game_st = game;
tMenu = t;
tPlay = tP;
tOptions = tAut;
tQuit = tQ;
menu.setTexture(tMenu);
play.setTexture(tPlay);
play.setPosition(300, 200);
options.setTexture(tOptions);
options.setPosition(30, 440);
quit.setTexture(tQuit);
quit.setPosition(600, 440);
}
i mam problem ze sprawdzaniem stanu gry, w .h mam zadeklarowane game_st a tutaj przypisuje mu stan gry Glowne.
i w innej funkcji
void Menu::check(sf::RenderWindow &okno)
{
sf::Vector2i ms(sf::Mouse::getPosition(okno).x, sf::Mouse::getPosition(okno).y);
if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
if((ms.x > play.getPosition().x && ms.x < play.getPosition().x + play.getTexture()->getSize().x)&&
(ms.y > play.getPosition().y && ms.y < play.getPosition().y + play.getTexture()->getSize().y)){
game_st = Graj;
}
//opcje:
else if((ms.x > options.getPosition().x && ms.x < options.getPosition().x + options.getTexture()->getSize().x)&&
(ms.y > options.getPosition().y && ms.y < options.getPosition().y + options.getTexture()->getSize().y))
game_st = Opcje;
//WYJSCIE
else if((ms.x > quit.getPosition().x && ms.x < quit.getPosition().x + quit.getTexture()->getSize().x)&&
(ms.y > quit.getPosition().y && ms.y < quit.getPosition().y + quit.getTexture()->getSize().y))
game_st = Wyjscie;
}
}
ustawiam stan gry na graj jeżeli został "wciśnięty" sprite.
w funkcji głównej (main) mam taki kawałek kodu:
int game_st;
Menu m(tMenu, tPlay, tOption, tQuit, menu, play, option, quit, game_st); //konstruktor
i w pętli sprawdzam stan gry
if(game_st == Glowne){
m.check(window);
m.showMenu(&window); //window to jest okno aplikacji
}
else if(game_st == Graj){
std::cout << "dziala graj " << std::endl;
}
i właśnie jakby te sprawdzanie nie działa, bo po naciśnięciu odpowiedniego przycisku powinno w konsoli spamowac napisem "dziala graj", ale tak nie jest, podejrzewam że zrobiłem coś źle w konstruktorze, ale nie jestem pewny co.
(Tak, wiem że trochę do d**y problem opisałem)
po prostu nie zmienia mi stanu gry, szukam tu pomocy ;)
@Edit
ok, poradziłem sobię :)