Compare commits

...

4 Commits

Author SHA1 Message Date
En Yi 2461244f6b Add chest into ldtk packing 2024-08-15 11:08:56 +08:00
En Yi 9410075207 Add placeholder images 2024-08-15 11:08:39 +08:00
En Yi c1207ec5b4 Properly reset a level scene 2024-08-15 11:08:20 +08:00
En Yi 13d8aafec3 Increase engine limits 2024-08-15 11:00:16 +08:00
6 changed files with 30 additions and 17 deletions

View File

@ -5,10 +5,10 @@
#define MAX_RENDER_LAYERS 4
#define MAX_ENTITIES 2048
#define MAX_TEXTURES 16
#define MAX_SPRITES 64
#define MAX_SPRITES 128
#define MAX_SOUNDS 32
#define MAX_FONTS 4
#define MAX_N_TILES 4096
#define MAX_N_TILES 16384
#define MAX_NAME_LEN 32
#define MAX_LEVEL_PACK 4
#define N_SFX 32

View File

@ -37,6 +37,7 @@ ENUMIDS_TILETYPE_MAPPING = {
'Boulder': 20,
'Runner': 21,
'Player': 22,
'Chest': 23,
}
#ENTID_MAPPING = {
@ -99,8 +100,13 @@ with open(converted_filename, 'wb+') as out_file:
n_tiles = width * height
tiles_info = [[0,0,0] for _ in range(n_tiles)]
# Loop through gridTiles, get "d" as the index to fill the info
for tile in level_layout["gridTiles"]:
tiles_info[tile["d"][0]][0] = ids_tiletype_map[tile["t"]]
for i, tile in enumerate(level_layout["gridTiles"]):
try:
tiles_info[tile["d"][0]][0] = ids_tiletype_map[tile["t"]]
except Exception as e:
print("Error on tile", i, i % width, i // height)
print(e)
tiles_info[tile["d"][0]][0] = 0
for i, water_level in enumerate(water_layout["intGridCsv"]):
tiles_info[i][2] = water_level
@ -115,8 +121,8 @@ with open(converted_filename, 'wb+') as out_file:
out_file.write(struct.pack("<3Bx", *tile))
for y in range(height):
for x in range(width):
print(tiles_info[y*width + x], end=" ")
print()
#for y in range(height):
# for x in range(width):
# print(tiles_info[y*width + x], end=" ")
# print()

View File

@ -47,6 +47,4 @@
#define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL)
#define MAX_LEVEL_NUM 50
#define MAX_N_TILES 4096
#endif // __CONSTANTS_H

View File

@ -7,10 +7,16 @@
static void level_select_render_func(Scene_t* scene)
{
LevelSelectSceneData_t* data = &(CONTAINER_OF(scene, LevelSelectScene_t, scene)->data);
Sprite_t* spr = get_sprite(&scene->engine->assets, "bunny_spr1");
BeginTextureMode(scene->layers.render_layers[0].layer_tex);
ClearBackground(BLANK);
DrawText("Level Select", 10, 10, 40, BLACK);
vert_scrollarea_render(&data->scroll_area);
draw_sprite(
spr, 0, (Vector2){
data->scroll_area.display_area.x + data->scroll_area.display_area.width + 50,
data->scroll_area.display_area.y + data->scroll_area.display_area.height / 2
}, 0, false);
EndTextureMode();
}

View File

@ -9,7 +9,7 @@ static void menu_scene_render_func(Scene_t* scene)
{
MenuSceneData_t* data = &(CONTAINER_OF(scene, MenuScene_t, scene)->data);
Texture2D* bg = get_texture(&scene->engine->assets, "title_tex");
Sprite_t* spr = get_sprite(&scene->engine->assets, "title_spr");
BeginTextureMode(scene->layers.render_layers[0].layer_tex);
ClearBackground(RAYWHITE);
DrawText("Bunny's Spelunking Adventure", START_X, 100, 32, BLACK);
@ -18,11 +18,7 @@ static void menu_scene_render_func(Scene_t* scene)
UI_button(data->buttons + 2, "Continue");
UI_button(data->buttons + 3, "Exit");
DrawTexturePro(*bg,
(Rectangle){0, 0, bg->width, bg->height},
(Rectangle){START_X + 200, 120, bg->width, bg->height},
(Vector2){0,0}, 0.0f, WHITE
);
draw_sprite(spr, 0, (Vector2){START_X + 200, 120}, 0, false);
EndTextureMode();
}

View File

@ -64,13 +64,19 @@ bool load_level_tilemap(LevelScene_t* scene, unsigned int level_num)
scene->data.tilemap.n_tiles = n_tiles;
clear_entity_manager(&scene->scene.ent_manager);
for (size_t i = 0; i < scene->data.tilemap.n_tiles;i++)
{
scene->data.tilemap.tiles[i].max_water_level = 4;
scene->data.tilemap.tiles[i].solid = NOT_SOLID;
scene->data.tilemap.tiles[i].tile_type = EMPTY_TILE;
scene->data.tilemap.tiles[i].rotation = TILE_NOROTATE;
scene->data.tilemap.tiles[i].connectivity = 0;
scene->data.tilemap.tiles[i].moveable = true;
scene->data.tilemap.tiles[i].offset = (Vector2){0, 0};
scene->data.tilemap.tiles[i].size = (Vector2){TILE_SIZE, TILE_SIZE};
scene->data.tilemap.tiles[i].def = 0;
sc_map_clear_64v(&scene->data.tilemap.tiles[i].entities_set);
if (lvl_map.tiles[i].tile_type == 1)
@ -78,6 +84,7 @@ bool load_level_tilemap(LevelScene_t* scene, unsigned int level_num)
change_a_tile(&scene->data.tilemap, i, SOLID_TILE);
}
scene->data.tilemap.tiles[i].max_water_level = 4;
scene->data.tilemap.tiles[i].water_level = lvl_map.tiles[i].water;
scene->data.tilemap.tiles[i].wet = scene->data.tilemap.tiles[i].water_level > 0;
}