graphics

Typedefs

typedef struct special special
typedef struct specialList specialList

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ého sprite graphics a poté zavolá updateSpriteAttr0(), updateSpriteAttr1() a updateSpriteAttr2(). Nastaví také spriteRealSizes tak, aby velikost seděla na RealSize zvoleného sprite 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

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 a middle_layer mají prioritu 3 a top_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.

Public Members

int code
int special::position[2]
struct specialList
#include <graphics.h>

Struct na předávání více special .

Parameters
  • count: je počet special které v poli jsou.

  • specials: je samotné pole special .

Public Members

int count
special specialList::specials[64]