Compare commits
2 Commits
0c540d5053
...
26cc567b7f
Author | SHA1 | Date |
---|---|---|
|
26cc567b7f | |
|
e39e549cd0 |
|
@ -142,7 +142,7 @@ Font* add_font(Assets_t* assets, const char* name, const char* path)
|
||||||
return &fonts[fnt_idx].font;
|
return &fonts[fnt_idx].font;
|
||||||
}
|
}
|
||||||
|
|
||||||
EmitterConfig_t* add_emitter_conf(Assets_t* assets, const char* name, Sprite_t* sprite)
|
EmitterConfig_t* add_emitter_conf(Assets_t* assets, const char* name)
|
||||||
{
|
{
|
||||||
uint8_t emitter_idx = n_loaded[5];
|
uint8_t emitter_idx = n_loaded[5];
|
||||||
assert(emitter_idx < MAX_EMITTER_CONF);
|
assert(emitter_idx < MAX_EMITTER_CONF);
|
||||||
|
|
|
@ -59,7 +59,7 @@ Texture2D* add_texture_rres(Assets_t* assets, const char* name, const char* file
|
||||||
LevelPack_t* add_level_pack_rres(Assets_t* assets, const char* name, const char* filename, const RresFileInfo_t* rres_file);
|
LevelPack_t* add_level_pack_rres(Assets_t* assets, const char* name, const char* filename, const RresFileInfo_t* rres_file);
|
||||||
|
|
||||||
Sprite_t* add_sprite(Assets_t* assets, const char* name, Texture2D* texture);
|
Sprite_t* add_sprite(Assets_t* assets, const char* name, Texture2D* texture);
|
||||||
EmitterConfig_t* add_emitter_conf(Assets_t* assets, const char* name, Sprite_t* sprite);
|
EmitterConfig_t* add_emitter_conf(Assets_t* assets, const char* name);
|
||||||
|
|
||||||
Texture2D* get_texture(Assets_t* assets, const char* name);
|
Texture2D* get_texture(Assets_t* assets, const char* name);
|
||||||
Sprite_t* get_sprite(Assets_t* assets, const char* name);
|
Sprite_t* get_sprite(Assets_t* assets, const char* name);
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
typedef enum PartEmitterType
|
typedef enum PartEmitterType
|
||||||
{
|
{
|
||||||
EMITTER_BURST = 0,
|
EMITTER_BURST = 0,
|
||||||
|
EMITTER_UNKNOWN,
|
||||||
} PartEmitterType_t;
|
} PartEmitterType_t;
|
||||||
|
|
||||||
typedef struct Particle
|
typedef struct Particle
|
||||||
|
|
15
scene_test.c
15
scene_test.c
|
@ -44,18 +44,12 @@ int main(void)
|
||||||
#endif
|
#endif
|
||||||
init_item_creation(&engine.assets);
|
init_item_creation(&engine.assets);
|
||||||
|
|
||||||
add_sound(&engine.assets, "snd_jump", "res/jump.ogg");
|
|
||||||
add_sound(&engine.assets, "snd_land", "res/land.ogg");
|
|
||||||
add_sound(&engine.assets, "snd_wdrop", "res/water_land.ogg");
|
|
||||||
add_sound(&engine.assets, "snd_bland", "res/boulder_move.ogg");
|
|
||||||
add_sound(&engine.assets, "snd_bubble", "res/bubble.ogg");
|
|
||||||
load_sfx(&engine, "snd_jump", PLAYER_JMP_SFX);
|
load_sfx(&engine, "snd_jump", PLAYER_JMP_SFX);
|
||||||
load_sfx(&engine, "snd_land", PLAYER_LAND_SFX);
|
load_sfx(&engine, "snd_land", PLAYER_LAND_SFX);
|
||||||
load_sfx(&engine, "snd_wdrop", WATER_IN_SFX);
|
load_sfx(&engine, "snd_wdrop", WATER_IN_SFX);
|
||||||
load_sfx(&engine, "snd_bland", BOULDER_LAND_SFX);
|
load_sfx(&engine, "snd_bland", BOULDER_LAND_SFX);
|
||||||
load_sfx(&engine, "snd_bubble", BUBBLE_SFX);
|
load_sfx(&engine, "snd_bubble", BUBBLE_SFX);
|
||||||
|
|
||||||
|
|
||||||
LevelScene_t scene;
|
LevelScene_t scene;
|
||||||
scene.scene.engine = &engine;
|
scene.scene.engine = &engine;
|
||||||
init_sandbox_scene(&scene);
|
init_sandbox_scene(&scene);
|
||||||
|
@ -68,15 +62,6 @@ int main(void)
|
||||||
scenes[0] = &scene.scene;
|
scenes[0] = &scene.scene;
|
||||||
change_scene(&engine, 0);
|
change_scene(&engine, 0);
|
||||||
|
|
||||||
EmitterConfig_t* conf = add_emitter_conf(&engine.assets, "pe_burst", get_sprite(&engine.assets, "bomb"));
|
|
||||||
conf->launch_range[0] = 240;
|
|
||||||
conf->launch_range[1] = 300;
|
|
||||||
conf->one_shot = true;
|
|
||||||
conf->speed_range[0] = 200;
|
|
||||||
conf->speed_range[1] = 300;
|
|
||||||
conf->particle_lifetime[0] = 30;
|
|
||||||
conf->particle_lifetime[1] = 110;
|
|
||||||
|
|
||||||
#if defined(PLATFORM_WEB)
|
#if defined(PLATFORM_WEB)
|
||||||
puts("Setting emscripten main loop");
|
puts("Setting emscripten main loop");
|
||||||
emscripten_set_main_loop(update_loop, 0, 1);
|
emscripten_set_main_loop(update_loop, 0, 1);
|
||||||
|
|
|
@ -6,6 +6,8 @@ typedef enum AssetInfoType
|
||||||
{
|
{
|
||||||
TEXTURE_INFO,
|
TEXTURE_INFO,
|
||||||
SPRITE_INFO,
|
SPRITE_INFO,
|
||||||
|
SOUND_INFO,
|
||||||
|
EMITTER_INFO,
|
||||||
LEVELPACK_INFO,
|
LEVELPACK_INFO,
|
||||||
INVALID_INFO
|
INVALID_INFO
|
||||||
}AssetInfoType_t;
|
}AssetInfoType_t;
|
||||||
|
@ -34,6 +36,27 @@ static bool parse_sprite_info(char* sprite_info_str, SpriteInfo_t* spr_info)
|
||||||
return data_count == 6;
|
return data_count == 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool parse_emitter_info(char* emitter_info_str, EmitterConfig_t* conf)
|
||||||
|
{
|
||||||
|
char emitter_type;
|
||||||
|
uint8_t one_shot;
|
||||||
|
int data_count = sscanf(
|
||||||
|
emitter_info_str, "%c,%f-%f,%f-%f,%u-%u,%c",
|
||||||
|
&emitter_type,
|
||||||
|
conf->launch_range, conf->launch_range + 1,
|
||||||
|
conf->speed_range, conf->speed_range + 1,
|
||||||
|
conf->particle_lifetime, conf->particle_lifetime + 1,
|
||||||
|
&one_shot
|
||||||
|
);
|
||||||
|
|
||||||
|
if (data_count == 8)
|
||||||
|
{
|
||||||
|
conf->type = (emitter_type == 'b') ? EMITTER_BURST : EMITTER_UNKNOWN;
|
||||||
|
conf->one_shot = (one_shot == 1);
|
||||||
|
}
|
||||||
|
return data_count == 8;
|
||||||
|
}
|
||||||
|
|
||||||
bool load_from_rres(const char* file, Assets_t* assets)
|
bool load_from_rres(const char* file, Assets_t* assets)
|
||||||
{
|
{
|
||||||
RresFileInfo_t rres_file;
|
RresFileInfo_t rres_file;
|
||||||
|
@ -186,6 +209,14 @@ bool load_from_infofile(const char* file, Assets_t* assets)
|
||||||
{
|
{
|
||||||
info_type = SPRITE_INFO;
|
info_type = SPRITE_INFO;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(tmp, "Sound") == 0)
|
||||||
|
{
|
||||||
|
info_type = SOUND_INFO;
|
||||||
|
}
|
||||||
|
else if (strcmp(tmp, "Emitter") == 0)
|
||||||
|
{
|
||||||
|
info_type = EMITTER_INFO;
|
||||||
|
}
|
||||||
else if (strcmp(tmp, "LevelPack") == 0)
|
else if (strcmp(tmp, "LevelPack") == 0)
|
||||||
{
|
{
|
||||||
info_type = LEVELPACK_INFO;
|
info_type = LEVELPACK_INFO;
|
||||||
|
@ -213,7 +244,16 @@ bool load_from_infofile(const char* file, Assets_t* assets)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("Added texture %s as %s\n", info_str, name);
|
printf("Added texture %s as %s\n", info_str, name);
|
||||||
//strcpy(tmp2, name);
|
}
|
||||||
|
break;
|
||||||
|
case SOUND_INFO:
|
||||||
|
{
|
||||||
|
if (add_sound(assets, name, info_str) == NULL)
|
||||||
|
{
|
||||||
|
printf("Unable to add texture at line %lu\n", line_num);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
printf("Added sound %s as %s\n", info_str, name);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LEVELPACK_INFO:
|
case LEVELPACK_INFO:
|
||||||
|
@ -250,6 +290,19 @@ bool load_from_infofile(const char* file, Assets_t* assets)
|
||||||
spr->speed = spr_info.speed;
|
spr->speed = spr_info.speed;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EMITTER_INFO:
|
||||||
|
{
|
||||||
|
EmitterConfig_t parsed_conf;
|
||||||
|
if (!parse_emitter_info(info_str, &parsed_conf))
|
||||||
|
{
|
||||||
|
printf("Parse error for emitter %s", name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
EmitterConfig_t* conf = add_emitter_conf(assets, name);
|
||||||
|
*conf = parsed_conf;
|
||||||
|
printf("Added Emitter %s\n", name);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue