Platform játék
3D-s megjelenítés, véletlenszerű pályagenerálás, jutalmazó játékélmény
floaters.c fájlreferencia
#include "floaters.h"

Makródefiníciók

#define enemyMinSize   0.75
 
#define enemyMaxSize   4
 
#define enemyVelocity   0.006
 
#define enemySlowing   0.15
 
#define slownessDebuffDuration   2000
 
#define projectileSize   0.2
 
#define projectileVelocity   0.03
 
#define projectileVelocityYMax   0.035
 
#define floaterColor   (colors) { (color) {229, 22, 22, 255}, (color) {200, 20, 20, 255}, (color) {168, 16, 16, 255} }
 

Függvények

floater * addToFloaterList ()
 Lista elejére beszúr. Részletek...
 
void freeFloaterList ()
 Felszabadítja az ellenségek és lövedékek listáját. Részletek...
 
void createEnemy ()
 A játékos közelében elhelyez egy új ellenséget. Részletek...
 
void createProjectile (vector3D playerPosition, vector3D playerSize, vector2D *playerVelocity, mousePos mouse)
 Lövedék létrehozása. A megadott paraméterek függvényében a létrehozott lövedék az egér irányafele indul el. Részletek...
 
void destroyFloater (floater *floaterToDestroy)
 Listából kiszed. Részletek...
 
void moveFloaters (int deltaTime)
 Minden floaterre meghívja a szükséges mozgatási műveletet. Részletek...
 
void getFloatersRenderObject (int x, int y, renderObject *renderMap, int renderObjectsPerCube)
 Visszaadja az adott térfogatban lévő floater testeket. A sorrend nem elhanyagolható 3D-s testek rajzolásakor. Figyelni kell, melyik melyik másikat takarja el. Ezért kell "feldarabolni" őket. Itt még csak az egy adott m^3-ben lévő testek adatait adja oda a rajzoló függvénynek. Maga a feldarabolás már nem ennek a függvénynek a dolga. Részletek...
 

Változók

floater * floaterList = NULL
 

Makródefiníciók dokumentációja

◆ enemyMaxSize

#define enemyMaxSize   4

Az ellenségek, ha összeérnek, összetapadnak, de ennél ne lehetnek nagyobbak [m].

◆ enemyMinSize

#define enemyMinSize   0.75

Ellenségek oldalhosszának kezdeti értéke [m].

◆ enemySlowing

#define enemySlowing   0.15

Ha az ellenség nekiütközik valaminek, akkor a sebessége ennyiszeresére csökken.

◆ enemyVelocity

#define enemyVelocity   0.006

[m/ms]

◆ floaterColor

#define floaterColor   (colors) { (color) {229, 22, 22, 255}, (color) {200, 20, 20, 255}, (color) {168, 16, 16, 255} }

A lövedék és az ellenség ugyanolyan színű

◆ projectileSize

#define projectileSize   0.2

A játékos által lőtt lövedék oldalhossza [m].

◆ projectileVelocity

#define projectileVelocity   0.03

A játékos által lőtt lövedék kezdő sebessége [m/ms]

◆ projectileVelocityYMax

#define projectileVelocityYMax   0.035

A lövedék sebességét befolyásolja a játékos sebessége (a kiulövés pillanatában), illetve a gravitációs gyorsulás, viszont sosem lehet gyorsabb.

◆ slownessDebuffDuration

#define slownessDebuffDuration   2000

Ha az ellenség nekiütközik valaminek, akkor a sebessége ennyi ideig lesz alacsnyabb. [ms]

Függvények dokumentációja

◆ addToFloaterList()

floater* addToFloaterList ( )

Lista elejére beszúr.

◆ createEnemy()

void createEnemy ( )

A játékos közelében elhelyez egy új ellenséget.

◆ createProjectile()

void createProjectile ( vector3D  playerPosition,
vector3D  playerSize,
vector2D *  playerVelocity,
mousePos  mouse 
)

Lövedék létrehozása. A megadott paraméterek függvényében a létrehozott lövedék az egér irányafele indul el.

Paraméterek
helyvektora játékoshoz
térvektora játékos méretéhez
síkvektor*játékos sebesség (ezt Newton III. értelmében megváltoztatja
koordinátájaaz egérnek A játékost ellenkező irányba elmozdítja. A lövedék kezdősebbességéhez hozzáadódik a játékos sebessége.

◆ destroyFloater()

void destroyFloater ( floater *  floaterToDestroy)

Listából kiszed.

◆ freeFloaterList()

void freeFloaterList ( )

Felszabadítja az ellenségek és lövedékek listáját.

◆ getFloatersRenderObject()

void getFloatersRenderObject ( int  x,
int  y,
renderObject *  renderMap,
int  renderObjectsPerCube 
)

Visszaadja az adott térfogatban lévő floater testeket. A sorrend nem elhanyagolható 3D-s testek rajzolásakor. Figyelni kell, melyik melyik másikat takarja el. Ezért kell "feldarabolni" őket. Itt még csak az egy adott m^3-ben lévő testek adatait adja oda a rajzoló függvénynek. Maga a feldarabolás már nem ennek a függvénynek a dolga.

Paraméterek
koordx
koordy
Hovakell írnia a testeket
Maxmennyit adhat vissza A feldarabolásról részletesebben a camera.c modulban.

◆ moveFloaters()

void moveFloaters ( int  deltaTime)

Minden floaterre meghívja a szükséges mozgatási műveletet.

Változók dokumentációja

◆ floaterList

floater* floaterList = NULL

Láncolt lista, ami az ellenségeket és lövedékeket is tartalmazza. Nagyon hasonló a kettő, ezért célszerű közösen kezelni őket.