|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
#include "tile.h"
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
Tile tileAdd(TileMap *tm, int ts, double s) {
|
|
Ivan Mahonin |
fdbd7d |
if (ts <= 0) return (Tile){};
|
|
Ivan Mahonin |
fdbd7d |
if (ts > TM_SIZE) ts = TM_SIZE;
|
|
Ivan Mahonin |
fdbd7d |
if (ts > TM_SIZE - tm->x) { tm->x = 0; tm->y0 = tm->y1; }
|
|
Ivan Mahonin |
fdbd7d |
if (ts > TM_SIZE - tm->y0) {
|
|
Ivan Mahonin |
fdbd7d |
TileMap *ntm = (TileMap*)alloc(sizeof(*ntm));
|
|
Ivan Mahonin |
fdbd7d |
*ntm = *tm;
|
|
Ivan Mahonin |
fdbd7d |
memset(tm, 0, sizeof(*tm));
|
|
Ivan Mahonin |
fdbd7d |
tm->next = ntm;
|
|
Ivan Mahonin |
fdbd7d |
}
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
if (!tm->fb) tm->fb = createFramebufferEx(TM_SIZE, TM_SIZE, NULL, FALSE, FALSE, TRUE);
|
|
Ivan Mahonin |
fdbd7d |
if (!tm->tex) tm->tex = createAnimationFromFramebuffer(tm->fb);
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
Tile t = { {tm->x/(double)TM_SIZE, tm->y0/(double)TM_SIZE}, ts/(double)TM_SIZE, s, tm->fb, tm->tex };
|
|
Ivan Mahonin |
fdbd7d |
tm->x += ts;
|
|
Ivan Mahonin |
fdbd7d |
if (tm->y1 < tm->y0 + ts) tm->y1 = tm->y0 + ts;
|
|
Ivan Mahonin |
fdbd7d |
return t;
|
|
Ivan Mahonin |
fdbd7d |
}
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
void tileClear(TileMap *tm) {
|
|
Ivan Mahonin |
fdbd7d |
if (tm->next) tileClear(tm->next);
|
|
Ivan Mahonin |
fdbd7d |
tm->x = tm->y0 = tm->y1 = 0;
|
|
Ivan Mahonin |
fdbd7d |
}
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
void tileFree(TileMap *tm) {
|
|
Ivan Mahonin |
fdbd7d |
if (tm->next) { tileFree(tm->next); free(tm->next); }
|
|
Ivan Mahonin |
fdbd7d |
if (tm->tex) animationDestroy(tm->tex);
|
|
Ivan Mahonin |
fdbd7d |
if (tm->fb) framebufferDestroy(tm->fb);
|
|
Ivan Mahonin |
fdbd7d |
memset(tm, 0, sizeof(*tm));
|
|
Ivan Mahonin |
fdbd7d |
}
|
|
Ivan Mahonin |
fdbd7d |
|
|
Ivan Mahonin |
fdbd7d |
|