graphics
¶
Functions
-
void
moveScreen
(int screenx, int screeny)¶ Po zavolání přesune polohu kamery tak aby v levém horním rohu byly vidět specifikované souřadnice mapy. Funkce se snaží být chytrá a měnit co nejméně paměti, pokud není nová pozice moc daleko od té první, pak pouze změní offset jednotlivých pozadí.
-
void
forceMoveScreen
(int screenx, int screeny)¶ Stejné jako moveScreen(), ale nesnaží se být chytrá, vždy aktualizuje vše.
-
void
loadMap__map_name__
(void(*[])(int x, int y) heroSpecialActions_, int heroSpecialActionCount_)¶ Změní aktuální mapu a spolu s ní i callbacky pro speciální akce.
Místo __map_name__ je třeba dát jméno mapy zvolené v konfiguračním souboru. Vygeneruje se jedna takováto funkce pro každou mapu.
Po změně mapy zavolá funkci setSpecialActions(), které předá oba argumenty, tím se změní callbacky.
-
void
loadSpriteGraphic__sprite_graphics_name__
()¶ __sprite_graphics_name__ je třeba nahradit jménem
sprite graphics
, které je určeno v konfigurační souboru.Načte data dané
sprite_graphics
do paměti vyhrazené spritům.
-
void
unloadSpriteGraphic__sprite_graphics_name__
()¶ __sprite_graphics_name__ je třeba nahradit jménem
sprite graphics
, které je určeno v konfigurační souboru.Pokud byl daný
sprite graphics
načtený jako poslední (a proto je na konci paměti) pak se z paměti odebere. Pokud ne, tak funkce nic neudělá.
-
void
clearSpriteGraphics
()¶ Vynuluje veškerou pamět pro grafiku spritů a tím umožní načtení jiných.
-
void
updateSpriteAttr0
(int spriteIndex)¶ Uloží nultý atribut určeného spritu do OAM paměti.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
updateSpriteAttr1
(int spriteIndex)¶ Uloží první atribut určeného spritu do OAM paměti.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
updateSpriteAttr2
(int spriteIndex)¶ Uloží druhý atribut určeného spritu do OAM paměti.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
setSpriteX
(int spriteIndex, int x)¶ Uloží určenému spritu x-ovou souřadnici do spriteAttrs a pak zavolá updateSpriteAttr0(), čímž uloží hodnotu rovnou i do OAM. X-ová souřadice je v tomto případě přímo x-ová souřadnice spritu, určuje tedy přímo polohu na obrazovce, ne na mapě, pokud chcete sprite umístit na mapu podívejte se na funkci placeSpriteOnMap().
- Parameters
spriteIndex
: určuje sprite (0 až 127).x
: je x-ová souřadnice.
-
void
setSpriteY
(int spriteIndex, int y)¶ Uloží určenému spritu y-ovou souřadnici do spriteAttrs a pak zavolá updateSpriteAttr1(), čímž uloží hodnotu rovnou i do OAM. Y-ová souřadice je v tomto případě přímo y-ová souřadnice spritu, určuje tedy přímo polohu na obrazovce, ne na mapě, pokud chcete sprite umístit na mapu podívejte se na funkci placeSpriteOnMap().
- Parameters
spriteIndex
: určuje sprite (0 až 127).y
: je y-ová souřadnice.
-
int
getSpriteX
(int spriteIndex)¶ Vrátí x-ovou hodnotu, kterou má sprite momentálně uloženou v spriteAttrs.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
int
getSpriteY
(int spriteIndex)¶ Vrátí y-ovou hodnotu, kterou má sprite momentálně uloženou v spriteAttrs.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
setSpriteDisable
(int spriteIndex)¶ Nastaví v spriteAttrs viditelnost spritu na 0 a pak zavolá updateSpriteAttr0(), čímž uloží hodnotu rovnou i do OAM.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
setSpriteEnable
(int spriteIndex)¶ Nastaví v spriteAttrs viditelnost spritu na 1 a pak zavolá updateSpriteAttr0(), čímž uloží hodnotu rovnou i do OAM.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
setSpritePriority
(int spriteIndex, int p)¶ Nastaví v spriteAttrs prioritu podle argumentu p a pak zavolá updateSpriteAttr2(), čímž uloží hodnotu rovnou i do OAM.
- Parameters
p
: určuje požadovanou prioritu.spriteIndex
: určuje sprite (0 až 127).
-
void
showSpriteOnMap
(int spriteIndex)¶ Nastaví interní proměnnou tak, že sprite bude momentálně vykreslován na mapu (při zavolání funkce updateMap()) podle pozice, která mu byla posledně nastavená funkcí placeSpriteOnMap().
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
hideSpriteOnMap
(int spriteIndex)¶ Nastaví interní proměnnou tak, že sprite nebude vykreslován na mapu.
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
void
placeSpriteOnMap
(int spriteIndex, int x, int y)¶ Nastaví interní proměnné, které určují polohu spritu, pokud je vykreslován na mapu. Zároveň zavolá showSpriteOnMap().
- Parameters
spriteIndex
: určuje sprite (0 až 127).x
: určuje x-ovou souřadnici na mapě, jednotkou jsou jednotlivé pixely.y
: určuje y-ovou souřadnici na mapě, jednotkou jsou jednotlivé pixely.
-
void
setSpriteGraphicsFrame__sprite_graphics_name__
(int spriteIndex, int frameIndex)¶ __sprite_graphics_name__ je třeba nahradit jménem
sprite graphics
, které je určeno v konfigurační souboru. Nastaví spriteAttrs spritu tak, aby jeho vzhled odpovídal vzhledu zvoleného snímku danéhosprite graphics
a poté zavolá updateSpriteAttr0(), updateSpriteAttr1() a updateSpriteAttr2(). Nastaví také spriteRealSizes tak, aby velikost seděla na RealSize zvolenéhosprite graphics
.- Parameters
spriteIndex
: určuje sprite (0 až 127).frameIndex
: určuje index snímku.
-
void
setSpriteGraphics__sprite_graphics_name__
(int spriteIndex)¶ Zavolá setSpriteGraphicsFrame__sprite_graphics_name__(spriteIndex, 0).
- Parameters
spriteIndex
: určuje sprite (0 až 127).
-
specialList
spriteCheckForSpecials
(int spriteIndex, int spritex, int spritey)¶ Tato funkce vrátí specialList všech special se kterými se argumenty určený sprite alespoň nějak překrývá.
- Parameters
spriteIndex
: určuje sprite (0 až 127).spritex
: je x-ová souřadnice spritu na mapě v jednotlivých pixelech.spritey
: je y-ová souřadnice spritu na mapě v jednotlivých pixelech.
-
bool
spriteCheckForAnySpecial
(int spriteIndex, int spritex, int spritey)¶ Tato funkce postupně prochází všechny aktivní speciální akce a když se sprite s nějakým překrývá, tak to vrátí special který danou speciální akcí pokrývá.
- Parameters
spriteIndex
: určuje sprite (0 až 127).spritex
: je x-ová souřadnice spritu na mapě v jednotlivých pixelech.spritey
: je y-ová souřadnice spritu na mapě v jednotlivých pixelech.
-
bool
spriteCheckForWalls
(int spriteIndex, int spritex, int spritey)¶ Vrátí true když vybraný sprite nějak zasahuje přes nějaké políčko zdi.
- Parameters
spriteIndex
: určuje sprite (0 až 127).spritex
: je x-ová souřadnice spritu na mapě v jednotlivých pixelech.spritey
: je y-ová souřadnice spritu na mapě v jednotlivých pixelech.
-
bool
checkSpriteCollision
(int spriteIndex1, int sprite1x, int sprite1y, int spriteIndex2, int sprite2x, int sprite2y)¶ Vrátí true když se vybrané dva sprity překrývají na obrazovce.
- Parameters
spriteIndex1
: určuje první ze zvolených spritů (0 až 127).spritex1
: je x-ová souřadnice prvního spritu na obrazovce v jednotlivých pixelech.spritey1
: je y-ová souřadnice prvního spritu na obrazovce v jednotlivých pixelech.spriteIndex2
: určuje druhý ze zvolených spritů (0 až 127).spritex2
: je x-ová souřadnice druhého spritu na obrazovce v jednotlivých pixelech.spritey2
: je y-ová souřadnice druhého spritu na obrazovce v jednotlivých pixelech.
-
bool
checkSpriteCollisionOnMap
(int spriteIndex1, int spriteIndex2)¶ Vrátí true když se vybrané dva sprity překrývají na mapě (neusí na obrazovce vůbec být vidět.). Další výhoda oproti checkSpriteCollision() je, že knihovna už ví polohu. Pokud je alespoň jeden ze spritů na obrazovce momentálně skrytý (nebylo na něj zavoláno spriteShowOnMap()) tak funkce vrátí false.
- Parameters
spriteIndex1
: určuje první ze zvolených spritů (0 až 127).spriteIndex2
: určuje druhý ze zvolených spritů (0 až 127).
-
void
setSpecialActions
(void(*[])(int x, int y) special_Actions_, int specialActionCount_)¶ Změní callbacky pro speciální akce.
Oba argumenty se starají o změnu callbacků. První argument je pole pointerů na funkce, které berou 2 argumenty typu integer. Funkce, na které ukazují pointery v poli jsou funkce, které se zavolají pokud hrdina vkročí na označené pole, nazývám je speciálními akcemi. První speciální akce se zavolá pokud hrdina vkročí na ten typ speciálního políčka, které bylo ve zvolené mapě použité jako první. Když se zavolá speciální akce, pak jsou jí předány dva argumenty, je to pozice
Druhý argument už je jednoduše počet speciálních akcí, které chcete aktivovat (počet položek v poli, které předáváte prvním argumentem).
-
void
updateMap
()¶ Aktualizuje mapu, stará se o posuv kamery, vykreslení hlavního hrdiny a spritů, které jsou zobrazeny na mapě a jsou v daný moment kamerou vidět.
-
void
initHero
(int * hero_x_pointer_, int * hero_y_pointer_, int hero_sprite_index_)¶ Inicializuje hlavní postavu.
- Parameters
hero_x_pointer_
: pointer na integer, který v sobě má uloženou x-ovou souřadnici hlavního hrdiny.hero_y_pointer_
: pointer na integer, který v sobě má uloženou y-ovou souřadnici hlavního hrdiny.hero_sprite_index_
: je číslo spritu (0-127), které se bude využívat pro hlavního hrdinu.
-
void
printText
(char * text)¶ Vypíše předaný text. V dolní polovině obrazovky vyskočí bublina, kde se text postupně objevuje. Vypíše se vždy 130 znaků (víc se do bubliny najednou nevejde) a když uživatel zmáčkne tlačítko A, tak se zobrazí další část.
- Parameters
text
: textový řetězec obsahující zprávu
-
void
initText
(char font[128][8])¶ Inicializuje „textový systém“. Lze zvolit font, ale je třeba použít správný formát. Pozor, inicializace textu zabere kus paměti pro pozadí, proto je možné že se do ní pak vejde méně různých dlaždic. Text se vypisuje na 4 vrstvu pozadí.
- Parameters
font
: 2D pole, font, který se má použít. Formát stejný jako zde: https://github.com/dhepper/font8x8. Pokud bude NULL tak se použije ten.
-
void
initMap
()¶ Inicializuje pozadí a sprity. Je nutné jí zavolat dříve než cokoliv kromě incializací.
Nastaví priority vrstev, nastaví, které se mají zobrazit, vynuluje OAM spriteAttrs a nastaví interrupty a nastaví typ barev pozadí a spritů. Všechny sprity mají prioritu 1,
bottom_layer
amiddle_layer
mají prioritu 3 atop_layer
má prioritu 0.
Variables
-
u16 spriteAttrs[128][3]
Atributy všech 128 spritů, do OAM se zkopírují až při volání funkcí updateSpriteAttr0(), updateSpriteAttr1(), updateSpriteAttr2().
-
int spriteRealSizes[128][2]
Opravdové velikosti spritů, ty co uživatel může specifikovat v konfigurační souboru. Používají se při výpočtech kolizí a podobných operací.
-
struct
special
- #include <graphics.h>
Struct pomocí kterého se předávají informace o nějaké speciální akci. Obsahuje kód, který určuje typ speciální akce a polohu na které se special stal.
- Parameters
code
: je číslo/kód/označení daného typu speciální akce.position
: je pole integerů, které udávají polohu políčka speciální akce, která je popisována.