feat: add walk animations *

also fix walk animation displaying
This commit is contained in:
mcolonna 2024-04-04 17:13:19 +02:00
parent 92fbb27f18
commit 6ad613d4bb
31 changed files with 6649 additions and 26 deletions

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/02/26 16:27:06 by mcolonna #+# #+# */
/* Updated: 2024/04/02 17:27:27 by mcolonna ### ########.fr */
/* Updated: 2024/04/05 18:44:23 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -27,6 +27,18 @@ const t_assetmeta g_assetsmap[NB_ASSETS] = {
{"object/snas/up", 50, 100, 30, 100, false},
{"object/snas/left", 50, 100, 30, 100, false},
{"object/snas/right", 50, 100, 30, 100, false},
{"object/snas/walk_down_1", 50, 100, 30, 100, false},
{"object/snas/walk_down_2", 50, 100, 30, 100, false},
{"object/snas/walk_down_3", 50, 100, 30, 100, false},
{"object/snas/walk_down_4", 50, 100, 30, 100, false},
{"object/snas/walk_right_1", 50, 100, 30, 100, false},
{"object/snas/walk_right_2", 50, 100, 30, 100, false},
{"object/snas/walk_left_1", 50, 100, 30, 100, false},
{"object/snas/walk_left_2", 50, 100, 30, 100, false},
{"object/snas/walk_up_1", 50, 100, 30, 100, false},
{"object/snas/walk_up_2", 50, 100, 30, 100, false},
{"object/snas/walk_up_3", 50, 100, 30, 100, false},
{"object/snas/walk_up_4", 50, 100, 30, 100, false},
// firsk
{"object/firsk/down", 50, 110, 30, 100, false},
{"object/firsk/up", 40, 100, 30, 100, false},

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/11 16:02:29 by mcolonna #+# #+# */
/* Updated: 2024/04/03 16:05:09 by mcolonna ### ########.fr */
/* Updated: 2024/04/05 18:45:02 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -17,10 +17,10 @@ const t_spritemeta g_spritesmap[NB_SPRITES] = {
{FLOOR_1, 50, 50, ANIMATION, 1, 1},
{FLOOR_2, 50, 50, ANIMATION, 1, 1},
{OBJECT_SNAS, 50, 50, CHARACTER_STILL, 0, 0},
{OBJECT_SNAS_DOWN, 50, 50, ANIMATION, 1, 1},
{OBJECT_SNAS_UP, 50, 50, ANIMATION, 1, 1},
{OBJECT_SNAS_LEFT, 50, 50, ANIMATION, 1, 1},
{OBJECT_SNAS_RIGHT, 50, 50, ANIMATION, 1, 1},
{OBJECT_SNAS_WALK_DOWN_1, 50, 50, ANIMATION, 4, 3},
{OBJECT_SNAS_WALK_UP_1, 50, 50, ANIMATION, 4, 3},
{OBJECT_SNAS_WALK_RIGHT_1, 50, 50, ANIMATION, 2, 3},
{OBJECT_SNAS_WALK_LEFT_1, 50, 50, ANIMATION, 2, 3},
{WALL_INNER, 50, 50, ANIMATION, 1, 1},
{OBJECT_KETCHUP_STILL_1, 50, 50, ANIMATION, 4, 4},
{OBJECT_KETCHUP_FADE_1, 50, 50, ANIMATION_ONCE, 3, 1},

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */
/* Updated: 2024/04/02 17:35:56 by mcolonna ### ########.fr */
/* Updated: 2024/04/05 19:44:45 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -20,12 +20,17 @@ static void character_initstate(t_character *character)
character->sprites->walk_left,
character->sprites->walk_right,
};
t_sprite new_spr;
if (character->walk_remaining_steps)
character->spr = sprite_init(walk_sprites[character->direction]);
{
new_spr = sprite_init(walk_sprites[character->direction]);
if (character->spr.meta != new_spr.meta)
character->spr = new_spr;
}
else
{
character->spr = sprite_init(SPR_SNAS);
character->spr = sprite_init(character->sprites->still);
sprite_character_set_direction(&character->spr, character->direction);
}
}
@ -50,9 +55,11 @@ t_point character_loop(
move = NO_DIRECTION;
if (character->walk_remaining_steps)
if (!--character->walk_remaining_steps)
character_initstate(character);
if (!character->walk_remaining_steps)
{
character_initstate(character);
character->walk_remaining_steps--;
}
else
{
move = brain();
if (move != NO_DIRECTION)
@ -64,8 +71,8 @@ t_point character_loop(
character_initstate(character);
return (point_fromdirection(character->direction));
}
character_initstate(character);
}
character_initstate(character);
}
return (point_init(0, 0));
}
@ -77,6 +84,7 @@ t_character character_init(t_character_sprites *sprites)
r.direction = DOWN;
r.sprites = sprites;
r.walk_remaining_steps = 0;
r.spr = sprite_init(r.sprites->still);
character_initstate(&r);
return (r);
}

View file

@ -6,7 +6,7 @@
/* By: mcolonna <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/15 15:27:03 by mcolonna #+# #+# */
/* Updated: 2024/04/03 15:16:56 by mcolonna ### ########.fr */
/* Updated: 2024/04/04 16:08:52 by mcolonna ### ########.fr */
/* */
/* ************************************************************************** */
@ -42,10 +42,10 @@ t_object snas_init(t_memclass mc)
= {loop: snas_loop, draw: snas_draw, walk_through: NULL};
static const t_character_sprites sprites = {
still: SPR_SNAS,
walk_left: SPR_SNAS_LEFT,
walk_right: SPR_SNAS_RIGHT,
walk_up: SPR_SNAS_UP,
walk_down: SPR_SNAS_DOWN,
walk_left: SPR_SNAS_WALK_LEFT,
walk_right: SPR_SNAS_WALK_RIGHT,
walk_up: SPR_SNAS_WALK_UP,
walk_down: SPR_SNAS_WALK_DOWN,
};
t_object r;
t_snas_data *data;