Update main game render

main
En Yi 2024-08-13 15:34:31 +08:00
parent 639aed69db
commit 979533092e
4 changed files with 23 additions and 12 deletions

5
main.c
View File

@ -63,7 +63,10 @@ int main(void)
level_scene.data.tile_sprites[SPIKES + TILE_90CWROT] = get_sprite(&engine.assets, "l_spikes"); level_scene.data.tile_sprites[SPIKES + TILE_90CWROT] = get_sprite(&engine.assets, "l_spikes");
level_scene.data.tile_sprites[SPIKES + TILE_90CCWROT] = get_sprite(&engine.assets, "r_spikes"); level_scene.data.tile_sprites[SPIKES + TILE_90CCWROT] = get_sprite(&engine.assets, "r_spikes");
level_scene.data.tile_sprites[SPIKES + TILE_180ROT] = get_sprite(&engine.assets, "u_spikes"); level_scene.data.tile_sprites[SPIKES + TILE_180ROT] = get_sprite(&engine.assets, "u_spikes");
LevelPack_t* pack = get_level_pack(&engine.assets, "TestLevels"); Texture2D* tex = get_texture(&engine.assets, "bg_tex");
SetTextureWrap(*tex, TEXTURE_WRAP_REPEAT);
LevelPack_t* pack = get_level_pack(&engine.assets, "DefLevels");
if (pack != NULL) if (pack != NULL)
{ {
level_scene.data.level_pack = pack; level_scene.data.level_pack = pack;

View File

@ -7,8 +7,8 @@
#define DEFAULT_MAP_HEIGHT 32 #define DEFAULT_MAP_HEIGHT 32
#define VIEWABLE_EDITOR_MAP_WIDTH 32 #define VIEWABLE_EDITOR_MAP_WIDTH 32
#define VIEWABLE_EDITOR_MAP_HEIGHT 16 #define VIEWABLE_EDITOR_MAP_HEIGHT 16
#define VIEWABLE_MAP_WIDTH 21 #define VIEWABLE_MAP_WIDTH 25
#define VIEWABLE_MAP_HEIGHT 15 #define VIEWABLE_MAP_HEIGHT 14
#else #else
#define TILE_SIZE 16 #define TILE_SIZE 16
#define DEFAULT_MAP_WIDTH 64 #define DEFAULT_MAP_WIDTH 64
@ -23,9 +23,9 @@
#define MOVE_ACCEL 1300 #define MOVE_ACCEL 1300
#ifndef TILE16_SIZE #ifndef TILE16_SIZE
#define PLAYER_WIDTH 28 #define PLAYER_WIDTH 22
#define PLAYER_HEIGHT 42 #define PLAYER_HEIGHT 42
#define PLAYER_C_WIDTH 28 #define PLAYER_C_WIDTH 22
#define PLAYER_C_HEIGHT 26 #define PLAYER_C_HEIGHT 26
#else #else
#define PLAYER_WIDTH 14 #define PLAYER_WIDTH 14
@ -41,7 +41,7 @@
#define GROUND_X_FRICTION 6.1 #define GROUND_X_FRICTION 6.1
#define GROUND_Y_FRICTION 1.0 #define GROUND_Y_FRICTION 1.0
#define ARROW_SPEED 350 #define ARROW_SPEED 400
#define MAX_WATER_LEVEL 4 #define MAX_WATER_LEVEL 4
#define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL) #define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL)

View File

@ -301,9 +301,10 @@ static void render_regular_game_scene(Scene_t* scene)
if (tilemap.tiles[i].tile_type != LADDER) if (tilemap.tiles[i].tile_type != LADDER)
{ {
if (data->tile_sprites[tilemap.tiles[i].tile_type] != NULL) uint8_t tile_sprite_idx = tilemap.tiles[i].tile_type + tilemap.tiles[i].rotation;
if (data->tile_sprites[tile_sprite_idx] != NULL)
{ {
draw_sprite(data->tile_sprites[tilemap.tiles[i].tile_type], 0, (Vector2){x,y}, 0.0f, false); draw_sprite(data->tile_sprites[tile_sprite_idx], 0, (Vector2){x,y}, 0.0f, false);
} }
else if (tilemap.tiles[i].tile_type == SOLID_TILE) else if (tilemap.tiles[i].tile_type == SOLID_TILE)
{ {
@ -443,8 +444,6 @@ void init_game_scene(LevelScene_t* scene)
update_entity_manager(&scene->scene.ent_manager); update_entity_manager(&scene->scene.ent_manager);
// Set up textures // Set up textures
Texture2D* tex = get_texture(&scene->scene.engine->assets, "bg_tex");
SetTextureWrap(*tex, TEXTURE_WRAP_REPEAT);
scene->data.solid_tile_sprites = get_sprite(&scene->scene.engine->assets, "stile0"); scene->data.solid_tile_sprites = get_sprite(&scene->scene.engine->assets, "stile0");
sc_array_add(&scene->scene.systems, &update_tilemap_system); sc_array_add(&scene->scene.systems, &update_tilemap_system);

View File

@ -75,10 +75,10 @@ bool load_level_tilemap(LevelScene_t* scene, unsigned int level_num)
if (lvl_map.tiles[i].tile_type == 1) if (lvl_map.tiles[i].tile_type == 1)
{ {
change_a_tile(&scene->data.tilemap, i, SOLID_TILE); change_a_tile(&scene->data.tilemap, i, SOLID_TILE);
} }
scene->data.tilemap.tiles[i].water_level = lvl_map.tiles[i].water; scene->data.tilemap.tiles[i].water_level = lvl_map.tiles[i].water;
} }
// Two pass // Two pass
for (size_t i = 0; i < scene->data.tilemap.n_tiles;i++) for (size_t i = 0; i < scene->data.tilemap.n_tiles;i++)
@ -139,6 +139,15 @@ bool load_level_tilemap(LevelScene_t* scene, unsigned int level_num)
ent->spawn_pos = ent->position; ent->spawn_pos = ent->position;
} }
break; break;
case 23:
{
Entity_t* ent = create_chest(&scene->scene.ent_manager);
ent->position.x = (i % scene->data.tilemap.width) * scene->data.tilemap.tile_size;
ent->position.y = (i / scene->data.tilemap.width) * scene->data.tilemap.tile_size;
CTransform_t* p_ctransform = get_component(ent, CTRANSFORM_COMP_T);
p_ctransform->active = true;
}
break;
default: default:
break; break;
} }