diff options
| author | realtradam <[email protected]> | 2023-05-26 16:30:43 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-05-26 16:30:43 -0400 |
| commit | d1471c210e8af13234bd7fe120faf5fc9dfae038 (patch) | |
| tree | aede588ee9fa1cb0d17cda38f9367eb6baa9b223 | |
| parent | 33dc8e4cd4987a9f439767cf23812dce835fb4a5 (diff) | |
| download | TOJam2023-d1471c210e8af13234bd7fe120faf5fc9dfae038.tar.gz TOJam2023-d1471c210e8af13234bd7fe120faf5fc9dfae038.zip | |
start sprite work
| -rw-r--r-- | CMakeLists.txt | 1 | ||||
| -rw-r--r-- | assets/mainblob-128.png | bin | 0 -> 94731 bytes | |||
| -rw-r--r-- | src/player.c | 20 | ||||
| -rw-r--r-- | src/sprite.c | 24 | ||||
| -rw-r--r-- | src/sprite.h | 21 |
5 files changed, 64 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 26ac31b..2613cf6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ add_executable(${PROJECT_NAME} "src/player.c" "src/bullet.c" "src/enemies.c" + "src/sprite.c" ) set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD 99) diff --git a/assets/mainblob-128.png b/assets/mainblob-128.png Binary files differnew file mode 100644 index 0000000..ca78578 --- /dev/null +++ b/assets/mainblob-128.png diff --git a/src/player.c b/src/player.c index 6c62b43..7804c59 100644 --- a/src/player.c +++ b/src/player.c @@ -2,7 +2,17 @@ #include "input.h" #include "player.h" #include "rodeo/collision.h" +#include "sprite.h" + static rodeo_texture_2d_t player_texture; +static sprite_t player_sprite = { + .iter = 0, + .config = { + .width = 128, + .height = 128, + .count = 61 + } +}; static world_id player_collision_id; static rodeo_collision_2d_world_t player_collision_world; @@ -11,7 +21,9 @@ static float orc_size[] = {13.0f * 2.0f, 19.0f * 2.0f}; void init_player(void) { - player_texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/orc.png")); + //player_texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/orc.png")); + player_texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/mainblob-128.png")); + player_sprite.config.texture = &player_texture; player_collision_world = rodeo_collision_2d_world_create(); player_collision_id = rodeo_collision_2d_world_item_create( &player_collision_world, @@ -35,6 +47,8 @@ void draw_player(void) { cvec_collision_2d_world_item_value *player = rodeo_collision_2d_world_item_get_by_id(player_collision_id); + draw_sprite(&player_sprite, player->x, player->y, 0.25f); + /* rodeo_texture_2d_draw( &(rodeo_rectangle_t){ .x = (float)(int32_t)player->x - (orc_size[0] / 2.0f), @@ -51,7 +65,7 @@ draw_player(void) NULL, &player_texture ); - + */ } void @@ -70,6 +84,8 @@ parse_player_input(void) void move_player(void) { + player_sprite.iter += 1; + player_sprite.iter %= player_sprite.config.count; cvec_collision_2d_world_item_value *player = rodeo_collision_2d_world_item_get_by_id(player_collision_id); player->x += player->dx; player->dx = 0; diff --git a/src/sprite.c b/src/sprite.c new file mode 100644 index 0000000..c1c88f6 --- /dev/null +++ b/src/sprite.c @@ -0,0 +1,24 @@ + +#include "rodeo.h" +#include "sprite.h" + +void +draw_sprite(sprite_t *sprite, float x, float y, float scale) +{ + rodeo_texture_2d_draw( + &(rodeo_rectangle_t){ + .x = x - ((float)sprite->config.width * scale / 2), + .y = y - ((float)sprite->config.height * scale / 2), + .width = (float)sprite->config.width * scale, + .height = (float)sprite->config.height * scale + }, + &(rodeo_rectangle_t){ + .x = (float)sprite->config.width * (float)sprite->iter, + .y = 0, + .width = (float)sprite->config.width, + .height = (float)sprite->config.height + }, + &(rodeo_color_RGBAFloat_t){ .array = { 1.0f, 1.0f, 1.0f, 1.0f } }, + sprite->config.texture + ); +} diff --git a/src/sprite.h b/src/sprite.h new file mode 100644 index 0000000..81ad5fa --- /dev/null +++ b/src/sprite.h @@ -0,0 +1,21 @@ +#pragma once + +#include "rodeo.h" + +typedef +struct +{ + uint32_t iter; + struct config + { + uint32_t width; + uint32_t height; + uint32_t count; + rodeo_texture_2d_t *texture; + } config; +} +sprite_t; + +void +draw_sprite(sprite_t *sprite, float x, float y, float scale); + |
