Undo Redo v Game Makeru (zpět a vpřed)
Známá funkce, která vrátí stav před minulou činností uživatele je sice poměrně vzácná ve hrách, ale pokud zkoušíte v GM dělat cokoli jiného, může celkem citelně chybět a zároveň se obvykle člověku děsně nechce patlat s něčím takovým uprostřed nějakého většího projektu.
Vlastně mě k téhle myšlence inspirovala vzpomínka na jednoho známého, který pracuje pro firmu dodávající velký databázový systém. Jednal jsem s ním o nějaké úpravě a když jsme se dohodli na podobě změny, prohlásil: "Prostě nad tím parametrem zapneme historii." Lehkost s jakou to pronesl naznačovala, že není problém "zapnout historii" nad jakoukoli položkou. V Game Makeru se mi párkrát stalo, že jsem zatoužil po podobném zapnutí historie, ale vždycky to znamenalo spoustu kódu navíc. Tak jsem se tomu vyhýbal jako čert kříži. Až doteď.
Dal jsem si s tím tu trochu práce a udělal jsem to velice univerzální a jednoduché na použití. Načtením UndoRedo.gmres (přes Import Resources) se vloží do vašeho programu nebo hry jeden objekt (class_undoredo) a následující skripty:
undo(object) vrátí minulý stav proměnné value redo(object) vrátí stav před provedením undo preset(object) nastaví proměnnou value na její základní stav set(object,val) nastaví proměnnou value na hodnotu val get(object) vrací hodnotu proměnné value number_redos(object) počet položek v zásobníku redo number_undos(object) počet položek v zásobníku undo
Pak když jakémukoli objektu nastavíte class_undoredo jako parent, můžete používat výše uvedené funkce a nemusíte se starat o to, jak se to vlastně děje. Jedině je třeba pohlídat, aby při vlastní náplni eventu Create (a některých User Eventů) byl volán Inherited Event, což jde jak kódem, tak ikonou.
Funkce jsou neomezené, tzn. nekontrolují kolikrát je undo použito a do jaké hloubky se jde. Prostě lze ukládat historii dokud nedojde paměť. Použití by mělo být bezproblémové, ale kdyby se přece jen něco vyskytlo, napište.
Galerie
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 155x (1.24 MB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker