SFML - dwa okna - jedno do menu drugie do gry?

0

Hey. Mam pytanie. Uczę się biblioteki SFML.
Jestem na etapie planowania całej aplikacji/gry. Na początku chciałbym stworzyć menu z ustawieniami etc. po wciśnięciu start powinna się odpalić gra - tzn. otworzyć nowe okno(?).
Czy w takim razie kod powinien wyglądać mniej więcej tak:

 
int main()
{
    sf::Window oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Okno główne" );
    while( oknoAplikacji.IsOpened() )
    {
        sf::Event zdarzenie;
        while( oknoAplikacji.GetEvent( zdarzenie ) )
        {
            //...
            if( zdarzenie.Type == ...) //warunek potwierdzający wciśnięcie startu
                {
                 sf::Window oknoDoGry( sf::VideoMode( 800, 600, 32 ), "Okno w którym będzie toczyła się gra" );
                 while(oknoDoGry.IsOpened())
                    {
                     sf:Event zdarzenie_podczas_gry
                     while(oknoDoGry.GetEvent(zdarzenie_podczas_gry)
                        {

                         ... //obsługa zdarzeń w trakcie gry

                        }
                     //...
                    }

                }
        }
       
        oknoAplikacji.Display();
    }
    return 0;
}

A może wszystko powinno się dziać w tym jednym głównym oknie?

Drugie pytanie jest takie: jeśli w oknie 1 wprowadzę sobie jakieś ustawienia gry to jak je przekazać do okna drugiego odpowiedzialnego za wyświetlanie gry?

Z góry dzięki za wyjaśnienie.

0

Mogę odpowiedzieć tylko na drugie pytanie:
Aby ustawienia były obecne w oknie numer 2, możesz zrobić to w ten sposób, że gra czy program ma swój katalog. Po uaktywnieniu jakiejś wymyślonej przez Ciebie opcji, tworzy się plik tekstowy lub innego formatu, który zawiera dane włączonych opcji. Potem okno numer 2, przed startem czyta dane z pliku. Trochę lepsza wersja to taka, że robisz osobną aplikację - instalator, który tworzy pliki, katalogi i wypakuje pliki wykonywalne (Gotowe do użycia aplikacje, chyba nie muszę tłumaczyć :]). Potem zawierające dane opcji pliki, które stworzył instalator, mogą wyglądać tak:
[Nazwa opcji]=true //Opcja włączona - true, opcja wyłączona - false.
[Nazwa opcji]=false
Itd...
Potem gdy na przykład: Jakaś opcja ma status "False" (Jest nieaktywna) a użytkownik chce ją uaktywnić, klika odpowiedni przycisk, i "False" zmienia się na "True".
I tak jak napisałem na początku, okno numer 2 przed pokazaniem grafiki, itp., sprawdza zawartość tych plików, aby wiedział, które opcje ma uaktywnić.
Myślę, że pomogłem :]
Pozdrawiam!
~ Programm3r

0

Ustawienia wrzucać do pliku i je odczytywać tylko dlatego, że program ma dwa okienka?
Przecież to bez sensu...
To już prościej utworzyć sobie zmienne globalne lub klasę statyczną "ustawienia" (singleton) - dziś o takiej opcji czytałem :)
Jeszcze inna opcja: zrobić dla każdego okienka inną klasę, a ustawienia dać jako zmienne publiczne - i będzie do nich dostęp. W drugiej klasie zrobić funkcję, która będzie miała w argumentach referencję lub wskaźnik do tej pierwszej klasy i pobierze sobie ustawienia sama :)
pozdrawiam

0

A więc po co zadajesz to pytanie? -,-
Życzę rozwiązania problemu i pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1