Moved initialisation of values of components outside their init function.
This commit is contained in:
parent
62a77dae6a
commit
c7afabd4c4
|
|
@ -1,5 +1,4 @@
|
|||
ASSETS := \
|
||||
misc/dummy_sheet.png \
|
||||
player_sheets/player_idle_sheet.png \
|
||||
player_sheets/player_walk_sheet.png \
|
||||
player_sheets/player_run_sheet.png \
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 140 B |
|
|
@ -16,18 +16,10 @@ int animation_system_init(component_t *component)
|
|||
}
|
||||
system_data->sprite_component_data = sprite_component->data;
|
||||
|
||||
system_data->nb_frames = 1;
|
||||
system_data->current_frame_nb = 0;
|
||||
linked_list_init(&system_data->frames, sizeof(rect_t), NULL, NULL);
|
||||
animation_system_create_frames_clips(system_data);
|
||||
|
||||
system_data->frame_delay_ms = 0.0f;
|
||||
system_data->frame_timer_ms = 0.0f;
|
||||
|
||||
system_data->play = false;
|
||||
system_data->loop = false;
|
||||
system_data->reverse = false;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,10 +47,6 @@ inline int door_component_init(component_t *component)
|
|||
}
|
||||
component_data->hitbox_component_data = hitbox_component->data;
|
||||
|
||||
component_data->topic_id = 0;
|
||||
event_bus_subscribe(&game.event_bus, component_data->topic_id, door_component_callback, component->entity);
|
||||
|
||||
component_data->state = false;
|
||||
component_data->last_state = false;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
|
|
@ -83,3 +79,10 @@ inline int door_component_destroy(component_t *component)
|
|||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
inline int door_component_subscribe(door_component_data_t *component_data, entity_t *entity)
|
||||
{
|
||||
if(event_bus_subscribe(&game.event_bus, component_data->topic_id, door_component_callback, entity)) return_failure_int;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@ int animation_system_update(component_t *component);
|
|||
|
||||
int animation_system_destroy(component_t *component);
|
||||
|
||||
int animation_system_create_frames_clips(animation_system_data_t *system_data);
|
||||
|
||||
int animation_system_apply_changes(animation_system_data_t *system_data);
|
||||
|
||||
#endif // SPRITE_COMPONENT_H
|
||||
|
|
@ -24,4 +24,6 @@ int door_component_update(component_t *component);
|
|||
|
||||
int door_component_destroy(component_t *component);
|
||||
|
||||
int door_component_subscribe(door_component_data_t *component_data, entity_t *entity);
|
||||
|
||||
#endif // DOOR_COMPONENT_H
|
||||
|
|
@ -36,6 +36,6 @@ int interact_component_destroy(component_t *component);
|
|||
|
||||
int interact_component_interact(interact_component_data_t *component_data);
|
||||
|
||||
int interact_component_modify_topic(interact_component_data_t *component_data, size_t id);
|
||||
int interact_component_modify_topic_id(interact_component_data_t *component_data, size_t id);
|
||||
|
||||
#endif // TRANSFORM_COMPONENT_H
|
||||
|
|
@ -22,4 +22,6 @@ int lever_component_update(component_t *component);
|
|||
|
||||
int lever_component_destroy(component_t *component);
|
||||
|
||||
int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity);
|
||||
|
||||
#endif // LEVER_COMPONENT_H
|
||||
|
|
@ -37,8 +37,8 @@ inline int hitbox_component_update(component_t *component)
|
|||
hitbox_component_data_t *component_data = component->data;
|
||||
const transform_component_data_t *transform_component_data = component_data->transform_component_data;
|
||||
|
||||
component_data->bounds.x = transform_component_data->bounds.x + (transform_component_data->bounds.w - component_data->bounds.w) * component_data->position.x;
|
||||
component_data->bounds.y = transform_component_data->bounds.y + (transform_component_data->bounds.h - component_data->bounds.h) * component_data->position.y;
|
||||
component_data->bounds.x = transform_component_data->bounds.x + transform_component_data->bounds.w * component_data->position.x;
|
||||
component_data->bounds.y = transform_component_data->bounds.y + transform_component_data->bounds.h * component_data->position.y;
|
||||
component_data->bounds.w = transform_component_data->bounds.w * component_data->scale.x;
|
||||
component_data->bounds.h = transform_component_data->bounds.h * component_data->scale.y;
|
||||
|
||||
|
|
|
|||
|
|
@ -27,11 +27,8 @@ inline int interact_component_init(component_t *component)
|
|||
};
|
||||
|
||||
component_data->topic_id = 0;
|
||||
component_data->type = INTERACT_TOGGLE;
|
||||
|
||||
if(event_bus_new_topic(&game.event_bus, component_data->topic_id)) return_failure_int;
|
||||
component_data->state = 0;
|
||||
|
||||
|
||||
component_data->activated = true;
|
||||
|
||||
|
|
@ -43,8 +40,8 @@ inline int interact_component_update(component_t *component)
|
|||
interact_component_data_t *component_data = component->data;
|
||||
const transform_component_data_t *transform_component_data = component_data->transform_component_data;
|
||||
|
||||
component_data->bounds.x = transform_component_data->bounds.x + (transform_component_data->bounds.w - component_data->bounds.w) * component_data->position.x;
|
||||
component_data->bounds.y = transform_component_data->bounds.y + (transform_component_data->bounds.h - component_data->bounds.h) * component_data->position.y;
|
||||
component_data->bounds.x = transform_component_data->bounds.x + transform_component_data->bounds.w * component_data->position.x;
|
||||
component_data->bounds.y = transform_component_data->bounds.y + transform_component_data->bounds.h * component_data->position.y;
|
||||
component_data->bounds.w = transform_component_data->bounds.w * component_data->scale.x;
|
||||
component_data->bounds.h = transform_component_data->bounds.h * component_data->scale.y;
|
||||
|
||||
|
|
@ -91,7 +88,7 @@ inline int interact_component_interact(interact_component_data_t *component_data
|
|||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
inline int interact_component_modify_topic(interact_component_data_t *component_data, size_t id)
|
||||
inline int interact_component_modify_topic_id(interact_component_data_t *component_data, size_t id)
|
||||
{
|
||||
if(event_bus_change_topic_id(&game.event_bus, component_data->topic_id, id)) return_failure_int;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,10 +39,6 @@ inline int lever_component_init(component_t *component)
|
|||
}
|
||||
component_data->animation_system_data = animation_system->data;
|
||||
|
||||
component_data->topic_id = 0;
|
||||
event_bus_subscribe(&game.event_bus, component_data->topic_id, lever_component_callback, component->entity);
|
||||
|
||||
component_data->state = false;
|
||||
component_data->last_state = false;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
|
|
@ -72,3 +68,10 @@ inline int lever_component_destroy(component_t *component)
|
|||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
inline int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity)
|
||||
{
|
||||
if(event_bus_subscribe(&game.event_bus, component_data->topic_id, lever_component_callback, entity)) return_failure_int;
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,8 +18,6 @@ inline int sprite_component_init(component_t *component)
|
|||
|
||||
transform_component_data_t *transform_component_data = component_data->transform_component_data;
|
||||
|
||||
if(sprite_component_set_texture(component_data, "dummy_sheet")) return EXIT_FAILURE;
|
||||
|
||||
frect_to_rect(&transform_component_data->bounds, &component_data->src_rect);
|
||||
component_data->src_rect.x = 0;
|
||||
component_data->src_rect.y = 0;
|
||||
|
|
|
|||
387
src/game.c
387
src/game.c
|
|
@ -27,179 +27,318 @@ int game_init(void)
|
|||
if(asset_manager_load_asset(&game.asset_manager, "tileset", ASSET_TEXTURE)) return_failure_int;
|
||||
|
||||
/* ======== Player ======== */
|
||||
entity_t *player_entity = entity_manager_new_entity(&game.entity_manager, 0);
|
||||
if(!player_entity) return EXIT_FAILURE;
|
||||
{
|
||||
entity_t *player_entity = entity_manager_new_entity(&game.entity_manager, 0);
|
||||
if(!player_entity) return_failure_int;
|
||||
|
||||
component_t *component = entity_new_component(player_entity, TRANSFORM_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *transform_component = entity_new_component(player_entity, TRANSFORM_COMPONENT);
|
||||
if(!transform_component) return_failure_int;
|
||||
|
||||
((transform_component_data_t *)component->data)->bounds = (frect_t) {
|
||||
.x = 10.0f,
|
||||
.y = 10.0f,
|
||||
.w = 32.0f,
|
||||
.h = 32.0f
|
||||
};
|
||||
transform_component_data_t *transform_component_data = transform_component->data;
|
||||
|
||||
if(!entity_new_component(player_entity, SPRITE_COMPONENT)) return EXIT_FAILURE;
|
||||
transform_component_data->bounds = (frect_t) {
|
||||
.x = 10.0f,
|
||||
.y = 10.0f,
|
||||
.w = 32.0f,
|
||||
.h = 32.0f
|
||||
};
|
||||
}
|
||||
|
||||
component = entity_new_component(player_entity, ANIMATION_SYSTEM);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *sprite_component = entity_new_component(player_entity, SPRITE_COMPONENT);
|
||||
if(!sprite_component) return_failure_int;
|
||||
|
||||
((animation_system_data_t *)component->data)->loop = true;
|
||||
((animation_system_data_t *)component->data)->play = true;
|
||||
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
||||
|
||||
component = entity_new_component(player_entity, HITBOX_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
sprite_component_set_texture(sprite_component_data, "player_idle_sheet");
|
||||
}
|
||||
|
||||
((hitbox_component_data_t *)component->data)->position = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 1.0f
|
||||
};
|
||||
{
|
||||
component_t *animation_system = entity_new_component(player_entity, ANIMATION_SYSTEM);
|
||||
if(!animation_system) return_failure_int;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 1.0f / 3.0f
|
||||
};
|
||||
animation_system_data_t *animation_system_data = animation_system->data;
|
||||
|
||||
if(!entity_new_component(player_entity, PHYSICS_SYSTEM)) return EXIT_FAILURE;
|
||||
if(linked_list_reserve(&animation_system_data->frames, 8)) return_failure_int;
|
||||
|
||||
if(!entity_new_component(player_entity, PLAYER_SYSTEM)) return EXIT_FAILURE;
|
||||
animation_system_data->current_frame_nb = 0;
|
||||
animation_system_data->nb_frames = 4;
|
||||
if(animation_system_apply_changes(animation_system_data)) return_failure_int;
|
||||
|
||||
animation_system_data->play = true;
|
||||
animation_system_data->loop = true;
|
||||
animation_system_data->reverse = false;
|
||||
}
|
||||
|
||||
{
|
||||
component_t *hitbox_component = entity_new_component(player_entity, HITBOX_COMPONENT);
|
||||
if(!hitbox_component) return_failure_int;
|
||||
|
||||
hitbox_component_data_t * hitbox_component_data = hitbox_component->data;
|
||||
|
||||
hitbox_component_data->position = (fvector2d_t) {
|
||||
.x = 0.25f,
|
||||
.y = 0.6875f
|
||||
};
|
||||
|
||||
hitbox_component_data->scale = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 0.3125f
|
||||
};
|
||||
}
|
||||
|
||||
if(!entity_new_component(player_entity, PHYSICS_SYSTEM)) return_failure_int;
|
||||
|
||||
if(!entity_new_component(player_entity, PLAYER_SYSTEM)) return_failure_int;
|
||||
}
|
||||
/* ======== Lever ========*/
|
||||
entity_t *lever_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||
if(!lever_entity) return EXIT_FAILURE;
|
||||
{
|
||||
entity_t *lever_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||
if(!lever_entity) return_failure_int;
|
||||
|
||||
component = entity_new_component(lever_entity, TRANSFORM_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *transform_component = entity_new_component(lever_entity, TRANSFORM_COMPONENT);
|
||||
if(!transform_component) return_failure_int;
|
||||
|
||||
((transform_component_data_t *)component->data)->bounds = (frect_t) {
|
||||
.x = 30.0f,
|
||||
.y = 120.0f,
|
||||
.w = 48.0f,
|
||||
.h = 32.0f
|
||||
};
|
||||
transform_component_data_t *transform_component_data = transform_component->data;
|
||||
|
||||
component = entity_new_component(lever_entity, SPRITE_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
transform_component_data->bounds = (frect_t) {
|
||||
.x = 30.0f,
|
||||
.y = 120.0f,
|
||||
.w = 48.0f,
|
||||
.h = 32.0f
|
||||
};
|
||||
}
|
||||
|
||||
if(sprite_component_set_texture(component->data, "lever_sheet")) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *sprite_component = entity_new_component(lever_entity, SPRITE_COMPONENT);
|
||||
if(!sprite_component) return_failure_int;
|
||||
|
||||
component = entity_new_component(lever_entity, ANIMATION_SYSTEM);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
||||
|
||||
((animation_system_data_t *)component->data)->nb_frames = 3;
|
||||
((animation_system_data_t *)component->data)->frame_delay_ms = LEVER_DEFAULT_ANIMATION_SPEED;
|
||||
if(animation_system_create_frames_clips(component->data)) return EXIT_FAILURE;
|
||||
if(sprite_component_set_texture(sprite_component_data, "lever_sheet")) return_failure_int;
|
||||
}
|
||||
|
||||
component = entity_new_component(lever_entity, HITBOX_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *animation_system = entity_new_component(lever_entity, ANIMATION_SYSTEM);
|
||||
if(!animation_system) return_failure_int;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->position = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 0.9f
|
||||
};
|
||||
animation_system_data_t *animation_system_data = animation_system->data;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) {
|
||||
.x = 1.0f / 3.0f,
|
||||
.y = 0.3f
|
||||
};
|
||||
animation_system_data->nb_frames = 3;
|
||||
animation_system_data->current_frame_nb = 0;
|
||||
animation_system_data->frame_delay_ms = LEVER_DEFAULT_ANIMATION_SPEED;
|
||||
|
||||
component = entity_new_component(lever_entity, INTERACT_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
animation_system_data->play = false;
|
||||
animation_system_data->loop = false;
|
||||
animation_system_data->reverse = false;
|
||||
|
||||
((interact_component_data_t *)component->data)->position = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 1.9f
|
||||
};
|
||||
if(animation_system_apply_changes(animation_system_data)) return_failure_int;
|
||||
}
|
||||
|
||||
((interact_component_data_t *)component->data)->scale = (fvector2d_t) {
|
||||
.x = 2.0f / 3.0f,
|
||||
.y = 0.8f
|
||||
};
|
||||
{
|
||||
component_t *hitbox_component = entity_new_component(lever_entity, HITBOX_COMPONENT);
|
||||
if(!hitbox_component) return_failure_int;
|
||||
|
||||
if(!entity_new_component(lever_entity, LEVER_COMPONENT)) return EXIT_FAILURE;
|
||||
hitbox_component_data_t *hitbox_component_data = hitbox_component->data;
|
||||
|
||||
hitbox_component_data->position = (fvector2d_t) {
|
||||
.x = 0.3333333333333333f,
|
||||
.y = 0.59375
|
||||
};
|
||||
|
||||
hitbox_component_data->scale = (fvector2d_t) {
|
||||
.x = 0.3333333333333333f,
|
||||
.y = 0.34375f
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
component_t *interact_component = entity_new_component(lever_entity, INTERACT_COMPONENT);
|
||||
if(!interact_component) return_failure_int;
|
||||
|
||||
interact_component_data_t *interact_component_data = interact_component->data;
|
||||
|
||||
interact_component_data->position = (fvector2d_t) {
|
||||
.x = 0.16666666666666666f,
|
||||
.y = 0.34375f
|
||||
};
|
||||
|
||||
interact_component_data->scale = (fvector2d_t) {
|
||||
.x = 0.6666666666666666f,
|
||||
.y = 0.84375f
|
||||
};
|
||||
|
||||
interact_component_data->type = INTERACT_TOGGLE;
|
||||
interact_component_data->state = 0;
|
||||
|
||||
interact_component_modify_topic_id(interact_component_data, 0);
|
||||
|
||||
}
|
||||
|
||||
{
|
||||
component_t *lever_component = entity_new_component(lever_entity, LEVER_COMPONENT);
|
||||
if(!lever_component) return_failure_int;
|
||||
|
||||
lever_component_data_t * lever_component_data = lever_component->data;
|
||||
|
||||
lever_component_data->topic_id = 0;
|
||||
lever_component_data->state = false;
|
||||
|
||||
lever_component_subscribe(lever_component_data, lever_entity);
|
||||
}
|
||||
}
|
||||
|
||||
/* ======== Door ======== */
|
||||
entity_t *door_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||
if(!lever_entity) return EXIT_FAILURE;
|
||||
{
|
||||
entity_t *door_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||
if(!door_entity) return_failure_int;
|
||||
|
||||
component = entity_new_component(door_entity, TRANSFORM_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *transform_component = entity_new_component(door_entity, TRANSFORM_COMPONENT);
|
||||
if(!transform_component) return_failure_int;
|
||||
|
||||
((transform_component_data_t *)component->data)->bounds = (frect_t) {
|
||||
.x = 120.0f,
|
||||
.y = 30.0f,
|
||||
.w = 32.0f,
|
||||
.h = 48.0f
|
||||
};
|
||||
transform_component_data_t *transform_component_data = transform_component->data;
|
||||
|
||||
component = entity_new_component(door_entity, SPRITE_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
transform_component_data->bounds = (frect_t) {
|
||||
.x = 120.0f,
|
||||
.y = 30.0f,
|
||||
.w = 32.0f,
|
||||
.h = 48.0f
|
||||
};
|
||||
}
|
||||
|
||||
if(sprite_component_set_texture(component->data, "barred_door_sheet")) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *sprite_component = entity_new_component(door_entity, SPRITE_COMPONENT);
|
||||
if(!sprite_component) return_failure_int;
|
||||
|
||||
component = entity_new_component(door_entity, ANIMATION_SYSTEM);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
sprite_component_data_t * sprite_component_data = sprite_component->data;
|
||||
|
||||
((animation_system_data_t *)component->data)->nb_frames = 8;
|
||||
((animation_system_data_t *)component->data)->frame_delay_ms = BARRED_DOOR_DEFAULT_ANIMATION_SPEED;
|
||||
if(animation_system_create_frames_clips(component->data)) return EXIT_FAILURE;
|
||||
if(sprite_component_set_texture(sprite_component_data, "barred_door_sheet")) return_failure_int;
|
||||
}
|
||||
|
||||
component = entity_new_component(door_entity, HITBOX_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *animation_system = entity_new_component(door_entity, ANIMATION_SYSTEM);
|
||||
if(!animation_system) return_failure_int;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->position = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 1.0f
|
||||
};
|
||||
animation_system_data_t *animation_system_data = animation_system->data;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) {
|
||||
.x = 1.0f,
|
||||
.y = 1.0f / 7.0f
|
||||
};
|
||||
animation_system_data->nb_frames = 8;
|
||||
animation_system_data->current_frame_nb = 0;
|
||||
animation_system_data->frame_delay_ms = BARRED_DOOR_DEFAULT_ANIMATION_SPEED;
|
||||
|
||||
if(!entity_new_component(door_entity, DOOR_COMPONENT)) return EXIT_FAILURE;
|
||||
animation_system_data->play = false;
|
||||
animation_system_data->loop = false;
|
||||
animation_system_data->reverse = false;
|
||||
|
||||
if(animation_system_apply_changes(animation_system->data)) return_failure_int;
|
||||
}
|
||||
|
||||
{
|
||||
component_t *hitbox_component = entity_new_component(door_entity, HITBOX_COMPONENT);
|
||||
if(!hitbox_component) return_failure_int;
|
||||
|
||||
hitbox_component_data_t * hitbox_component_data = hitbox_component->data;
|
||||
|
||||
hitbox_component_data->position = (fvector2d_t) {
|
||||
.x = 0.0f,
|
||||
.y = 0.8333333333333334f
|
||||
};
|
||||
|
||||
hitbox_component_data->scale = (fvector2d_t) {
|
||||
.x = 1.0f,
|
||||
.y = 0.16666666666666666f
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
component_t *door_component = entity_new_component(door_entity, DOOR_COMPONENT);
|
||||
if(!door_component) return_failure_int;
|
||||
|
||||
door_component_data_t * door_component_data = door_component->data;
|
||||
|
||||
door_component_data->topic_id = 0;
|
||||
door_component_data->state = false;
|
||||
|
||||
door_component_subscribe(door_component_data, door_entity);
|
||||
}
|
||||
}
|
||||
|
||||
/* ======== Door 2 ======== */
|
||||
entity_t *door2_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||
if(!lever_entity) return EXIT_FAILURE;
|
||||
{
|
||||
entity_t *door2_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||
if(!door2_entity) return_failure_int;
|
||||
|
||||
component = entity_new_component(door2_entity, TRANSFORM_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *transform_component = entity_new_component(door2_entity, TRANSFORM_COMPONENT);
|
||||
if(!transform_component) return_failure_int;
|
||||
|
||||
((transform_component_data_t *)component->data)->bounds = (frect_t) {
|
||||
.x = 240.0f,
|
||||
.y = 30.0f,
|
||||
.w = 32.0f,
|
||||
.h = 48.0f
|
||||
};
|
||||
transform_component_data_t *transform_component_data = transform_component->data;
|
||||
|
||||
component = entity_new_component(door2_entity, SPRITE_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
transform_component_data->bounds = (frect_t) {
|
||||
.x = 240.0f,
|
||||
.y = 30.0f,
|
||||
.w = 32.0f,
|
||||
.h = 48.0f
|
||||
};
|
||||
}
|
||||
|
||||
if(sprite_component_set_texture(component->data, "wooden_door_sheet")) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *sprite_component = entity_new_component(door2_entity, SPRITE_COMPONENT);
|
||||
if(!sprite_component) return_failure_int;
|
||||
|
||||
component = entity_new_component(door2_entity, ANIMATION_SYSTEM);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
||||
|
||||
((animation_system_data_t *)component->data)->nb_frames = 6;
|
||||
((animation_system_data_t *)component->data)->frame_delay_ms = WOODEN_DOOR_DEFAULT_ANIMATION_SPEED;
|
||||
if(animation_system_create_frames_clips(component->data)) return EXIT_FAILURE;
|
||||
if(sprite_component_set_texture(sprite_component_data, "wooden_door_sheet")) return_failure_int;
|
||||
}
|
||||
|
||||
component = entity_new_component(door2_entity, HITBOX_COMPONENT);
|
||||
if(!component) return EXIT_FAILURE;
|
||||
{
|
||||
component_t *animation_system = entity_new_component(door2_entity, ANIMATION_SYSTEM);
|
||||
if(!animation_system) return_failure_int;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->position = (fvector2d_t) {
|
||||
.x = 0.5f,
|
||||
.y = 1.0f
|
||||
};
|
||||
animation_system_data_t *animation_system_data = animation_system->data;
|
||||
|
||||
((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) {
|
||||
.x = 1.0f,
|
||||
.y = 1.0f / 7.0f
|
||||
};
|
||||
animation_system_data->nb_frames = 6;
|
||||
animation_system_data->current_frame_nb = 0;
|
||||
animation_system_data->frame_delay_ms = WOODEN_DOOR_DEFAULT_ANIMATION_SPEED;
|
||||
|
||||
if(!entity_new_component(door2_entity, DOOR_COMPONENT)) return EXIT_FAILURE;
|
||||
animation_system_data->play = false;
|
||||
animation_system_data->loop = false;
|
||||
animation_system_data->reverse = false;
|
||||
|
||||
if(animation_system_apply_changes(animation_system->data)) return_failure_int;
|
||||
}
|
||||
|
||||
{
|
||||
component_t *hitbox_component = entity_new_component(door2_entity, HITBOX_COMPONENT);
|
||||
if(!hitbox_component) return_failure_int;
|
||||
|
||||
hitbox_component_data_t *hitbox_component_data = hitbox_component->data;
|
||||
|
||||
hitbox_component_data->position = (fvector2d_t) {
|
||||
.x = 0.0f,
|
||||
.y = 0.8333333333333334f
|
||||
};
|
||||
|
||||
hitbox_component_data->scale = (fvector2d_t) {
|
||||
.x = 1.0f,
|
||||
.y = 0.16666666666666666f
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
component_t *door_component = entity_new_component(door2_entity, DOOR_COMPONENT);
|
||||
if(!door_component) return_failure_int;
|
||||
|
||||
door_component_data_t * door_component_data = door_component->data;
|
||||
|
||||
door_component_data->topic_id = 0;
|
||||
door_component_data->state = false;
|
||||
|
||||
door_component_subscribe(door_component_data, door2_entity);
|
||||
}
|
||||
}
|
||||
|
||||
game.is_running = true;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue