diff --git a/src/common/version.h b/src/common/version.h index 5c3f8a8..d3fdcdb 100755 --- a/src/common/version.h +++ b/src/common/version.h @@ -4,7 +4,7 @@ /* Auto generated version file. DO NOT MODIFY */ #define SYMMETRY_VERSION_MAJOR 0 #define SYMMETRY_VERSION_MINOR 1 -#define SYMMETRY_VERSION_REVISION 350 +#define SYMMETRY_VERSION_REVISION 351 #define SYMMETRY_VERSION_BRANCH "dev" #endif \ No newline at end of file diff --git a/src/game/event.c b/src/game/event.c index f90f7bc..2762e41 100644 --- a/src/game/event.c +++ b/src/game/event.c @@ -24,6 +24,7 @@ void event_manager_init(struct Event_Manager* event_manager) struct Event* event = &event_manager->event_pool[i]; memset(event, '\0', sizeof(struct Event)); event->type = EVT_NONE; + event->sender = NULL; } event_manager->sdl_event_id = SDL_RegisterEvents(1); @@ -246,7 +247,7 @@ void event_manager_poll_events(struct Event_Manager* event_manager) subscription->Subscription_Without_Objects.handler(user_event); break; case EST_SENDER: - if(subscription->Subscription_Sender.handler) + if(subscription->Subscription_Sender.handler && user_event->sender == subscription->Subscription_Sender.sender) subscription->Subscription_Sender.handler(user_event, subscription->Subscription_Sender.sender); break; case EST_SUBSCRIBER: @@ -254,7 +255,7 @@ void event_manager_poll_events(struct Event_Manager* event_manager) subscription->Subscription_Subscriber.handler(user_event, subscription->Subscription_Subscriber.subscriber); break; case EST_SUBSCRIBER_SENDER: - if(subscription->Subscription_Subscriber_Sender.handler) + if(subscription->Subscription_Subscriber_Sender.handler && user_event->sender == subscription->Subscription_Sender.sender) subscription->Subscription_Subscriber_Sender.handler(user_event, subscription->Subscription_Subscriber_Sender.subscriber, subscription->Subscription_Subscriber_Sender.sender); break; } @@ -264,6 +265,7 @@ void event_manager_poll_events(struct Event_Manager* event_manager) //return event to the pool now that it is consumed memset(user_event, '\0', sizeof(*user_event)); user_event->type = EVT_NONE; + user_event->sender = NULL; } } break; diff --git a/src/game/event.h b/src/game/event.h index af1cde3..5a5861a 100755 --- a/src/game/event.h +++ b/src/game/event.h @@ -103,7 +103,8 @@ struct Trigger_Event struct Event { - int type; + int type; + void* sender; union { struct Key_Event key; diff --git a/src/game/sound_source.c b/src/game/sound_source.c index 42e66c5..3132eae 100644 --- a/src/game/sound_source.c +++ b/src/game/sound_source.c @@ -65,9 +65,6 @@ void sound_source_buffer_set(struct Sound* sound, struct Sound_Source* entity, c if(new_buffer) { sound_source_instance_destroy(sound, entity->source_instance); - if(entity->source_buffer) - sound_source_buffer_destroy(sound, entity->source_buffer); - entity->source_buffer = new_buffer; entity->type = type; entity->source_instance = sound_source_instance_create(sound, entity->source_buffer, true); diff --git a/src/game/trigger.c b/src/game/trigger.c index b945958..5d4122f 100644 --- a/src/game/trigger.c +++ b/src/game/trigger.c @@ -95,6 +95,7 @@ void trigger_update_physics(struct Trigger* trigger, struct Scene* scene, float struct Event* trigger_event = event_manager_create_new_event(event_manager); trigger_event->type = EVT_TRIGGER; trigger_event->trigger.sender = trigger; + trigger_event->sender = trigger; event_manager_send_event(event_manager, trigger_event); if(trigger->type == TRIG_ONE_SHOT) scene_trigger_remove(scene, trigger); diff --git a/todo.txt b/todo.txt index 5e1e3ef..bf97782 100644 --- a/todo.txt +++ b/todo.txt @@ -2,7 +2,6 @@ Todo: - Win/fail States - Save scene init/cleanup funcs if there are any assigned when saving scene - Save case sensitive file names when scene entity entries - - Investigate whether toggle trigger is working properly - Player/enemies getting hit by bullets - Remove excessive repitition in scene and editor code that handles multiple entity types - Allow switching to editor mode when game is in pause mode