![]() |
CH4RG3
Török Attila Szoftver laboratórium 1 nagy házi feladata
|
Az alkalmazás különböző jeleneteinek kezelése. Részletek...
Fájl | |
fájl | statemanager.c |
A jeleneteket kezelő függvények definíciói. | |
fájl | statemanager.h |
A jelenetek kezelését biztosító struktúra, és az azt implementáló függvények deklarációi. |
Adatszerkezetek | |
struct | StateManager |
A program jeleneteit kezelő struktúra. Részletek... |
Enumerációk | |
enum | State { STATE_NONE, STATE_MAINMENU, STATE_LEVELSELECTOR, STATE_GAME, STATE_PROFILESELECTOR, STATE_HIGHSCORES } |
Az egyes jeleneteket azonosító értékek. Részletek... |
Függvények | |
StateManager * | statemanager_create (sfRenderWindow *, State) |
A StateManager struktúra konstruktora. | |
void | statemanager_set_state (State) |
Jelentváltást ütemez be. | |
State | statemanager_get_current_state (void) |
Az aktív jelenet azonosítójának lekérése. | |
void | statemanager_handle_event (StateManager *, sfEvent) |
Az események kezelését proxyzó függvény. | |
void | statemanager_update (StateManager *, float) |
Az léptetést proxyzó függvény. | |
void | statemanager_render (StateManager *) |
Az kirajzolást proxyzó függvény. | |
void | statemanager_destroy (StateManager *) |
A StateManager struktúra destruktora. |
Az alkalmazás különböző jeleneteinek kezelése.
enum State |
Az egyes jeleneteket azonosító értékek.
StateManager* statemanager_create | ( | sfRenderWindow * | win, |
State | s | ||
) |
A StateManager struktúra konstruktora.
win | Pointer arra az ablakra, amire a jelenetek rajzolni fognak. |
s | Az először indítandó jelenet azonosítója. |
Ez a függvény létrehoz és teljesen inicializál egy StateManager struktúrát, és egy, az s paraméter által kijelölt azonosítójú jelenetet.
Amennyiben már létezik egy példány a StateManagerből, nem hoz létre újat, hanem annak a címével tér vissza, mert az singleton. Ebben az esetben a már meglévő StateManager állapota (jelenete) nem változik.
void statemanager_destroy | ( | StateManager * | sm | ) |
A StateManager struktúra destruktora.
sm | Az elpusztítandó StateManager-re mutató pointer. |
Ez a függvény elpusztítja az sm által mutatott StateManager jelenleg aktív jelenetét, majd magát a StateManager struktúrát is, felszabadítva az általuk lefoglalt memóriát, majd 0-ra állítja a static_sm_ptr pointert.
State statemanager_get_current_state | ( | void | ) |
Az aktív jelenet azonosítójának lekérése.
Ez a függvény a jelenleg aktív jelenet típusazonosítóját adja meg, ha létezik ilyen.
void statemanager_handle_event | ( | StateManager * | sm, |
sfEvent | e | ||
) |
Az események kezelését proxyzó függvény.
sm | A StateManager példány címe. |
e | Az átirányítandó esemény. |
Ez a függvény a paraméterként kapott e eseménnyel meghívja az sm által mutatott StateManager jelenleg aktív jelenetén (ha létezik) a hozzá tartozó saját eseménykezelőt.
void statemanager_render | ( | StateManager * | sm | ) |
Az kirajzolást proxyzó függvény.
sm | A StateManager példány címe. |
Ez a függvény az sm által mutatott StateManager jelenleg aktív jelenetén (ha létezik) hívja meg a hozzá tartozó, saját kirajzoló függvényét.
void statemanager_set_state | ( | State | s | ) |
Jelentváltást ütemez be.
s | Az új állapot azonosítója. |
Ez a függvény eltárolja a megadott jelenetazonsítót, hogy a léptető függvény következő hívásakor felválthassa egy s típusazonosítójú jelenettel a jelenlegit.
A késleltetésre azért van szükség, mert ezt a függvényt legtöbbször maga az aktív jelenet léptető függvénye hívja meg, és nem szerencsés, ha közben elpusztul azt a példány, amin épp dolgozik.
void statemanager_update | ( | StateManager * | sm, |
float | dt | ||
) |
Az léptetést proxyzó függvény.
sm | A StateManager példány címe. |
dt | A léptetés időtartama (másodpercben mérve). |
Ez a függvény a paraméterként kapott dt időléptékkel meghívja az sm által mutatott StateManager jelenleg aktív jelenetén (ha létezik) a hozzá tartozó saját léptetőfüggvényt.
Ezen kívül, ha lett ütemezve jelenetváltás az utolsó hívás óta, még a léptetés előtt elpusztítja az aktív jelenetet, és lecseréli egy, a következőnek ütemezett típusú, új példánnyal, majd ezt lépteti.