From 979533092ef2edd949675db16eb8a4ae5cf5a361 Mon Sep 17 00:00:00 2001 From: En Yi Date: Tue, 13 Aug 2024 15:34:31 +0800 Subject: [PATCH] Update main game render --- main.c | 5 ++++- scenes/constants.h | 10 +++++----- scenes/game_scene.c | 7 +++---- scenes/scene_systems.c | 13 +++++++++++-- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/main.c b/main.c index 231d779..bec6a39 100644 --- a/main.c +++ b/main.c @@ -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_90CCWROT] = get_sprite(&engine.assets, "r_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) { level_scene.data.level_pack = pack; diff --git a/scenes/constants.h b/scenes/constants.h index 1b3a587..c44b120 100644 --- a/scenes/constants.h +++ b/scenes/constants.h @@ -7,8 +7,8 @@ #define DEFAULT_MAP_HEIGHT 32 #define VIEWABLE_EDITOR_MAP_WIDTH 32 #define VIEWABLE_EDITOR_MAP_HEIGHT 16 -#define VIEWABLE_MAP_WIDTH 21 -#define VIEWABLE_MAP_HEIGHT 15 +#define VIEWABLE_MAP_WIDTH 25 +#define VIEWABLE_MAP_HEIGHT 14 #else #define TILE_SIZE 16 #define DEFAULT_MAP_WIDTH 64 @@ -23,9 +23,9 @@ #define MOVE_ACCEL 1300 #ifndef TILE16_SIZE -#define PLAYER_WIDTH 28 +#define PLAYER_WIDTH 22 #define PLAYER_HEIGHT 42 -#define PLAYER_C_WIDTH 28 +#define PLAYER_C_WIDTH 22 #define PLAYER_C_HEIGHT 26 #else #define PLAYER_WIDTH 14 @@ -41,7 +41,7 @@ #define GROUND_X_FRICTION 6.1 #define GROUND_Y_FRICTION 1.0 -#define ARROW_SPEED 350 +#define ARROW_SPEED 400 #define MAX_WATER_LEVEL 4 #define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL) diff --git a/scenes/game_scene.c b/scenes/game_scene.c index 206d9ce..99761ad 100644 --- a/scenes/game_scene.c +++ b/scenes/game_scene.c @@ -301,9 +301,10 @@ static void render_regular_game_scene(Scene_t* scene) 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) { @@ -443,8 +444,6 @@ void init_game_scene(LevelScene_t* scene) update_entity_manager(&scene->scene.ent_manager); // 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"); sc_array_add(&scene->scene.systems, &update_tilemap_system); diff --git a/scenes/scene_systems.c b/scenes/scene_systems.c index 8f62bf4..a3a2719 100644 --- a/scenes/scene_systems.c +++ b/scenes/scene_systems.c @@ -75,10 +75,10 @@ bool load_level_tilemap(LevelScene_t* scene, unsigned int level_num) 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 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; } 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: break; }