mirror of https://github.com/fairyglade/ly.git
Add animation states
This commit is contained in:
parent
77f6958241
commit
bfb13b9c40
41
src/draw.c
41
src/draw.c
|
|
@ -68,11 +68,18 @@ void draw_init(struct term_buf* buf)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void doom_free(struct term_buf* buf);
|
||||||
|
|
||||||
void draw_free(struct term_buf* buf)
|
void draw_free(struct term_buf* buf)
|
||||||
{
|
{
|
||||||
if (config.animate)
|
if (config.animate)
|
||||||
{
|
{
|
||||||
free(buf->tmp_buf);
|
switch (config.animation)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
doom_free(buf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -480,18 +487,30 @@ static void doom_init(struct term_buf* buf)
|
||||||
{
|
{
|
||||||
buf->init_width = buf->width;
|
buf->init_width = buf->width;
|
||||||
buf->init_height = buf->height;
|
buf->init_height = buf->height;
|
||||||
|
buf->astate.doom = malloc(sizeof(struct doom_state));
|
||||||
|
|
||||||
u16 tmp_len = buf->width * buf->height;
|
if (buf->astate.doom == NULL)
|
||||||
buf->tmp_buf = malloc(tmp_len);
|
|
||||||
tmp_len -= buf->width;
|
|
||||||
|
|
||||||
if (buf->tmp_buf == NULL)
|
|
||||||
{
|
{
|
||||||
dgn_throw(DGN_ALLOC);
|
dgn_throw(DGN_ALLOC);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(buf->tmp_buf, 0, tmp_len);
|
u16 tmp_len = buf->width * buf->height;
|
||||||
memset(buf->tmp_buf + tmp_len, DOOM_STEPS - 1, buf->width);
|
buf->astate.doom->buf = malloc(tmp_len);
|
||||||
|
tmp_len -= buf->width;
|
||||||
|
|
||||||
|
if (buf->astate.doom->buf == NULL)
|
||||||
|
{
|
||||||
|
dgn_throw(DGN_ALLOC);
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(buf->astate.doom->buf, 0, tmp_len);
|
||||||
|
memset(buf->astate.doom->buf + tmp_len, DOOM_STEPS - 1, buf->width);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void doom_free(struct term_buf* buf)
|
||||||
|
{
|
||||||
|
free(buf->astate.doom->buf);
|
||||||
|
free(buf->astate.doom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void animate_init(struct term_buf* buf)
|
void animate_init(struct term_buf* buf)
|
||||||
|
|
@ -500,7 +519,7 @@ void animate_init(struct term_buf* buf)
|
||||||
{
|
{
|
||||||
switch(config.animation)
|
switch(config.animation)
|
||||||
{
|
{
|
||||||
default:
|
case 0:
|
||||||
{
|
{
|
||||||
doom_init(buf);
|
doom_init(buf);
|
||||||
break;
|
break;
|
||||||
|
|
@ -533,7 +552,7 @@ static void doom(struct term_buf* term_buf)
|
||||||
u16 dst;
|
u16 dst;
|
||||||
|
|
||||||
u16 w = term_buf->init_width;
|
u16 w = term_buf->init_width;
|
||||||
u8* tmp = term_buf->tmp_buf;
|
u8* tmp = term_buf->astate.doom->buf;
|
||||||
|
|
||||||
if ((term_buf->width != term_buf->init_width) || (term_buf->height != term_buf->init_height))
|
if ((term_buf->width != term_buf->init_width) || (term_buf->height != term_buf->init_height))
|
||||||
{
|
{
|
||||||
|
|
@ -581,7 +600,7 @@ void animate(struct term_buf* buf)
|
||||||
{
|
{
|
||||||
switch(config.animation)
|
switch(config.animation)
|
||||||
{
|
{
|
||||||
default:
|
case 0:
|
||||||
{
|
{
|
||||||
doom(buf);
|
doom(buf);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
13
src/draw.h
13
src/draw.h
|
|
@ -18,6 +18,17 @@ struct box
|
||||||
u32 right;
|
u32 right;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct doom_state
|
||||||
|
{
|
||||||
|
u8* buf;
|
||||||
|
};
|
||||||
|
|
||||||
|
union anim_state
|
||||||
|
{
|
||||||
|
struct doom_state* doom;
|
||||||
|
struct matrix_state* matrix;
|
||||||
|
};
|
||||||
|
|
||||||
struct term_buf
|
struct term_buf
|
||||||
{
|
{
|
||||||
u16 width;
|
u16 width;
|
||||||
|
|
@ -33,7 +44,7 @@ struct term_buf
|
||||||
u16 box_width;
|
u16 box_width;
|
||||||
u16 box_height;
|
u16 box_height;
|
||||||
|
|
||||||
u8* tmp_buf;
|
union anim_state astate;
|
||||||
};
|
};
|
||||||
|
|
||||||
void draw_init(struct term_buf* buf);
|
void draw_init(struct term_buf* buf);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue