From 7b4781a4cdf338eab2661e1309094937f088bc57 Mon Sep 17 00:00:00 2001 From: AnonymusRaccoon Date: Mon, 9 Mar 2020 17:27:22 +0100 Subject: [PATCH] Reversing the click order --- include/keybindings.h | 15 +++++++++++++++ include/list.h | 1 + include/scene.h | 2 ++ src/scene/scene.c | 5 ++--- src/systems/clickable_system.c | 4 +++- src/utility/list.c | 4 ++++ 6 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 include/keybindings.h diff --git a/include/keybindings.h b/include/keybindings.h new file mode 100644 index 0000000..2374f93 --- /dev/null +++ b/include/keybindings.h @@ -0,0 +1,15 @@ +// +// Created by anonymus-raccoon on 3/9/20. +// + +#ifndef _KEYBINDINGS_H_ +#define _KEYBINDINGS_H_ + +#include + +typedef enum gc_keybindings +{ + ESCAPE = sfKeyEscape +} gc_keybindings; + +#endif //_KEYBINDINGS_H_ diff --git a/include/list.h b/include/list.h index a3a13de..e2d0bae 100644 --- a/include/list.h +++ b/include/list.h @@ -13,6 +13,7 @@ struct gc_list { void *data; gc_list *next; + gc_list *prev; }; gc_list *list_add(gc_list *list, void *obj); diff --git a/include/scene.h b/include/scene.h index 1e25674..928be44 100644 --- a/include/scene.h +++ b/include/scene.h @@ -30,6 +30,8 @@ struct gc_scene gc_list *callbacks; callback_t (*get_callback)(gc_scene *this, char *name); + + bool is_paused; }; callback_t scene_get_callback(gc_scene *scene, char *name); diff --git a/src/scene/scene.c b/src/scene/scene.c index 51ab239..89430b5 100644 --- a/src/scene/scene.c +++ b/src/scene/scene.c @@ -41,11 +41,10 @@ gc_scene *scene_create(gc_engine *engine, const char *xmlpath) gc_scene *scene = malloc(sizeof(gc_scene)); node *n = NULL; - if (!scene) - return (NULL); - if (xmlpath && !(n = xml_parse(xmlpath))) + if (!scene || (xmlpath && !(n = xml_parse(xmlpath)))) return (NULL); scene_load_data(engine, scene, n); + scene->is_paused = false; scene->entities = NULL; scene->entities_by_cmp = NULL; scene->add_entity = &entity_add; diff --git a/src/systems/clickable_system.c b/src/systems/clickable_system.c index a197811..4a62d23 100644 --- a/src/systems/clickable_system.c +++ b/src/systems/clickable_system.c @@ -21,7 +21,9 @@ void clickable_onclick(gc_engine *engine, gc_vector2 position) if (!scene) return; entities = scene->get_entity_by_cmp(scene, "clickable_component"); - for (gc_list *ent = entities; ent; ent = ent->next) { + while (entities->next) + entities = entities->next; + for (gc_list *ent = entities; ent; ent = ent->prev) { tra = GETCMP(((gc_entity *)ent->data), transform_component); if ((tra->position.x - tra->size.x / 2) <= position.x && (tra->position.y + tra->size.y / 2) >= position.y diff --git a/src/utility/list.c b/src/utility/list.c index fd2f7fb..a68e03e 100644 --- a/src/utility/list.c +++ b/src/utility/list.c @@ -14,11 +14,15 @@ gc_list *list_add(gc_list *list, void *obj) if (!list) { list = malloc(sizeof(gc_list)); + if (list) + list->prev = NULL; listconst = list; } else { while (list->next) list = list->next; list->next = malloc(sizeof(gc_list)); + if (list->next) + list->next->prev = list; list = list->next; } if (!list)