A 3d fps game made in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Symmetry/src/game/scene_funcs.c

47 lines
1.5 KiB

#include "scene_funcs.h"
#include "event.h"
#include "game.h"
#include "../common/log.h"
static void scene_on_end_trigger(const struct Event* event, void* sender);
void scene_func_stub(struct Scene* scene)
{
log_warning("Scene Func Stub Called");
}
void scene_1_init(struct Scene* scene)
{
struct Trigger* scene_end_trigger = scene_trigger_find(scene, "Scene_End_Trigger");
if(scene_end_trigger)
{
struct Event_Manager* event_manager = game_state_get()->event_manager;
event_manager_subscribe_with_sender(event_manager, EVT_TRIGGER, &scene_on_end_trigger, scene_end_trigger);
log_message("Scene End Event set");
}
else
{
log_message("Trigger not found");
}
}
void scene_1_cleanup(struct Scene* scene)
{
struct Trigger* scene_end_trigger = scene_trigger_find(scene, "Scene_End_Trigger");
if(scene_end_trigger)
{
struct Event_Manager* event_manager = game_state_get()->event_manager;
event_manager_unsubscribe_sender(event_manager, EVT_TRIGGER, &scene_on_end_trigger, scene_end_trigger);
}
}
void scene_on_end_trigger(const struct Event* event, void* sender)
{
log_message("Scene_End_Trigger triggered, Move to next scene now!");
struct Event_Manager* event_manager = game_state_get()->event_manager;
struct Event* scene_cleared_event = event_manager_create_new_event(event_manager);
scene_cleared_event->type = EVT_SCENE_CLEARED;
scene_cleared_event->scene_cleared.scene = game_state_get()->scene;
event_manager_send_event(event_manager, scene_cleared_event);
}