Add levelpack loading in asset loader

Changelog:
- Update main code to use assets loader
- Update level load test as well
scene_man
En Yi 2023-08-14 15:40:48 +08:00
parent 9387189927
commit f6f3214dc1
4 changed files with 30 additions and 21 deletions

View File

@ -264,15 +264,12 @@ int main(void)
load_from_infofile("res/assets.info", &engine.assets);
init_player_creation("res/player_spr.info", &engine.assets);
LevelPack_t* pack = add_level_pack(&engine.assets, "TestLevels", "res/defaultLevels.lvldata");
assert(pack != NULL);
LevelScene_t scene;
scene.scene.engine = &engine;
init_scene(&scene.scene, &level_scene_render_func, &level_do_action);
init_level_scene_data(&scene.data, MAX_N_TILES, all_tiles);
pack = get_level_pack(&engine.assets, "TestLevels");
LevelPack_t* pack = get_level_pack(&engine.assets, "TestLevels");
assert(pack != NULL);
scene.data.level_pack = pack;

27
main.c
View File

@ -1,5 +1,7 @@
#include "raylib.h"
#include "assets_loader.h"
#include "scene_impl.h"
#include "ent_impl.h"
#include "mempool.h"
#include <stdio.h>
#define N_SCENES 3
@ -15,20 +17,6 @@ static GameEngine_t engine = {
const int screenWidth = 1280;
const int screenHeight = 640;
static void load_assets(void)
{
Texture2D* tex = add_texture(&engine.assets, "plr_tex", "res/test_tex.png");
Sprite_t* spr = add_sprite(&engine.assets, "plr_stand", tex);
spr->origin = (Vector2){0, 0};
spr->frame_size = (Vector2){32, 32};
spr = add_sprite(&engine.assets, "plr_run", tex);
spr->frame_count = 4;
spr->origin = (Vector2){0, 0};
spr->frame_size = (Vector2){32, 32};
spr->speed = 15;
}
// Maintain own queue to handle key presses
struct sc_queue_32 key_buffer;
@ -42,11 +30,20 @@ int main(void)
init_memory_pools();
init_assets(&engine.assets);
load_assets();
load_from_infofile("res/assets.info", &engine.assets);
init_player_creation("res/player_spr.info", &engine.assets);
LevelScene_t level_scene;
level_scene.scene.engine = &engine;
init_sandbox_scene(&level_scene);
LevelPack_t* pack = get_level_pack(&engine.assets, "TestLevels");
if (pack != NULL)
{
level_scene.data.level_pack = pack;
level_scene.data.current_level = 0;
load_level_tilemap(&level_scene, 0);
}
MenuScene_t menu_scene;
menu_scene.scene.engine = &engine;
init_menu_scene(&menu_scene);

View File

@ -6,6 +6,7 @@ typedef enum AssetInfoType
{
TEXTURE_INFO,
SPRITE_INFO,
LEVELPACK_INFO,
INVALID_INFO
}AssetInfoType_t;
@ -64,6 +65,10 @@ bool load_from_infofile(const char* file, Assets_t* assets)
{
info_type = SPRITE_INFO;
}
else if (strcmp(tmp, "LevelPack") == 0)
{
info_type = LEVELPACK_INFO;
}
else
{
info_type = INVALID_INFO;
@ -90,6 +95,16 @@ bool load_from_infofile(const char* file, Assets_t* assets)
//strcpy(tmp2, name);
}
break;
case LEVELPACK_INFO:
{
if (add_level_pack(assets, name, info_str) == NULL)
{
printf("Unable to add level pack at line %lu\n", line_num);
break;
}
printf("Added level pack %s as %s\n", info_str, name);
}
break;
case SPRITE_INFO:
{
SpriteInfo_t spr_info = {0};

View File

@ -4,12 +4,12 @@
#include <stdio.h>
#define MAX_TEXTURES 16
#define MAX_SPRITES 16
#define MAX_SPRITES 64
#define MAX_SOUNDS 16
#define MAX_FONTS 4
#define MAX_N_TILES 4096
#define MAX_NAME_LEN 32
#define MAX_LEVEL_PACK 1
#define MAX_LEVEL_PACK 4
uint8_t n_loaded[5] = {0};
// Hard limit number of