Compare commits
No commits in common. "d5ccaee45733977115285f372480c7a5f83fca67" and "c6cb48d53977f4057019f88fd37f16922444cbf4" have entirely different histories.
d5ccaee457
...
c6cb48d539
|
|
@ -1 +1 @@
|
||||||
Subproject commit 95167c91e8713cf05e9bade6c978903e9f0bdb39
|
Subproject commit 4a93ca2a9d77eeb65ac51bba13560258d83fe772
|
||||||
|
|
@ -8,6 +8,25 @@
|
||||||
#include "memory_alloc.h"
|
#include "memory_alloc.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
|
|
||||||
|
// Event arg = size_t state, Subscription arg = entity_t *entity
|
||||||
|
static inline int door_component_callback(va_list event_args, void *subscription_data)
|
||||||
|
{
|
||||||
|
const entity_t *entity = subscription_data;
|
||||||
|
|
||||||
|
component_t *door_component = entity_get_component(entity, DOOR_COMPONENT);
|
||||||
|
if(!door_component)
|
||||||
|
{
|
||||||
|
error_printf("Failed to get door component.");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
door_component_data_t *component_data = door_component->data;
|
||||||
|
|
||||||
|
component_data->state = (bool)va_arg(event_args, size_t);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
inline int door_component_init(component_t *component)
|
inline int door_component_init(component_t *component)
|
||||||
{
|
{
|
||||||
door_component_data_t *component_data = component->data;
|
door_component_data_t *component_data = component->data;
|
||||||
|
|
@ -61,28 +80,9 @@ inline int door_component_destroy(component_t *component)
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Event arg : size_t state, Subscription arg : entity_t *entity
|
|
||||||
static inline int door_component_callback(va_list event_args, void *subscription_data)
|
|
||||||
{
|
|
||||||
const entity_t *entity = subscription_data;
|
|
||||||
|
|
||||||
component_t *door_component = entity_get_component(entity, DOOR_COMPONENT);
|
|
||||||
if(!door_component)
|
|
||||||
{
|
|
||||||
error_printf("Failed to get door component.");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
door_component_data_t *component_data = door_component->data;
|
|
||||||
|
|
||||||
component_data->state = (bool)va_arg(event_args, size_t);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline int door_component_subscribe(door_component_data_t *component_data, entity_t *entity)
|
inline int door_component_subscribe(door_component_data_t *component_data, entity_t *entity)
|
||||||
{
|
{
|
||||||
if(event_bus_subscribe(component_data->topic_id, door_component_callback, entity)) return_failure_int;
|
if(event_bus_subscribe(&game.event_bus, component_data->topic_id, door_component_callback, entity)) return_failure_int;
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,9 @@ typedef struct animation_system_data_t {
|
||||||
} animation_system_data_t;
|
} animation_system_data_t;
|
||||||
|
|
||||||
int animation_system_init(component_t *component);
|
int animation_system_init(component_t *component);
|
||||||
|
|
||||||
int animation_system_update(component_t *component);
|
int animation_system_update(component_t *component);
|
||||||
|
|
||||||
int animation_system_destroy(component_t *component);
|
int animation_system_destroy(component_t *component);
|
||||||
|
|
||||||
int animation_system_apply_changes(animation_system_data_t *system_data);
|
int animation_system_apply_changes(animation_system_data_t *system_data);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,9 @@ typedef struct door_component_data_t {
|
||||||
} door_component_data_t;
|
} door_component_data_t;
|
||||||
|
|
||||||
int door_component_init(component_t *component);
|
int door_component_init(component_t *component);
|
||||||
|
|
||||||
int door_component_update(component_t *component);
|
int door_component_update(component_t *component);
|
||||||
|
|
||||||
int door_component_destroy(component_t *component);
|
int door_component_destroy(component_t *component);
|
||||||
|
|
||||||
int door_component_subscribe(door_component_data_t *component_data, entity_t *entity);
|
int door_component_subscribe(door_component_data_t *component_data, entity_t *entity);
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,13 @@ typedef struct hitbox_component_data_t {
|
||||||
} hitbox_component_data_t;
|
} hitbox_component_data_t;
|
||||||
|
|
||||||
int hitbox_component_init(component_t *component);
|
int hitbox_component_init(component_t *component);
|
||||||
|
|
||||||
int hitbox_component_update(component_t *component);
|
int hitbox_component_update(component_t *component);
|
||||||
|
|
||||||
#if DEBUG >= 2
|
#if DEBUG >= 2
|
||||||
int hitbox_component_draw(const component_t *component);
|
int hitbox_component_draw(const component_t *component);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int hitbox_component_destroy(component_t *component);
|
int hitbox_component_destroy(component_t *component);
|
||||||
|
|
||||||
#endif // HITBOX_COMPONENT_H
|
#endif // HITBOX_COMPONENT_H
|
||||||
|
|
@ -25,13 +25,17 @@ typedef struct interact_component_data_t {
|
||||||
} interact_component_data_t;
|
} interact_component_data_t;
|
||||||
|
|
||||||
int interact_component_init(component_t *component);
|
int interact_component_init(component_t *component);
|
||||||
|
|
||||||
int interact_component_update(component_t *component);
|
int interact_component_update(component_t *component);
|
||||||
|
|
||||||
#if DEBUG >= 2
|
#if DEBUG >= 2
|
||||||
int interact_component_draw(const component_t *component);
|
int interact_component_draw(const component_t *component);
|
||||||
#endif // DEBUG >= 2
|
#endif // DEBUG >= 2
|
||||||
|
|
||||||
int interact_component_destroy(component_t *component);
|
int interact_component_destroy(component_t *component);
|
||||||
|
|
||||||
int interact_component_interact(interact_component_data_t *component_data);
|
int interact_component_interact(interact_component_data_t *component_data);
|
||||||
|
|
||||||
int interact_component_modify_topic_id(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
|
#endif // TRANSFORM_COMPONENT_H
|
||||||
|
|
@ -17,7 +17,9 @@ typedef struct lever_component_data_t {
|
||||||
} lever_component_data_t;
|
} lever_component_data_t;
|
||||||
|
|
||||||
int lever_component_init(component_t *component);
|
int lever_component_init(component_t *component);
|
||||||
|
|
||||||
int lever_component_update(component_t *component);
|
int lever_component_update(component_t *component);
|
||||||
|
|
||||||
int lever_component_destroy(component_t *component);
|
int lever_component_destroy(component_t *component);
|
||||||
|
|
||||||
int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity);
|
int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity);
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ typedef struct physics_system_data_t {
|
||||||
} physics_system_data_t;
|
} physics_system_data_t;
|
||||||
|
|
||||||
int physics_system_init(component_t *component);
|
int physics_system_init(component_t *component);
|
||||||
|
|
||||||
int physics_system_update(component_t *component);
|
int physics_system_update(component_t *component);
|
||||||
|
|
||||||
int physics_system_destroy(component_t *component);
|
int physics_system_destroy(component_t *component);
|
||||||
|
|
||||||
#endif // PHYSICS_SYSTEM_H
|
#endif // PHYSICS_SYSTEM_H
|
||||||
|
|
@ -33,7 +33,9 @@ typedef struct player_system_data_t {
|
||||||
} player_system_data_t;
|
} player_system_data_t;
|
||||||
|
|
||||||
int player_system_init(component_t *component);
|
int player_system_init(component_t *component);
|
||||||
|
|
||||||
int player_system_update(component_t *component);
|
int player_system_update(component_t *component);
|
||||||
|
|
||||||
int player_system_destroy(component_t *component);
|
int player_system_destroy(component_t *component);
|
||||||
|
|
||||||
#endif // PLAYER_SYSTEM_H
|
#endif // PLAYER_SYSTEM_H
|
||||||
|
|
@ -16,8 +16,11 @@ typedef struct sprite_component_data_t {
|
||||||
} sprite_component_data_t;
|
} sprite_component_data_t;
|
||||||
|
|
||||||
int sprite_component_init(component_t *component);
|
int sprite_component_init(component_t *component);
|
||||||
|
|
||||||
int sprite_component_update(component_t *component);
|
int sprite_component_update(component_t *component);
|
||||||
|
|
||||||
int sprite_component_draw(const component_t *component);
|
int sprite_component_draw(const component_t *component);
|
||||||
|
|
||||||
int sprite_component_destroy(component_t *component);
|
int sprite_component_destroy(component_t *component);
|
||||||
|
|
||||||
#endif // SPRITE_COMPONENT_H
|
#endif // SPRITE_COMPONENT_H
|
||||||
|
|
@ -10,10 +10,13 @@ typedef struct transform_component_data_t {
|
||||||
} transform_component_data_t;
|
} transform_component_data_t;
|
||||||
|
|
||||||
int transform_component_init(component_t *component);
|
int transform_component_init(component_t *component);
|
||||||
|
|
||||||
int transform_component_update(component_t *component);
|
int transform_component_update(component_t *component);
|
||||||
|
|
||||||
#if DEBUG >= 2
|
#if DEBUG >= 2
|
||||||
int transform_component_draw(const component_t *component);
|
int transform_component_draw(const component_t *component);
|
||||||
#endif // DEBUG >= 2
|
#endif // DEBUG >= 2
|
||||||
|
|
||||||
int transform_component_destroy(component_t *component);
|
int transform_component_destroy(component_t *component);
|
||||||
|
|
||||||
#endif // TRANSFORM_COMPONENT_H
|
#endif // TRANSFORM_COMPONENT_H
|
||||||
|
|
@ -28,7 +28,7 @@ inline int interact_component_init(component_t *component)
|
||||||
|
|
||||||
component_data->topic_id = 0;
|
component_data->topic_id = 0;
|
||||||
|
|
||||||
if(event_bus_new_topic(component_data->topic_id)) return_failure_int;
|
if(event_bus_new_topic(&game.event_bus, component_data->topic_id)) return_failure_int;
|
||||||
|
|
||||||
component_data->activated = true;
|
component_data->activated = true;
|
||||||
|
|
||||||
|
|
@ -83,14 +83,14 @@ inline int interact_component_interact(interact_component_data_t *component_data
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event_bus_publish(component_data->topic_id, component_data->state)) return_failure_int;
|
if(event_bus_publish(&game.event_bus, component_data->topic_id, component_data->state)) return_failure_int;
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int interact_component_modify_topic_id(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(component_data->topic_id, id)) return_failure_int;
|
if(event_bus_change_topic_id(&game.event_bus, component_data->topic_id, id)) return_failure_int;
|
||||||
|
|
||||||
component_data->topic_id = id;
|
component_data->topic_id = id;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,25 @@
|
||||||
#include "memory_alloc.h"
|
#include "memory_alloc.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
|
|
||||||
|
// Args = entity_t *entity, size_t state
|
||||||
|
static inline int lever_component_callback(va_list args, void *subscription_data)
|
||||||
|
{
|
||||||
|
const entity_t *entity = subscription_data;
|
||||||
|
|
||||||
|
component_t *lever_component = entity_get_component(entity, LEVER_COMPONENT);
|
||||||
|
if(!lever_component)
|
||||||
|
{
|
||||||
|
error_printf("Failed to get lever component.");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
lever_component_data_t *component_data = lever_component->data;
|
||||||
|
|
||||||
|
component_data->state = (bool)va_arg(args, size_t);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
inline int lever_component_init(component_t *component)
|
inline int lever_component_init(component_t *component)
|
||||||
{
|
{
|
||||||
lever_component_data_t *component_data = component->data;
|
lever_component_data_t *component_data = component->data;
|
||||||
|
|
@ -50,28 +69,9 @@ inline int lever_component_destroy(component_t *component)
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Event arg : size_t state, Subscription arg : entity_t *entity
|
|
||||||
static inline int lever_component_callback(va_list args, void *subscription_data)
|
|
||||||
{
|
|
||||||
const entity_t *entity = subscription_data;
|
|
||||||
|
|
||||||
component_t *lever_component = entity_get_component(entity, LEVER_COMPONENT);
|
|
||||||
if(!lever_component)
|
|
||||||
{
|
|
||||||
error_printf("Failed to get lever component.");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
lever_component_data_t *component_data = lever_component->data;
|
|
||||||
|
|
||||||
component_data->state = (bool)va_arg(args, size_t);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity)
|
inline int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity)
|
||||||
{
|
{
|
||||||
if(event_bus_subscribe(component_data->topic_id, lever_component_callback, entity)) return_failure_int;
|
if(event_bus_subscribe(&game.event_bus, component_data->topic_id, lever_component_callback, entity)) return_failure_int;
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,35 +44,6 @@ inline int physics_system_init(component_t *component)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Args : physics_system_data_t *system_data, size_t entity_id
|
// Args : physics_system_data_t *system_data, size_t entity_id
|
||||||
static int action_detect_solve_entities_collision(elem_t *elem, va_list args);
|
|
||||||
|
|
||||||
int physics_system_update(component_t *component)
|
|
||||||
{
|
|
||||||
physics_system_data_t *system_data = component->data;
|
|
||||||
transform_component_data_t *transform_component_data = system_data->transform_component_data;
|
|
||||||
hitbox_component_data_t *hitbox_component_data = system_data->hitbox_component_data;
|
|
||||||
|
|
||||||
system_data->velocity.x = lerp(system_data->velocity.x, system_data->target_velocity.x, system_data->smoothing_factor);
|
|
||||||
system_data->velocity.y = lerp(system_data->velocity.y, system_data->target_velocity.y, system_data->smoothing_factor);
|
|
||||||
|
|
||||||
if(hitbox_component_data->activated)
|
|
||||||
if(linked_list_for_each(&game.entity_manager.entities, action_detect_solve_entities_collision, system_data, component->entity->id)) return EXIT_FAILURE;
|
|
||||||
|
|
||||||
transform_component_data->bounds.x += system_data->velocity.x * system_data->speed * (float)game.delta_time_ms / 1000.0f;
|
|
||||||
transform_component_data->bounds.y += system_data->velocity.y * system_data->speed * (float)game.delta_time_ms / 1000.0f;
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline int physics_system_destroy(component_t *component)
|
|
||||||
{
|
|
||||||
physics_system_data_t *system_data = component->data;
|
|
||||||
|
|
||||||
free(system_data);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int action_detect_solve_entities_collision(elem_t *elem, va_list args)
|
static inline int action_detect_solve_entities_collision(elem_t *elem, va_list args)
|
||||||
{
|
{
|
||||||
const entity_t *target_entity = elem->data;
|
const entity_t *target_entity = elem->data;
|
||||||
|
|
@ -133,3 +104,30 @@ static inline int action_detect_solve_entities_collision(elem_t *elem, va_list a
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int physics_system_update(component_t *component)
|
||||||
|
{
|
||||||
|
physics_system_data_t *system_data = component->data;
|
||||||
|
transform_component_data_t *transform_component_data = system_data->transform_component_data;
|
||||||
|
hitbox_component_data_t *hitbox_component_data = system_data->hitbox_component_data;
|
||||||
|
|
||||||
|
system_data->velocity.x = lerp(system_data->velocity.x, system_data->target_velocity.x, system_data->smoothing_factor);
|
||||||
|
system_data->velocity.y = lerp(system_data->velocity.y, system_data->target_velocity.y, system_data->smoothing_factor);
|
||||||
|
|
||||||
|
if(hitbox_component_data->activated)
|
||||||
|
if(linked_list_for_each(&game.entity_manager.entities, action_detect_solve_entities_collision, system_data, component->entity->id)) return EXIT_FAILURE;
|
||||||
|
|
||||||
|
transform_component_data->bounds.x += system_data->velocity.x * system_data->speed * (float)game.delta_time_ms / 1000.0f;
|
||||||
|
transform_component_data->bounds.y += system_data->velocity.y * system_data->speed * (float)game.delta_time_ms / 1000.0f;
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int physics_system_destroy(component_t *component)
|
||||||
|
{
|
||||||
|
physics_system_data_t *system_data = component->data;
|
||||||
|
|
||||||
|
free(system_data);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,15 +58,6 @@ inline int player_system_update(component_t *component)
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int player_system_destroy(component_t *component)
|
|
||||||
{
|
|
||||||
player_system_data_t *component_data = component->data;
|
|
||||||
|
|
||||||
free(component_data);
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void player_system_get_inputs(player_system_data_t *system_data)
|
static inline void player_system_get_inputs(player_system_data_t *system_data)
|
||||||
{
|
{
|
||||||
system_data->last_state = system_data->state;
|
system_data->last_state = system_data->state;
|
||||||
|
|
@ -132,7 +123,7 @@ static inline int player_system_set_animation_and_speed(player_system_data_t *sy
|
||||||
{
|
{
|
||||||
physics_system_data->speed = PLAYER_DEFAULT_RUN_SPEED;
|
physics_system_data->speed = PLAYER_DEFAULT_RUN_SPEED;
|
||||||
|
|
||||||
asset_t *asset = asset_manager_get_asset("player_run_sheet");
|
asset_t *asset = asset_manager_get_asset(&game.asset_manager, "player_run_sheet");
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
@ -146,7 +137,7 @@ static inline int player_system_set_animation_and_speed(player_system_data_t *sy
|
||||||
{
|
{
|
||||||
physics_system_data->speed = PLAYER_DEFAULT_WALK_SPEED;
|
physics_system_data->speed = PLAYER_DEFAULT_WALK_SPEED;
|
||||||
|
|
||||||
asset_t *asset = asset_manager_get_asset("player_walk_sheet");
|
asset_t *asset = asset_manager_get_asset(&game.asset_manager, "player_walk_sheet");
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
@ -159,7 +150,7 @@ static inline int player_system_set_animation_and_speed(player_system_data_t *sy
|
||||||
}
|
}
|
||||||
else if(!(system_data->state & PLAYER_MOVING) && (system_data->last_state & PLAYER_MOVING))
|
else if(!(system_data->state & PLAYER_MOVING) && (system_data->last_state & PLAYER_MOVING))
|
||||||
{
|
{
|
||||||
asset_t *asset = asset_manager_get_asset("player_idle_sheet");
|
asset_t *asset = asset_manager_get_asset(&game.asset_manager, "player_idle_sheet");
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
@ -213,3 +204,12 @@ static inline int player_system_process_interaction(player_system_data_t *system
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int player_system_destroy(component_t *component)
|
||||||
|
{
|
||||||
|
player_system_data_t *component_data = component->data;
|
||||||
|
|
||||||
|
free(component_data);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
|
||||||
41
src/game.c
41
src/game.c
|
|
@ -14,15 +14,15 @@ int game_init(void)
|
||||||
game.is_running = false;
|
game.is_running = false;
|
||||||
|
|
||||||
if(display_init()) return_failure_int;
|
if(display_init()) return_failure_int;
|
||||||
if(asset_manager_init()) return_failure_int;
|
if(asset_manager_init(&game.asset_manager)) return_failure_int;
|
||||||
event_bus_init();
|
event_bus_init(&game.event_bus);
|
||||||
entity_manager_init();
|
entity_manager_init(&game.entity_manager);
|
||||||
|
|
||||||
if(!asset_manager_load_asset("tileset", ASSET_TEXTURE)) return_failure_int;
|
if(!asset_manager_load_asset(&game.asset_manager, "tileset", ASSET_TEXTURE)) return_failure_int;
|
||||||
|
|
||||||
/* ======== Player ======== */
|
/* ======== Player ======== */
|
||||||
{
|
{
|
||||||
entity_t *player_entity = entity_manager_new_entity(0);
|
entity_t *player_entity = entity_manager_new_entity(&game.entity_manager, 0);
|
||||||
if(!player_entity) return_failure_int;
|
if(!player_entity) return_failure_int;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -45,13 +45,14 @@ int game_init(void)
|
||||||
|
|
||||||
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
||||||
|
|
||||||
asset_t *asset = asset_manager_load_asset("player_idle_sheet", ASSET_TEXTURE);
|
if(!asset_manager_load_asset(&game.asset_manager, "player_idle_sheet", ASSET_TEXTURE)) return_failure_int;
|
||||||
|
if(!asset_manager_load_asset(&game.asset_manager, "player_walk_sheet", ASSET_TEXTURE)) return_failure_int;
|
||||||
|
if(!asset_manager_load_asset(&game.asset_manager, "player_run_sheet", ASSET_TEXTURE)) return_failure_int;
|
||||||
|
|
||||||
|
asset_t *asset = asset_manager_get_asset(&game.asset_manager, "player_idle_sheet");
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
||||||
if(!asset_manager_load_asset("player_walk_sheet", ASSET_TEXTURE)) return_failure_int;
|
|
||||||
if(!asset_manager_load_asset("player_run_sheet", ASSET_TEXTURE)) return_failure_int;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -94,7 +95,7 @@ int game_init(void)
|
||||||
}
|
}
|
||||||
/* ======== Lever ========*/
|
/* ======== Lever ========*/
|
||||||
{
|
{
|
||||||
entity_t *lever_entity = entity_manager_new_entity(1);
|
entity_t *lever_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||||
if(!lever_entity) return_failure_int;
|
if(!lever_entity) return_failure_int;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -117,7 +118,7 @@ int game_init(void)
|
||||||
|
|
||||||
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
||||||
|
|
||||||
asset_t *asset = asset_manager_load_asset("lever_sheet", ASSET_TEXTURE);
|
asset_t *asset = asset_manager_load_asset(&game.asset_manager, "lever_sheet", ASSET_TEXTURE);
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
@ -195,7 +196,7 @@ int game_init(void)
|
||||||
|
|
||||||
/* ======== Door ======== */
|
/* ======== Door ======== */
|
||||||
{
|
{
|
||||||
entity_t *door_entity = entity_manager_new_entity(1);
|
entity_t *door_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||||
if(!door_entity) return_failure_int;
|
if(!door_entity) return_failure_int;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -218,7 +219,7 @@ int game_init(void)
|
||||||
|
|
||||||
sprite_component_data_t * sprite_component_data = sprite_component->data;
|
sprite_component_data_t * sprite_component_data = sprite_component->data;
|
||||||
|
|
||||||
asset_t *asset = asset_manager_load_asset("barred_door_sheet", ASSET_TEXTURE);
|
asset_t *asset = asset_manager_load_asset(&game.asset_manager, "barred_door_sheet", ASSET_TEXTURE);
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
@ -273,7 +274,7 @@ int game_init(void)
|
||||||
|
|
||||||
/* ======== Door 2 ======== */
|
/* ======== Door 2 ======== */
|
||||||
{
|
{
|
||||||
entity_t *door2_entity = entity_manager_new_entity(1);
|
entity_t *door2_entity = entity_manager_new_entity(&game.entity_manager, 1);
|
||||||
if(!door2_entity) return_failure_int;
|
if(!door2_entity) return_failure_int;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -296,7 +297,7 @@ int game_init(void)
|
||||||
|
|
||||||
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
sprite_component_data_t *sprite_component_data = sprite_component->data;
|
||||||
|
|
||||||
asset_t *asset = asset_manager_load_asset("wooden_door_sheet", ASSET_TEXTURE);
|
asset_t *asset = asset_manager_load_asset(&game.asset_manager, "wooden_door_sheet", ASSET_TEXTURE);
|
||||||
if(!asset) return_failure_int;
|
if(!asset) return_failure_int;
|
||||||
|
|
||||||
sprite_component_data->texture = asset->data;
|
sprite_component_data->texture = asset->data;
|
||||||
|
|
@ -372,7 +373,7 @@ void game_handle_event(void)
|
||||||
|
|
||||||
int game_update(void)
|
int game_update(void)
|
||||||
{
|
{
|
||||||
if(entity_manager_update())
|
if(entity_manager_update(&game.entity_manager))
|
||||||
{
|
{
|
||||||
game.is_running = false;
|
game.is_running = false;
|
||||||
return_failure_int;
|
return_failure_int;
|
||||||
|
|
@ -389,7 +390,7 @@ int game_render(void)
|
||||||
return_failure_int;
|
return_failure_int;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(entity_manager_draw())
|
if(entity_manager_draw(&game.entity_manager))
|
||||||
{
|
{
|
||||||
game.is_running = false;
|
game.is_running = false;
|
||||||
return_failure_int;
|
return_failure_int;
|
||||||
|
|
@ -402,9 +403,9 @@ int game_render(void)
|
||||||
|
|
||||||
int game_exit(void)
|
int game_exit(void)
|
||||||
{
|
{
|
||||||
entity_manager_exit();
|
entity_manager_exit(&game.entity_manager);
|
||||||
event_bus_exit();
|
event_bus_exit(&game.event_bus);
|
||||||
if(asset_manager_exit()) return_failure_int;
|
if(asset_manager_exit(&game.asset_manager)) return_failure_int;
|
||||||
display_exit();
|
display_exit();
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue