From 14f28e83392c46497f9a09f7aadb508bc0a61b30 Mon Sep 17 00:00:00 2001
From: AnonymusRaccoon
Date: Mon, 9 Mar 2020 14:49:34 +0100
Subject: [PATCH] Adding an error message for callbacks that do not exists
---
include/scene.h | 2 --
src/components/clickable_component.c | 12 ++++++++++--
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/include/scene.h b/include/scene.h
index ccacd14..1e25674 100644
--- a/include/scene.h
+++ b/include/scene.h
@@ -18,7 +18,6 @@ struct gc_scene
{
gc_list *data;
void *(*get_data)(gc_scene *scene, const char *type, const char *name);
- void (*add_callback)(gc_scene *scene, const char *name, void *func);
void (*destroy)(gc_scene *scene);
@@ -37,6 +36,5 @@ callback_t scene_get_callback(gc_scene *scene, char *name);
gc_scene *scene_create(gc_engine *engine, const char *mappath);
void scene_load_data(gc_engine *engine, gc_scene *scene, node *n);
void *scene_get_data(gc_scene *scene, const char *type, const char *name);
-void scene_add_callback(gc_scene *scene, const char *name, void *func);
void scene_destroy(gc_scene *scene);
void scene_load_entity(gc_scene *this, gc_engine *engine, node *n, int prefab);
\ No newline at end of file
diff --git a/src/components/clickable_component.c b/src/components/clickable_component.c
index ca572fe..beddcdb 100644
--- a/src/components/clickable_component.c
+++ b/src/components/clickable_component.c
@@ -16,20 +16,28 @@ static void ctr(void *component, va_list args)
struct clickable_component *cmp = (struct clickable_component *)component;
gc_scene *scene = va_arg(args, gc_scene *);
char *onclick = va_arg(args, char *);
+ callback_t callback;
if (!scene)
return;
- cmp->onclick = scene->get_callback(scene, onclick);
+ callback = scene->get_callback(scene, onclick);
+ if (!callback)
+ my_printf("No callback found with the name: %s\n", onclick);
+ cmp->onclick = callback;
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
struct clickable_component *cmp = (struct clickable_component *)component;
char *onclick = xml_gettempprop(n, "click");
+ callback_t callback;
if (!scene)
return;
- cmp->onclick = scene->get_callback(scene, onclick);
+ callback = scene->get_callback(scene, onclick);
+ if (!callback)
+ my_printf("No callback found with the name: %s\n", onclick);
+ cmp->onclick = callback;
}
static void dtr(void *component)