Cleanups
This commit is contained in:
parent
afcb3f1e5d
commit
c32e828c6f
|
@ -51,12 +51,6 @@ typedef void (*tween_cb) (void);
|
||||||
|
|
||||||
typedef struct menu_animation menu_animation_t;
|
typedef struct menu_animation menu_animation_t;
|
||||||
|
|
||||||
static menu_animation_t *menu_animation_get_ptr(void)
|
|
||||||
{
|
|
||||||
static menu_animation_t menu_animation_state;
|
|
||||||
return &menu_animation_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* from https://github.com/kikito/tween.lua/blob/master/tween.lua */
|
/* from https://github.com/kikito/tween.lua/blob/master/tween.lua */
|
||||||
|
|
||||||
static float easing_linear(float t, float b, float c, float d)
|
static float easing_linear(float t, float b, float c, float d)
|
||||||
|
@ -518,32 +512,27 @@ static bool menu_animation_push(menu_animation_t *anim, void *data)
|
||||||
|
|
||||||
bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
|
bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
|
static menu_animation_t anim;
|
||||||
static retro_time_t cur_time = 0;
|
static retro_time_t cur_time = 0;
|
||||||
static retro_time_t old_time = 0;
|
static retro_time_t old_time = 0;
|
||||||
static float delta_time = 0.0f;
|
static float delta_time = 0.0f;
|
||||||
static bool animation_is_active = false;
|
static bool animation_is_active = false;
|
||||||
menu_animation_t *anim = menu_animation_get_ptr();
|
|
||||||
|
|
||||||
if (!anim)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case MENU_ANIMATION_CTL_DEINIT:
|
case MENU_ANIMATION_CTL_DEINIT:
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
if (!anim)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
for (i = 0; i < anim->size; i++)
|
for (i = 0; i < anim.size; i++)
|
||||||
{
|
{
|
||||||
if (anim->list[i].subject)
|
if (anim.list[i].subject)
|
||||||
anim->list[i].subject = NULL;
|
anim.list[i].subject = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(anim->list);
|
free(anim.list);
|
||||||
|
|
||||||
memset(anim, 0, sizeof(menu_animation_t));
|
memset(&anim, 0, sizeof(menu_animation_t));
|
||||||
}
|
}
|
||||||
cur_time = 0;
|
cur_time = 0;
|
||||||
old_time = 0;
|
old_time = 0;
|
||||||
|
@ -596,16 +585,13 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
|
||||||
if (!dt)
|
if (!dt)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (anim)
|
for(i = 0; i < anim.size; i++)
|
||||||
{
|
menu_animation_iterate(&anim, i, *dt, &active_tweens);
|
||||||
for(i = 0; i < anim->size; i++)
|
|
||||||
menu_animation_iterate(anim, i, *dt, &active_tweens);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!active_tweens)
|
if (!active_tweens)
|
||||||
{
|
{
|
||||||
anim->size = 0;
|
anim.size = 0;
|
||||||
anim->first_dead = 0;
|
anim.first_dead = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -620,16 +606,16 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
|
||||||
if (!tag || tag->id == -1)
|
if (!tag || tag->id == -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (i = 0; i < anim->size; ++i)
|
for (i = 0; i < anim.size; ++i)
|
||||||
{
|
{
|
||||||
if (anim->list[i].tag != tag->id)
|
if (anim.list[i].tag != tag->id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
anim->list[i].alive = false;
|
anim.list[i].alive = false;
|
||||||
anim->list[i].subject = NULL;
|
anim.list[i].subject = NULL;
|
||||||
|
|
||||||
if (i < anim->first_dead)
|
if (i < anim.first_dead)
|
||||||
anim->first_dead = i;
|
anim.first_dead = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -640,21 +626,21 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
|
||||||
(menu_animation_ctx_subject_t*)data;
|
(menu_animation_ctx_subject_t*)data;
|
||||||
float **sub = (float**)subject->data;
|
float **sub = (float**)subject->data;
|
||||||
|
|
||||||
for (i = 0; i < anim->size; ++i)
|
for (i = 0; i < anim.size; ++i)
|
||||||
{
|
{
|
||||||
if (!anim->list[i].alive)
|
if (!anim.list[i].alive)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (j = 0; j < subject->count; ++j)
|
for (j = 0; j < subject->count; ++j)
|
||||||
{
|
{
|
||||||
if (anim->list[i].subject != sub[j])
|
if (anim.list[i].subject != sub[j])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
anim->list[i].alive = false;
|
anim.list[i].alive = false;
|
||||||
anim->list[i].subject = NULL;
|
anim.list[i].subject = NULL;
|
||||||
|
|
||||||
if (i < anim->first_dead)
|
if (i < anim.first_dead)
|
||||||
anim->first_dead = i;
|
anim.first_dead = i;
|
||||||
|
|
||||||
killed++;
|
killed++;
|
||||||
break;
|
break;
|
||||||
|
@ -701,7 +687,7 @@ bool menu_animation_ctl(enum menu_animation_ctl_state state, void *data)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MENU_ANIMATION_CTL_PUSH:
|
case MENU_ANIMATION_CTL_PUSH:
|
||||||
return menu_animation_push(anim, data);
|
return menu_animation_push(&anim, data);
|
||||||
case MENU_ANIMATION_CTL_NONE:
|
case MENU_ANIMATION_CTL_NONE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue