CH4RG3
Török Attila Szoftver laboratórium 1 nagy házi feladata
StateManager

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

StateManagerstatemanager_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.

Részletes leírás

Az alkalmazás különböző jeleneteinek kezelése.

Enumerációk dokumentációja

enum State

Az egyes jeleneteket azonosító értékek.

Lásd még
StateManager
MainMenu
Game
LevelSelector
ProfileSelector
HighScores
Enumeráció-értékek:
STATE_NONE 
STATE_MAINMENU 
STATE_LEVELSELECTOR 
STATE_GAME 
STATE_PROFILESELECTOR 
STATE_HIGHSCORES 

Függvények dokumentációja

StateManager* statemanager_create ( sfRenderWindow *  win,
State  s 
)

A StateManager struktúra konstruktora.

Paraméterek
winPointer arra az ablakra, amire a jelenetek rajzolni fognak.
sAz először indítandó jelenet azonosítója.
Visszatérési érték
Pointer a StateManager példányra.
Lásd még
StateManager
State

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.

Paraméterek
smAz elpusztítandó StateManager-re mutató pointer.
Lásd még
StateManager
statemanager_destroy_current_state
static_sm_ptr

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.

Visszatérési érték
Az aktív jelenet típusazonosítója, ha létezik StateManager példány; STATE_NONE, ha nem.
Lásd még
StateManager
static_sm_ptr
State

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.

Paraméterek
smA StateManager példány címe.
eAz átirányítandó esemény.
Lásd még
StateManager
State

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.

Paraméterek
smA StateManager példány címe.
Lásd még
StateManager
State
mainmenu_render
game_render

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.

Paraméterek
sAz új állapot azonosítója.
Lásd még
StateManager
State
static_sm_ptr

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.

Paraméterek
smA StateManager példány címe.
dtA léptetés időtartama (másodpercben mérve).
Lásd még
StateManager
State
statemanager_set_state
statemanager_destroy_current_state
statemanager_create_next_state
mainmenu_update
game_update

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.