Add tilemap rendering from sprite
Internal Changelog: - Add a mapping from connectivity to tile to render - Add new field for static tilemap spritescene_man
parent
d7113d42fe
commit
7b4af0b513
|
@ -101,7 +101,7 @@ static inline bool add_a_sprite(Assets_t* assets, const SpriteInfo_t* spr_info,
|
||||||
// Cannot be zero
|
// Cannot be zero
|
||||||
spr->frame_count = 1;
|
spr->frame_count = 1;
|
||||||
}
|
}
|
||||||
spr->frame_per_row = spr_info->frame_count;
|
spr->frame_per_row = spr_info->frame_per_row;
|
||||||
spr->speed = spr_info->speed;
|
spr->speed = spr_info->speed;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,13 @@ static bool crate_activation = false;
|
||||||
#define GAME_LAYER 0
|
#define GAME_LAYER 0
|
||||||
#define SELECTION_LAYER 1
|
#define SELECTION_LAYER 1
|
||||||
#define CONTROL_LAYER 2
|
#define CONTROL_LAYER 2
|
||||||
|
|
||||||
|
static const uint8_t CONNECTIVITY_TILE_MAPPING[16] = {
|
||||||
|
0,3,15,14,
|
||||||
|
1,2,12,13,
|
||||||
|
7,6,11,10,
|
||||||
|
4,5,8 ,9 ,
|
||||||
|
};
|
||||||
static char* get_spawn_selection_string(enum EntitySpawnSelection sel)
|
static char* get_spawn_selection_string(enum EntitySpawnSelection sel)
|
||||||
{
|
{
|
||||||
switch(sel)
|
switch(sel)
|
||||||
|
@ -481,8 +488,12 @@ static void render_editor_game_scene(Scene_t* scene)
|
||||||
}
|
}
|
||||||
if (tilemap.tiles[i].solid == SOLID)
|
if (tilemap.tiles[i].solid == SOLID)
|
||||||
{
|
{
|
||||||
sprintf(buffer, "%u", tilemap.tiles[i].connectivity);
|
draw_sprite(
|
||||||
DrawText(buffer, x + tilemap.tile_size / 2, y + tilemap.tile_size / 2, 12, WHITE);
|
data->solid_tile_sprites, CONNECTIVITY_TILE_MAPPING[tilemap.tiles[i].connectivity],
|
||||||
|
(Vector2){x,y}, 0.0f, false
|
||||||
|
);
|
||||||
|
//sprintf(buffer, "%u", tilemap.tiles[i].connectivity);
|
||||||
|
//DrawText(buffer, x + tilemap.tile_size / 2, y + tilemap.tile_size / 2, 12, WHITE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1002,6 +1013,7 @@ void init_sandbox_scene(LevelScene_t* scene)
|
||||||
scene->data.tile_sprites[SPIKES + TILE_90CWROT] = get_sprite(&scene->scene.engine->assets, "l_spikes");
|
scene->data.tile_sprites[SPIKES + TILE_90CWROT] = get_sprite(&scene->scene.engine->assets, "l_spikes");
|
||||||
scene->data.tile_sprites[SPIKES + TILE_90CCWROT] = get_sprite(&scene->scene.engine->assets, "r_spikes");
|
scene->data.tile_sprites[SPIKES + TILE_90CCWROT] = get_sprite(&scene->scene.engine->assets, "r_spikes");
|
||||||
scene->data.tile_sprites[SPIKES + TILE_180ROT] = get_sprite(&scene->scene.engine->assets, "u_spikes");
|
scene->data.tile_sprites[SPIKES + TILE_180ROT] = get_sprite(&scene->scene.engine->assets, "u_spikes");
|
||||||
|
scene->data.solid_tile_sprites = get_sprite(&scene->scene.engine->assets, "stile0");
|
||||||
|
|
||||||
for (size_t i = 0; i < scene->data.tilemap.width; ++i)
|
for (size_t i = 0; i < scene->data.tilemap.width; ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,6 +44,7 @@ typedef struct LevelSceneData {
|
||||||
Rectangle game_rec;
|
Rectangle game_rec;
|
||||||
LevelCamera_t camera;
|
LevelCamera_t camera;
|
||||||
Sprite_t* tile_sprites[MAX_TILE_SPRITES];
|
Sprite_t* tile_sprites[MAX_TILE_SPRITES];
|
||||||
|
Sprite_t* solid_tile_sprites;
|
||||||
LevelPack_t* level_pack;
|
LevelPack_t* level_pack;
|
||||||
unsigned int current_level;
|
unsigned int current_level;
|
||||||
CoinCounter_t coins;
|
CoinCounter_t coins;
|
||||||
|
|
Loading…
Reference in New Issue