From 54ff5a1b06e32938af25549e8a52692b1b44e641 Mon Sep 17 00:00:00 2001
From: AnonymusRaccoon
Date: Thu, 12 Mar 2020 18:27:20 +0100
Subject: [PATCH] Coding style
---
Makefile | 120 +++++++--------
include/callbacks.h | 13 +-
include/components/clickable_component.h | 14 +-
include/components/input_component.h | 13 +-
include/components/renderer.h | 4 +-
include/components/tag_component.h | 13 +-
include/components/tooltip_component.h | 6 +-
include/engine.h | 13 +-
include/errors.h | 9 +-
include/event_manager.h | 13 +-
include/keybindings.h | 15 +-
include/scene.h | 6 +-
include/sfml_renderer.h | 15 +-
include/sprite.h | 6 +-
include/tile_collision_manager.h | 3 +-
include/ui.h | 9 +-
include/vector2.h | 4 +-
src/components/clickable_component.c | 64 ++++----
src/components/fixed_to_cam.c | 14 +-
src/components/input_component.c | 49 +++---
.../isometry/create_map_functions.c | 129 ++++++++--------
src/components/isometry/map_managment.c | 54 +++----
src/components/isometry/vertex_component.c | 14 +-
src/components/isometry/vertex_data_loader.c | 42 ++---
src/components/renderer.c | 4 +-
src/components/renderers/text_renderer.c | 22 +--
src/components/tag_component.c | 42 ++---
src/components/tile_collision_manager.c | 92 ++++++-----
src/components/tooltip_component.c | 34 ++---
src/deserializer/prefab.c | 14 +-
src/engine/discard_player.c | 12 +-
src/engine/engine.c | 11 +-
src/engine/engine_dataloader.c | 48 +++---
src/engine/engine_system_builder.c | 2 +-
src/engine/event_manager.c | 44 +++---
src/entity/entity.c | 8 +-
src/entity/entity_factory.c | 4 +-
src/scene/scene.c | 20 +--
src/scene/scene_loader.c | 42 ++---
src/sfml_renderer/sfml_dataloaders.c | 46 +++---
src/sfml_renderer/sfml_drawer.c | 91 +++++------
src/sfml_renderer/sfml_events.c | 82 +++++-----
src/sfml_renderer/sfml_functions.c | 4 +-
src/sfml_renderer/sfml_init.c | 38 ++---
src/sfml_renderer/sfml_music_player.c | 4 +-
src/sfml_renderer/sfml_vertex.c | 90 +++++------
src/systems/camera_follow_system.c | 2 +-
src/systems/clickable_manager.c | 49 +++---
src/systems/fixed_to_cam_pseudosystem.c | 30 ++--
src/systems/sfml_renderer_system.c | 56 +++----
src/systems/tooltip_system.c | 38 ++---
src/ui/button.c | 119 +++++++--------
src/ui/setup_ui.c | 143 +++++++++---------
src/ui/tooltip.c | 60 ++++----
src/utility/list.c | 40 ++---
55 files changed, 979 insertions(+), 954 deletions(-)
diff --git a/Makefile b/Makefile
index c9b1317..ea161f9 100644
--- a/Makefile
+++ b/Makefile
@@ -6,57 +6,57 @@
##
SRC = src/engine/engine.c \
- src/engine/engine_internal.c \
- src/engine/discard_player.c \
- src/engine/engine_dataloader.c \
- src/entity/entity.c \
- src/entity/entity_factory.c \
- src/component.c \
- src/components/movable_component.c \
- src/components/collision_component.c \
- src/components/transform_component.c \
- src/components/renderer.c \
- src/components/camera_follow.c \
- src/components/fixed_to_cam.c \
- src/components/parallax_component.c \
- src/components/vertex_component.c \
- src/components/controllable_component.c \
- src/components/friction_component.c \
- src/components/friction_giver.c \
- src/components/controllers/keyboard_controller.c \
- src/components/renderers/sprite_renderer.c \
- src/components/renderers/anim_renderer.c \
- src/components/renderers/text_renderer.c \
- src/components/renderers/map_renderer.c \
- src/scene/scene.c \
- src/scene/scene_loader.c \
- src/scene/scene_destroy.c \
- src/utility/arraylen.c \
- src/utility/list.c \
- src/utility/tupple.c \
- src/deserializer/deserialize_entity.c \
- src/deserializer/prefab.c \
- src/system.c \
- src/systems/sfml_renderer_system.c \
- src/systems/movable_system.c \
- src/systems/camera_follow_system.c \
- src/systems/collision_system.c \
- src/systems/parallax_system.c \
- src/systems/controllers/keyboard_controller_system.c \
- src/systems/friction_system.c \
- src/systems/fixed_to_cam_pseudosystem.c \
- src/engine/engine_system_builder.c \
- src/engine/engine_component_builder.c \
- src/utility/vector2.c \
- src/utility/my_realloc.c \
- src/sfml_renderer/sfml_dataloaders.c \
- src/sfml_renderer/sfml_music_player.c \
- src/sfml_renderer/texture_utility.c \
- src/sfml_renderer/sfml_drawer.c \
- src/sfml_renderer/sfml_functions.c \
- src/sfml_renderer/sfml_vertex.c \
- src/ui/setup_ui.c \
- src/ui/button.c
+ src/engine/engine_internal.c \
+ src/engine/discard_player.c \
+ src/engine/engine_dataloader.c \
+ src/entity/entity.c \
+ src/entity/entity_factory.c \
+ src/component.c \
+ src/components/movable_component.c \
+ src/components/collision_component.c \
+ src/components/transform_component.c \
+ src/components/renderer.c \
+ src/components/camera_follow.c \
+ src/components/fixed_to_cam.c \
+ src/components/parallax_component.c \
+ src/components/vertex_component.c \
+ src/components/controllable_component.c \
+ src/components/friction_component.c \
+ src/components/friction_giver.c \
+ src/components/controllers/keyboard_controller.c \
+ src/components/renderers/sprite_renderer.c \
+ src/components/renderers/anim_renderer.c \
+ src/components/renderers/text_renderer.c \
+ src/components/renderers/map_renderer.c \
+ src/scene/scene.c \
+ src/scene/scene_loader.c \
+ src/scene/scene_destroy.c \
+ src/utility/arraylen.c \
+ src/utility/list.c \
+ src/utility/tupple.c \
+ src/deserializer/deserialize_entity.c \
+ src/deserializer/prefab.c \
+ src/system.c \
+ src/systems/sfml_renderer_system.c \
+ src/systems/movable_system.c \
+ src/systems/camera_follow_system.c \
+ src/systems/collision_system.c \
+ src/systems/parallax_system.c \
+ src/systems/controllers/keyboard_controller_system.c \
+ src/systems/friction_system.c \
+ src/systems/fixed_to_cam_pseudosystem.c \
+ src/engine/engine_system_builder.c \
+ src/engine/engine_component_builder.c \
+ src/utility/vector2.c \
+ src/utility/my_realloc.c \
+ src/sfml_renderer/sfml_dataloaders.c \
+ src/sfml_renderer/sfml_music_player.c \
+ src/sfml_renderer/texture_utility.c \
+ src/sfml_renderer/sfml_drawer.c \
+ src/sfml_renderer/sfml_functions.c \
+ src/sfml_renderer/sfml_vertex.c \
+ src/ui/setup_ui.c \
+ src/ui/button.c
OBJ = $(SRC:%.c=%.o)
@@ -65,7 +65,7 @@ GCDA = *.gcda
GCNO = *.gcno
TESTS = tests/deserializations.c \
- tests/game_loop.c
+ tests/game_loop.c
INCLUDE = -I ./include
@@ -87,20 +87,20 @@ AR = ar rc
all: $(NAME)
$(NAME): $(OBJ)
- $(AR) $(NAME) $(OBJ)
+ $(AR) $(NAME) $(OBJ)
tests_run:
- $(CC) -o $(UT) $(SRC) $(TESTS) $(COVERAGE) $(CFLAGS) $(LDFLAGS)
- $(UT)
+ $(CC) -o $(UT) $(SRC) $(TESTS) $(COVERAGE) $(CFLAGS) $(LDFLAGS)
+ $(UT)
clean:
- $(RM) $(OBJ)
- $(RM) $(GCDA)
- $(RM) $(GCNO)
+ $(RM) $(OBJ)
+ $(RM) $(GCDA)
+ $(RM) $(GCNO)
fclean: clean
- $(RM) $(NAME)
- $(RM) $(UT)
+ $(RM) $(NAME)
+ $(RM) $(UT)
re: fclean all
diff --git a/include/callbacks.h b/include/callbacks.h
index 8f62838..4b7fd02 100644
--- a/include/callbacks.h
+++ b/include/callbacks.h
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 3/11/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** callbacks
+*/
#ifndef _CALLBACKS_H_
#define _CALLBACKS_H_
@@ -9,8 +12,8 @@
struct callback
{
- const char *name;
- callback_t func;
+ const char *name;
+ callback_t func;
};
#endif //_CALLBACKS_H_
diff --git a/include/components/clickable_component.h b/include/components/clickable_component.h
index 344f282..c188445 100644
--- a/include/components/clickable_component.h
+++ b/include/components/clickable_component.h
@@ -16,13 +16,13 @@ void clickable_manager_init(gc_engine *engine);
struct clickable_component
{
- gc_component base;
- //! @brief On click callback.
- //! @param engine The engine.
- //! @param entity_id The id of the clicked entity.
- //! @return Return true if this callback catch the event (other listeners after this one won't get the event)
- //! @return Return false if you want others listener to receive the event.
- callback_t onclick;
+ gc_component base;
+ //! @brief On click callback.
+ //! @param engine The engine.
+ //! @param entity_id The id of the clicked entity.
+ //! @return Return true if this callback catch the event (other listeners after this one won't get the event)
+ //! @return Return false if you want others listener to receive the event.
+ callback_t onclick;
};
diff --git a/include/components/input_component.h b/include/components/input_component.h
index 2f33947..c003255 100644
--- a/include/components/input_component.h
+++ b/include/components/input_component.h
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 3/2/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** input_component
+*/
#ifndef _INPUT_COMPONENT_H_
#define _INPUT_COMPONENT_H_
@@ -9,8 +12,8 @@
struct input_component
{
- gc_component base;
- int value;
+ gc_component base;
+ int value;
};
extern const struct input_component input_component;
diff --git a/include/components/renderer.h b/include/components/renderer.h
index b94e840..e7ee7c6 100644
--- a/include/components/renderer.h
+++ b/include/components/renderer.h
@@ -11,11 +11,11 @@
#include "vector2.h"
typedef enum gc_texturetype {
- GC_NONE,
GC_TEXTUREREND,
GC_ANIMREND,
GC_TXTREND,
- GC_MAP
+ GC_MAP,
+ GC_NONE
} gc_texturetype;
struct renderer
diff --git a/include/components/tag_component.h b/include/components/tag_component.h
index 59647fd..b9e2e75 100644
--- a/include/components/tag_component.h
+++ b/include/components/tag_component.h
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 3/3/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** tag_component
+*/
#ifndef _TAG_COMPONENT_H_
#define _TAG_COMPONENT_H_
@@ -9,8 +12,8 @@
struct tag_component
{
- gc_component base;
- char *tag;
+ gc_component base;
+ char *tag;
};
const struct tag_component tag_component;
diff --git a/include/components/tooltip_component.h b/include/components/tooltip_component.h
index d586206..571932e 100644
--- a/include/components/tooltip_component.h
+++ b/include/components/tooltip_component.h
@@ -12,9 +12,9 @@
struct tooltip_component
{
- gc_component base;
- struct transform_component *parent_transform;
- gc_vector2 padding;
+ gc_component base;
+ struct transform_component *parent_transform;
+ gc_vector2 padding;
};
extern const struct tooltip_component tooltip_component;
\ No newline at end of file
diff --git a/include/engine.h b/include/engine.h
index 2622038..a003d06 100644
--- a/include/engine.h
+++ b/include/engine.h
@@ -58,13 +58,13 @@ struct gc_engine
gc_list *callbacks;
void (*add_callback)(gc_engine *this, char *name, callback_t callback);
- void (*on_resize)(gc_engine *this, gc_vector2 size);
- gc_vector2 (*get_screen_size)(gc_engine *this);
- gc_vector2 (*get_cursor_pos)(gc_engine *this);
+ void (*on_resize)(gc_engine *this, gc_vector2 size);
+ gc_vector2 (*get_screen_size)(gc_engine *this);
+ gc_vector2 (*get_cursor_pos)(gc_engine *this);
- gc_list *event_listeners;
- void (*trigger_event)(gc_engine *this, const char *name, ...);
- bool (*add_event_listener)(gc_engine *this, const char *name, \
+ gc_list *event_listeners;
+ void (*trigger_event)(gc_engine *this, const char *name, ...);
+ bool (*add_event_listener)(gc_engine *this, const char *name, \
void (*func)(gc_engine *, va_list));
};
@@ -89,6 +89,7 @@ void engine_add_buildin_components(gc_engine *engine);
const void *engine_get_component(gc_engine *engine, const char *name);
void engine_add_component(gc_engine *engine, const void *component);
+void engine_setup_event(gc_engine *engine);
void engine_init_dataloaders(gc_engine *this);
void engine_add_dataloader(gc_engine *engine, char *type, gc_loader loader);
gc_dataloader *engine_get_dataloader(gc_engine *this, const char *type);
diff --git a/include/errors.h b/include/errors.h
index 2d2d16a..63a6823 100644
--- a/include/errors.h
+++ b/include/errors.h
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 2/21/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** errors
+*/
#ifndef _ERRORS_H_
#define _ERRORS_H_
diff --git a/include/event_manager.h b/include/event_manager.h
index 39ebc96..25301e8 100644
--- a/include/event_manager.h
+++ b/include/event_manager.h
@@ -1,6 +1,9 @@
-//
-// Created by cbihan on 3/9/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** event_manager
+*/
#ifndef MY3D_EVENT_MANAGER_H
#define MY3D_EVENT_MANAGER_H
@@ -11,8 +14,8 @@ typedef struct gc_event_manager gc_event_manager;
struct gc_event_listener
{
- void (*func)(gc_engine *, va_list);
- const char *name;
+ void (*func)(gc_engine *, va_list);
+ const char *name;
};
void engine_trigger_event(gc_engine *engine, const char *name, ...);
diff --git a/include/keybindings.h b/include/keybindings.h
index 6b7b279..3d7c1e1 100644
--- a/include/keybindings.h
+++ b/include/keybindings.h
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 3/9/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** keybindings
+*/
#ifndef _KEYBINDINGS_H_
#define _KEYBINDINGS_H_
@@ -9,13 +12,13 @@
typedef enum gc_keybindings
{
- ESCAPE = sfKeyEscape
+ ESCAPE = sfKeyEscape
} gc_keybindings;
typedef enum gc_mousekeys
{
- GC_LEFT,
- GC_RIGHT
+ GC_LEFT,
+ GC_RIGHT
} gc_mousekeys;
#endif //_KEYBINDINGS_H_
diff --git a/include/scene.h b/include/scene.h
index 928be44..8ff0c68 100644
--- a/include/scene.h
+++ b/include/scene.h
@@ -28,10 +28,10 @@ struct gc_scene
gc_list *(*get_entity_by_cmp)(gc_scene *scene, const char *cmp_name);
void (*load_entity)(gc_scene *this, gc_engine *engine, node *xml, int pref);
- gc_list *callbacks;
- callback_t (*get_callback)(gc_scene *this, char *name);
+ gc_list *callbacks;
+ callback_t (*get_callback)(gc_scene *this, char *name);
- bool is_paused;
+ bool is_paused;
};
callback_t scene_get_callback(gc_scene *scene, char *name);
diff --git a/include/sfml_renderer.h b/include/sfml_renderer.h
index 3970f93..23b30d4 100644
--- a/include/sfml_renderer.h
+++ b/include/sfml_renderer.h
@@ -24,15 +24,14 @@ sfTexture *get_texture(gc_scene *scene, char *name);
sfVertexArray *sfml_init_verticies(void);
sfRenderStates *sfml_init_render_state(void);
-void sfmlrenderer_draw_texture(struct sfml_renderer_system *renderer, \
-struct transform_component *tra, gc_entity *entity, gc_sprite *sprite);
-void sfmlrenderer_draw_anim(struct sfml_renderer_system *renderer, \
+void sfmlrenderer_draw_texture(gc_engine *engine, \
+gc_entity *entity, gc_sprite *sprite, float dt);
+void sfmlrenderer_draw_anim(gc_engine *engine, \
gc_entity *entity, gc_animholder *holder, float dtime);
-void sfmlrenderer_draw_txt(gc_engine *engine, \
-struct sfml_renderer_system *renderer, struct transform_component *tra, \
-gc_text *txt);
-void sfmlrenderer_draw_tilemap(struct sfml_renderer_system *this,
-struct transform_component *pos, struct vertex_component *txt);
+void sfmlrenderer_draw_txt(gc_engine *engine, gc_entity *entity, \
+gc_text *txt, float dt);
+void sfmlrenderer_draw_tilemap(gc_engine *engine, gc_entity *entity, \
+struct vertex_component *txt, float dt);
void sfml_texture_destroy(gc_data *data);
void sfml_music_destroy(gc_data *data);
diff --git a/include/sprite.h b/include/sprite.h
index a08511b..b6c1c72 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -13,9 +13,9 @@
typedef struct gc_int_rect
{
int height;
- int width;
- int top;
- int left;
+ int width;
+ int top;
+ int left;
} gc_int_rect;
typedef struct gc_sprite {
diff --git a/include/tile_collision_manager.h b/include/tile_collision_manager.h
index b3a03b7..3de6c1f 100644
--- a/include/tile_collision_manager.h
+++ b/include/tile_collision_manager.h
@@ -21,7 +21,8 @@ bool is_on_segment(gc_vector2 p, gc_vector2 q, gc_vector2 r);
int orientation(gc_vector2 p, gc_vector2 q, gc_vector2 r);
//! @brief Checks if segments p1q1 and p2q2 intersects
-bool gc_vector2_do_intersect(gc_vector2 p1, gc_vector2 q1, gc_vector2 p2, gc_vector2 q2);
+bool gc_vector2_do_intersect(gc_vector2 p1, gc_vector2 q1, \
+gc_vector2 p2, gc_vector2 q2);
//! @brief Checks if a point is in a polygon
//! @note The segment created to check is [10000, p.x] so beware when checking with large coordinates
diff --git a/include/ui.h b/include/ui.h
index 140a2d2..781d7ab 100644
--- a/include/ui.h
+++ b/include/ui.h
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 2/21/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** ui
+*/
#ifndef _UI_H_
#define _UI_H_
diff --git a/include/vector2.h b/include/vector2.h
index 3557252..de0584c 100644
--- a/include/vector2.h
+++ b/include/vector2.h
@@ -15,8 +15,8 @@ typedef struct gc_vector2
typedef struct gc_vector2i
{
- int x;
- int y;
+ int x;
+ int y;
} gc_vector2i;
float gcvector_magnitude(gc_vector2 vec);
diff --git a/src/components/clickable_component.c b/src/components/clickable_component.c
index beddcdb..d92ac33 100644
--- a/src/components/clickable_component.c
+++ b/src/components/clickable_component.c
@@ -13,53 +13,53 @@
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;
+ 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;
- callback = scene->get_callback(scene, onclick);
- if (!callback)
- my_printf("No callback found with the name: %s\n", onclick);
- cmp->onclick = callback;
+ if (!scene)
+ return;
+ 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;
+ struct clickable_component *cmp = (struct clickable_component *)component;
+ char *onclick = xml_gettempprop(n, "click");
+ callback_t callback;
- if (!scene)
- return;
- callback = scene->get_callback(scene, onclick);
- if (!callback)
- my_printf("No callback found with the name: %s\n", onclick);
- cmp->onclick = callback;
+ if (!scene)
+ return;
+ 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)
{
- (void)component;
+ (void)component;
}
static char *serialize(void *component)
{
- (void)component;
- return (NULL);
+ (void)component;
+ return (NULL);
}
const struct clickable_component clickable_component = {
- base: {
- name: "clickable_component",
- size: sizeof(struct clickable_component),
- dependencies: (char *[]){"transform_component", NULL},
- ctr: &ctr,
- fdctr: &fdctr,
- dtr: &dtr,
- serialize: &serialize,
- destroy: &component_destroy
- }
+ base: {
+ name: "clickable_component",
+ size: sizeof(struct clickable_component),
+ dependencies: (char *[]){"transform_component", NULL},
+ ctr: &ctr,
+ fdctr: &fdctr,
+ dtr: &dtr,
+ serialize: &serialize,
+ destroy: &component_destroy
+ }
};
\ No newline at end of file
diff --git a/src/components/fixed_to_cam.c b/src/components/fixed_to_cam.c
index 97d94b2..cb176aa 100644
--- a/src/components/fixed_to_cam.c
+++ b/src/components/fixed_to_cam.c
@@ -27,17 +27,17 @@ static void ctr(void *component, va_list args)
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
struct fixed_to_cam *cmp = (struct fixed_to_cam *)component;
- char *tmp;
+ char *tmp;
n = xml_getnode(n, "Position");
cmp->pos.x = xml_getintprop(n, "x");
cmp->pos.y = xml_getintprop(n, "y");
- tmp = xml_gettempprop(n, "x");
- cmp->per_x = tmp && my_strchr(tmp, '%');
- tmp = xml_gettempprop(n, "y");
- cmp->per_y = tmp && my_strchr(tmp, '%');
- cmp->size_x = xml_getintprop(n, "width");
- cmp->size_y = xml_getintprop(n, "height");
+ tmp = xml_gettempprop(n, "x");
+ cmp->per_x = tmp && my_strchr(tmp, '%');
+ tmp = xml_gettempprop(n, "y");
+ cmp->per_y = tmp && my_strchr(tmp, '%');
+ cmp->size_x = xml_getintprop(n, "width");
+ cmp->size_y = xml_getintprop(n, "height");
(void)scene;
(void)entity;
}
diff --git a/src/components/input_component.c b/src/components/input_component.c
index 13e76dc..c1acc3a 100644
--- a/src/components/input_component.c
+++ b/src/components/input_component.c
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 3/2/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** input_component
+*/
#include "xml.h"
#include "entity.h"
@@ -9,41 +12,41 @@
static void ctr(void *component, va_list args)
{
- struct input_component *cmp = (struct input_component *)component;
+ struct input_component *cmp = (struct input_component *)component;
- cmp->value = 0;
+ cmp->value = 0;
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
- struct input_component *cmp = (struct input_component *)component;
+ struct input_component *cmp = (struct input_component *)component;
- cmp->value = 0;
- (void)scene;
- (void)entity;
+ cmp->value = 0;
+ (void)scene;
+ (void)entity;
}
static void dtr(void *component)
{
- (void)component;
+ (void)component;
}
static char *serialize(void *component)
{
- (void)component;
- return (NULL);
+ (void)component;
+ return (NULL);
}
const struct input_component input_component = {
- base: {
- name: "input_component",
- size: sizeof(struct input_component),
- dependencies: (char *[]){ NULL },
- ctr: &ctr,
- fdctr: &fdctr,
- dtr: &dtr,
- serialize: &serialize,
- destroy: &component_destroy
- },
- value: 0
+ base: {
+ name: "input_component",
+ size: sizeof(struct input_component),
+ dependencies: (char *[]){ NULL },
+ ctr: &ctr,
+ fdctr: &fdctr,
+ dtr: &dtr,
+ serialize: &serialize,
+ destroy: &component_destroy
+ },
+ value: 0
};
\ No newline at end of file
diff --git a/src/components/isometry/create_map_functions.c b/src/components/isometry/create_map_functions.c
index b4a0884..8d6cc5e 100644
--- a/src/components/isometry/create_map_functions.c
+++ b/src/components/isometry/create_map_functions.c
@@ -12,87 +12,86 @@
bool get_vertices(struct vertex_component *this, node *n)
{
- int i = 0;
- int j = 0;
- int size[3] = {sizeof(struct vertex), sizeof(struct vertex *), 0};
+ int i = 0;
+ int j = 0;
+ int size[3] = {sizeof(struct vertex), sizeof(struct vertex *), 0};
- this->vertices = malloc(size[1] * (xml_getchildcount(n) + 1));
- if (!this->vertices)
- return (false);
- for (node *line = n->child; line; line = line->next) {
- this->vertices[i] = malloc(size[0] * (xml_getchildcount(line) + 1));
- if (!this->vertices[i])
- return (false);
- for (node *row = line->child; row; row = row->next) {
- size[2] = xml_getintprop(row, "height");
- this->vertices[i][j] = (struct vertex){i, j++, size[2]};
- }
- this->vertices[i++][j] = (struct vertex){0, 0, INT32_MIN};
- j = 0;
- }
- this->vertices[i] = NULL;
- return (true);
+ this->vertices = malloc(size[1] * (xml_getchildcount(n) + 1));
+ if (!this->vertices)
+ return (false);
+ for (node *line = n->child; line; line = line->next) {
+ this->vertices[i] = malloc(size[0] * (xml_getchildcount(line) + 1));
+ if (!this->vertices[i])
+ return (false);
+ for (node *row = line->child; row; row = row->next) {
+ size[2] = xml_getintprop(row, "height");
+ this->vertices[i][j] = (struct vertex){i, j++, size[2]};
+ }
+ this->vertices[i++][j] = (struct vertex){0, 0, INT32_MIN};
+ j = 0;
+ }
+ this->vertices[i] = NULL;
+ return (true);
}
char *get_texture_for_coords(gc_vector2i coords, node *n)
{
- char *texture = NULL;
+ char *texture = NULL;
- for (node *text = n->child; text; text = text->next) {
- if (xml_getintprop(text, "x") != coords.x)
- continue;
- if (xml_getintprop(text, "y") != coords.y)
- continue;
- texture = xml_getproperty(text, "name");
- break;
- }
- return (texture);
+ for (node *text = n->child; text; text = text->next) {
+ if (xml_getintprop(text, "x") != coords.x)
+ continue;
+ if (xml_getintprop(text, "y") != coords.y)
+ continue;
+ texture = xml_getproperty(text, "name");
+ break;
+ }
+ return (texture);
}
bool init_tile(struct vertex_component *this, int *inc, void **d, \
gc_vector2i c)
{
- char *t;
- void *tmp;
- gc_vector2i arr[4] = {c, (gc_vector2i){c.x, c.y + 1}, \
+ char *t;
+ void *tmp;
+ gc_vector2i arr[4] = {c, (gc_vector2i){c.x, c.y + 1}, \
(gc_vector2i){c.x + 1, c.y + 1}, (gc_vector2i){c.x + 1, c.y}};
- for (int i = 0; i < 4; i++)
- if (this->vertices[arr[i].x][arr[i].y].z == INT32_MIN)
- return (false);
- for (int i = 0; i < 4; i++)
- this->map[*inc].corners[i] = &this->vertices[arr[i].x][arr[i].y];
- this->map[*inc].data = 0;
- t = get_texture_for_coords(c, d[0]);
- if (t) {
- tmp = ((gc_scene *)d[1])->get_data(d[1], "sprite", t);
- this->map[*inc].texture = tmp;
- free(t);
- }
- else
- this->map[*inc].texture = NULL;
- return (true);
+ for (int i = 0; i < 4; i++)
+ if (this->vertices[arr[i].x][arr[i].y].z == INT32_MIN)
+ return (false);
+ for (int i = 0; i < 4; i++)
+ this->map[*inc].corners[i] = &this->vertices[arr[i].x][arr[i].y];
+ this->map[*inc].data = 0;
+ t = get_texture_for_coords(c, d[0]);
+ if (t) {
+ tmp = ((gc_scene *)d[1])->get_data(d[1], "sprite", t);
+ this->map[*inc].texture = tmp;
+ free(t);
+ }
+ else
+ this->map[*inc].texture = NULL;
+ return (true);
}
bool get_tiles(struct vertex_component *this, gc_scene *scene, node *n)
{
- int inc = 0;
- int v_x = xml_getchildcount(n);
- void *dodge[2] = {n->next, scene};
- int vy = xml_getchildcount(n->child->child);
+ int inc = 0;
+ int v_x = xml_getchildcount(n);
+ void *dodge[2] = {n->next, scene};
+ int vy = xml_getchildcount(n->child->child);
- for (node *line = n->child; line; line = line->next)
- vy = (xml_getchildcount(line) > vy) ? xml_getchildcount(line) : vy;
- this->map = malloc(sizeof(struct tile) * (v_x * vy + 1));
- if (!this->map)
- return (false);
- for (v_x = 0; this->vertices[v_x + 1]; v_x++) {
- for (vy = 0; this->vertices[v_x][vy].z != INT32_MIN; vy++) {
- if (!init_tile(this, &inc, dodge, (gc_vector2i){v_x, vy}))
- break;
- inc++;
- }
- }
- this->map[inc].corners[0] = NULL;
- return (true);
+ for (node *line = n->child; line; line = line->next)
+ vy = (xml_getchildcount(line) > vy) ? xml_getchildcount(line) : vy;
+ this->map = malloc(sizeof(struct tile) * (v_x * vy + 1));
+ if (!this->map)
+ return (false);
+ for (v_x = 0; this->vertices[v_x + 1]; v_x++) {
+ for (vy = 0; this->vertices[v_x][vy].z != INT32_MIN; vy++) {
+ if (init_tile(this, &inc, dodge, (gc_vector2i){v_x, vy}))
+ inc++;
+ }
+ }
+ this->map[inc].corners[0] = NULL;
+ return (true);
}
\ No newline at end of file
diff --git a/src/components/isometry/map_managment.c b/src/components/isometry/map_managment.c
index 22d9a92..7c02500 100644
--- a/src/components/isometry/map_managment.c
+++ b/src/components/isometry/map_managment.c
@@ -13,40 +13,40 @@
gc_vector2 get_tile_coords_to_pixels(float x, float y, float z)
{
- return (gc_vector2){
- cos(ANGLE_X) * y * 64 - cos(ANGLE_X) * x * 64,
- -(sin(ANGLE_Y) * x * 64 + sin(ANGLE_Y) * y * 64 - z)
- };
+ return (gc_vector2){
+ cos(ANGLE_X) * y * 64 - cos(ANGLE_X) * x * 64,
+ -(sin(ANGLE_Y) * x * 64 + sin(ANGLE_Y) * y * 64 - z)
+ };
}
struct tile *get_tile_from_pos(struct vertex_component *map, gc_vector2 pos)
{
- if (!map || !map->map)
- return (NULL);
- for (int i = 0; map->map[i].corners[0]; i++) {
- if (map->map[i].corners[0]->z == INT32_MAX || !map->map[i].corners[2]->y)
- continue;
- if (is_pos_in_tile(pos, &map->map[i])) {
- return (&map->map[i]);
- }
- }
- return (NULL);
+ if (!map || !map->map)
+ return (NULL);
+ for (int i = 0; map->map[i].corners[0]; i++) {
+ if (map->map[i].corners[0]->z == INT32_MAX || !map->map[i].corners[2]->y)
+ continue;
+ if (is_pos_in_tile(pos, &map->map[i])) {
+ return (&map->map[i]);
+ }
+ }
+ return (NULL);
}
int get_index_nearest_vertex(struct tile *sel, gc_vector2 pos)
{
- float spacing = INFINITY;
- gc_vector2 coords;
- double tmp;
- int i_stock = 0;
+ float spacing = INFINITY;
+ gc_vector2 coords;
+ double tmp;
+ int i_stock = 0;
- for (int i = 0; i < 4; i++) {
- coords = get_tile_coords_to_pixels(sel->corners[i]->x, sel->corners[i]->y, sel->corners[i]->z);
- tmp = pow(coords.x - pos.x, 2) + pow(coords.y - pos.y, 2);
- if (tmp < spacing) {
- spacing = tmp;
- i_stock = i;
- }
- }
- return (i_stock);
+ for (int i = 0; i < 4; i++) {
+ coords = get_tile_coords_to_pixels(sel->corners[i]->x, sel->corners[i]->y, sel->corners[i]->z);
+ tmp = pow(coords.x - pos.x, 2) + pow(coords.y - pos.y, 2);
+ if (tmp < spacing) {
+ spacing = tmp;
+ i_stock = i;
+ }
+ }
+ return (i_stock);
}
\ No newline at end of file
diff --git a/src/components/isometry/vertex_component.c b/src/components/isometry/vertex_component.c
index f4f3a85..b8224de 100644
--- a/src/components/isometry/vertex_component.c
+++ b/src/components/isometry/vertex_component.c
@@ -21,22 +21,22 @@ static void ctr(void *component, va_list args)
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
struct vertex_component *this = (struct vertex_component *)component;
- char *tilemap = xml_gettempprop(n, "tilemap");
- char *name = n->name;
+ char *tilemap = xml_gettempprop(n, "tilemap");
+ char *name = n->name;
this->vertices = NULL;
this->map = NULL;
if (!tilemap) {
- my_printf("gamacon: unable to find property 'tilemap' on %s\n", name);
- return;
+ my_printf("gamacon: unable to find property 'tilemap' on %s\n", name);
+ return;
}
n = xml_parse(tilemap);
if (!n) {
- my_printf("gamacon: unable to find a valid tilemap at %s\n", tilemap);
- return;
+ my_printf("gamacon: unable to find a valid tilemap at %s\n", tilemap);
+ return;
}
if (!get_vertices(this, n->child) || !get_tiles(this, scene, n->child)) {
- my_printf("Unable to malloc during verticies/tile parsing\n");
+ my_printf("Unable to malloc during verticies/tile parsing\n");
return;
}
}
diff --git a/src/components/isometry/vertex_data_loader.c b/src/components/isometry/vertex_data_loader.c
index d1ef89d..1e025b3 100644
--- a/src/components/isometry/vertex_data_loader.c
+++ b/src/components/isometry/vertex_data_loader.c
@@ -13,30 +13,30 @@
void vertex_data_destroy(gc_data *data)
{
- free(data->custom);
+ free(data->custom);
}
gc_data *tile_texture_array_loader(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_data *data = malloc(sizeof(*data));
- void **arr;
- int count = 0;
+ gc_data *data = malloc(sizeof(*data));
+ void **arr;
+ int count = 0;
- if (!data)
- return (NULL);
- data->type = my_strdup(n->name);
- data->name = NULL;
- if (!data->type)
- return (NULL);
- count = xml_getchildcount(n);
- arr = malloc(sizeof(void *) * (count + 1));
- if (!arr)
- return (NULL);
- n = n->child;
- for (int i = 0; n; n = n->next, i++)
- arr[i] = scene->get_data(scene, "sprite", xml_gettempprop(n, "name"));
- arr[count - 1] = NULL;
- data->custom = arr;
- data->destroy = &vertex_data_destroy;
- return (data);
+ if (!data)
+ return (NULL);
+ data->type = my_strdup(n->name);
+ data->name = NULL;
+ if (!data->type)
+ return (NULL);
+ count = xml_getchildcount(n);
+ arr = malloc(sizeof(void *) * (count + 1));
+ if (!arr)
+ return (NULL);
+ n = n->child;
+ for (int i = 0; n; n = n->next, i++)
+ arr[i] = scene->get_data(scene, "sprite", xml_gettempprop(n, "name"));
+ arr[count - 1] = NULL;
+ data->custom = arr;
+ data->destroy = &vertex_data_destroy;
+ return (data);
}
\ No newline at end of file
diff --git a/src/components/renderer.c b/src/components/renderer.c
index 59f0e6b..7860977 100644
--- a/src/components/renderer.c
+++ b/src/components/renderer.c
@@ -49,7 +49,7 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
gc_texturetype type = renderer_get_type(n);
cmp->type = type;
- cmp->is_visible = true;
+ cmp->is_visible = true;
if (type == GC_TEXTUREREND)
sprite_fdctr(scene, cmp, n);
if (type == GC_ANIMREND)
@@ -82,8 +82,6 @@ static void dtr(void *component)
case GC_TEXTUREREND:
free(cmp->data);
break;
- default:
- break;
}
}
diff --git a/src/components/renderers/text_renderer.c b/src/components/renderers/text_renderer.c
index edbd1c2..b638c4c 100644
--- a/src/components/renderers/text_renderer.c
+++ b/src/components/renderers/text_renderer.c
@@ -16,13 +16,13 @@
int color_from_text(char *txt)
{
- if (txt == NULL)
- return (*(int *)&sfWhite);
- if (!my_strcmp(txt, "black"))
- return (*(int *)&sfBlack);
- if (!my_strcmp(txt, "white"))
- return (*(int *)&sfWhite);
- return (*(int *)&sfWhite);
+ if (txt == NULL)
+ return (*(int *)&sfWhite);
+ if (!my_strcmp(txt, "black"))
+ return (*(int *)&sfBlack);
+ if (!my_strcmp(txt, "white"))
+ return (*(int *)&sfWhite);
+ return (*(int *)&sfWhite);
}
void text_ctr(struct renderer *cmp, va_list args)
@@ -39,7 +39,7 @@ void text_ctr(struct renderer *cmp, va_list args)
gctext->resize = va_arg(args, int);
if (gctext->size <= 0)
- gctext->size = 30;
+ gctext->size = 30;
}
void text_fdctr(gc_scene *scene, struct renderer *cmp, node *n)
@@ -53,7 +53,7 @@ void text_fdctr(gc_scene *scene, struct renderer *cmp, node *n)
if (!gctext->text)
return;
gctext->font = scene->get_data(scene, "font", xml_getproperty(n, "src"));
- gctext->size = 30;
- gctext->color = *(int *)&sfWhite;
- gctext->resize = true;
+ gctext->size = 30;
+ gctext->color = *(int *)&sfWhite;
+ gctext->resize = true;
}
diff --git a/src/components/tag_component.c b/src/components/tag_component.c
index 6fa1d8e..168028e 100644
--- a/src/components/tag_component.c
+++ b/src/components/tag_component.c
@@ -13,43 +13,43 @@
static void ctr(void *component, va_list args)
{
- struct tag_component *cmp = (struct tag_component *)component;
+ struct tag_component *cmp = (struct tag_component *)component;
- cmp->tag = va_arg(args, char *);
+ cmp->tag = va_arg(args, char *);
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
- struct tag_component *cmp = (struct tag_component *)component;
+ struct tag_component *cmp = (struct tag_component *)component;
- cmp->tag = xml_getproperty(n, "tag");
- (void)scene;
- (void)entity;
+ cmp->tag = xml_getproperty(n, "tag");
+ (void)scene;
+ (void)entity;
}
static void dtr(void *component)
{
- struct tag_component *cmp = (struct tag_component *)component;
+ struct tag_component *cmp = (struct tag_component *)component;
- free(cmp->tag);
+ free(cmp->tag);
}
static char *serialize(void *component)
{
- (void)component;
- return (NULL);
+ (void)component;
+ return (NULL);
}
const struct tag_component tag_component = {
- base: {
- name: "tag_component",
- size: sizeof(struct tag_component),
- dependencies: (char *[]){NULL},
- ctr: &ctr,
- fdctr: &fdctr,
- dtr: &dtr,
- serialize: &serialize,
- destroy: &component_destroy
- },
- tag: NULL
+ base: {
+ name: "tag_component",
+ size: sizeof(struct tag_component),
+ dependencies: (char *[]){NULL},
+ ctr: &ctr,
+ fdctr: &fdctr,
+ dtr: &dtr,
+ serialize: &serialize,
+ destroy: &component_destroy
+ },
+ tag: NULL
};
\ No newline at end of file
diff --git a/src/components/tile_collision_manager.c b/src/components/tile_collision_manager.c
index e43d436..a78f364 100644
--- a/src/components/tile_collision_manager.c
+++ b/src/components/tile_collision_manager.c
@@ -13,74 +13,68 @@
bool is_on_segment(gc_vector2 p, gc_vector2 q, gc_vector2 r)
{
- if (q.x <= fmaxf(p.x, r.x) && q.x >= fminf(p.x, r.x) && \
+ if (q.x <= fmaxf(p.x, r.x) && q.x >= fminf(p.x, r.x) && \
q.y <= fmaxf(p.y, r.y) && q.y >= fminf(p.y, r.y))
- return (true);
- return (false);
+ return (true);
+ return (false);
}
int orientation(gc_vector2 p, gc_vector2 q, gc_vector2 r)
{
- int tmp = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
+ int tmp = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
- if (tmp == 0)
- return (0);
- return ((tmp > 0) ? 1 : 2);
+ if (tmp == 0)
+ return (0);
+ return ((tmp > 0) ? 1 : 2);
}
bool gc_vector2_do_intersect(gc_vector2 p1, gc_vector2 q1, gc_vector2 p2, gc_vector2 q2)
{
- int o1 = orientation(p1, q1, p2);
- int o2 = orientation(p1, q1, q2);
- int o3 = orientation(p2, q2, p1);
- int o4 = orientation(p2, q2, q1);
+ int o1 = orientation(p1, q1, p2);
+ int o2 = orientation(p1, q1, q2);
+ int o3 = orientation(p2, q2, p1);
+ int o4 = orientation(p2, q2, q1);
- if (o1 != o2 && o3 != o4)
- return (true);
- if (o1 == 0 && is_on_segment(p1, p2, q1))
- return (true);
- if (o2 == 0 && is_on_segment(p1, q2, q1))
- return (true);
- if (o3 == 0 && is_on_segment(p2, p1, q2))
- return (true);
- if (o4 == 0 && is_on_segment(p2, q1, q2))
- return (true);
- return (false);
+ if (o1 != o2 && o3 != o4)
+ return (true);
+ if (o1 == 0 && is_on_segment(p1, p2, q1))
+ return (true);
+ if (o2 == 0 && is_on_segment(p1, q2, q1))
+ return (true);
+ if (o3 == 0 && is_on_segment(p2, p1, q2))
+ return (true);
+ if (o4 == 0 && is_on_segment(p2, q1, q2))
+ return (true);
+ return (false);
}
bool is_point_in_polygon(gc_vector2 *polygon, int n, gc_vector2 p)
{
- gc_vector2 segment = {-INF, p.y};
- int count = 0;
- int next = 0;
- int i = 0;
+ gc_vector2 segment = {-INF, p.y};
+ int count = 0;
+ int next = 0;
+ int i = 0;
- if (n < 3)
- return (false);
- do {
- next = (i + 1) % n;
- if (gc_vector2_do_intersect(polygon[i], polygon[next], p, segment)) {
- if (orientation(polygon[i], p, polygon[next]) == 0)
- return (is_on_segment(polygon[i], p, polygon[next]));
- count++;
- }
- i = next;
- } while (i != 0);
- return (count & 1);
+ if (n < 3)
+ return (false);
+ do {
+ next = (i + 1) % n;
+ if (gc_vector2_do_intersect(polygon[i], polygon[next], p, segment)) {
+ if (orientation(polygon[i], p, polygon[next]) == 0)
+ return (is_on_segment(polygon[i], p, polygon[next]));
+ count++;
+ }
+ i = next;
+ } while (i != 0);
+ return (count & 1);
}
bool is_pos_in_tile(gc_vector2 pos, struct tile *tile)
{
- struct vertex **c = tile->corners;
- gc_vector2 corners[4];
+ struct vertex **c = tile->corners;
+ gc_vector2 corners[4];
- for (int i = 0; i < 4; i++)
- corners[i] = get_tile_coords_to_pixels(c[i]->x, c[i]->y, c[i]->z);
- if (is_point_in_polygon(corners, 4, pos)) {
- //for (int i = 0; i < 4; i ++)
- // printf("%i :(x:%f, y:%f)\n", i + 1, corners[i].x, corners[i].y);
- // printf("\n");
- return (true);
- }
- return (false);
+ for (int i = 0; i < 4; i++)
+ corners[i] = get_tile_coords_to_pixels(c[i]->x, c[i]->y, c[i]->z);
+ return (is_point_in_polygon(corners, 4, pos));
}
\ No newline at end of file
diff --git a/src/components/tooltip_component.c b/src/components/tooltip_component.c
index 88d8a9c..778fede 100644
--- a/src/components/tooltip_component.c
+++ b/src/components/tooltip_component.c
@@ -11,16 +11,16 @@
static void ctr(void *component, va_list args)
{
- struct tooltip_component *cmp = (struct tooltip_component *)component;
+ struct tooltip_component *cmp = (struct tooltip_component *)component;
- cmp->parent_transform = va_arg(args, struct transform_component *);
- cmp->padding.x = va_arg(args, double);
- cmp->padding.y = va_arg(args, double);
+ cmp->parent_transform = va_arg(args, struct transform_component *);
+ cmp->padding.x = va_arg(args, double);
+ cmp->padding.y = va_arg(args, double);
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
- my_printf("Can't create a tooltip component from the fdctr.\n");
+ my_printf("Can't create a tooltip component from the fdctr.\n");
}
static void dtr(void *component)
@@ -29,19 +29,19 @@ static void dtr(void *component)
static char *serialize(void *component)
{
- (void)component;
- return (NULL);
+ (void)component;
+ return (NULL);
}
const struct tooltip_component tooltip_component = {
- base: {
- name: "tooltip_component",
- size: sizeof(struct tooltip_component),
- dependencies: (char *[]) {"renderer", NULL},
- ctr: &ctr,
- fdctr: &fdctr,
- dtr: &dtr,
- serialize: &serialize,
- destroy: &component_destroy
- }
+ base: {
+ name: "tooltip_component",
+ size: sizeof(struct tooltip_component),
+ dependencies: (char *[]) {"renderer", NULL},
+ ctr: &ctr,
+ fdctr: &fdctr,
+ dtr: &dtr,
+ serialize: &serialize,
+ destroy: &component_destroy
+ }
};
\ No newline at end of file
diff --git a/src/deserializer/prefab.c b/src/deserializer/prefab.c
index 9dbe80e..6f9796a 100644
--- a/src/deserializer/prefab.c
+++ b/src/deserializer/prefab.c
@@ -33,18 +33,18 @@ int prefab_loadentities(node *n, gc_engine *engine, gc_scene *scene)
if (!n)
return (-1);
for (node *ent_n = n->child; ent_n; ent_n = ent_n->next) {
- if (my_strcmp(ent_n->name, "gc_entity")) {
- scene->load_entity(scene, engine, ent_n, prefab_id);
- continue;
- }
- entity = deserialize_entity(engine, scene, ent_n);
+ if (my_strcmp(ent_n->name, "gc_entity")) {
+ scene->load_entity(scene, engine, ent_n, prefab_id);
+ continue;
+ }
+ entity = deserialize_entity(engine, scene, ent_n);
if (!entity)
return (-1);
entity->prefab_id = prefab_id;
scene->add_entity(scene, entity);
}
- prefab_id++;
+ prefab_id++;
if (engine->on_resize && engine->get_screen_size && engine->scene)
- engine->on_resize(engine, engine->get_screen_size(engine));
+ engine->on_resize(engine, engine->get_screen_size(engine));
return (0);
}
\ No newline at end of file
diff --git a/src/engine/discard_player.c b/src/engine/discard_player.c
index a01c970..46834e8 100644
--- a/src/engine/discard_player.c
+++ b/src/engine/discard_player.c
@@ -19,18 +19,18 @@ void engine_stop_music(gc_engine *engine)
void engine_on_resize(gc_engine *engine, gc_vector2 size)
{
- (void)engine;
- (void)size;
+ (void)engine;
+ (void)size;
}
gc_vector2 engine_get_screen_size(gc_engine *this)
{
- (void)this;
- return ((gc_vector2){0, 0});
+ (void)this;
+ return ((gc_vector2){0, 0});
}
gc_vector2 engine_get_cursor_pos(gc_engine *this)
{
- (void)this;
- return ((gc_vector2){0, 0});
+ (void)this;
+ return ((gc_vector2){0, 0});
}
\ No newline at end of file
diff --git a/src/engine/engine.c b/src/engine/engine.c
index cbfdec9..d63d72c 100644
--- a/src/engine/engine.c
+++ b/src/engine/engine.c
@@ -64,8 +64,8 @@ void engine_destroy(gc_engine *engine)
gc_engine *engine_create_more(gc_engine *engine)
{
- engine->get_cursor_pos = &engine_get_cursor_pos;
- return (engine);
+ engine->get_cursor_pos = &engine_get_cursor_pos;
+ return (engine);
}
gc_engine *engine_create(void)
@@ -86,11 +86,8 @@ gc_engine *engine_create(void)
engine->play_music = &engine_play_music;
engine->stop_music = &engine_stop_music;
engine->destroy = &engine_destroy;
- engine->on_resize = &engine_on_resize;
- engine->event_listeners = NULL;
- engine->add_event_listener = &engine_add_event_listener;
- engine->trigger_event = &engine_trigger_event;
- engine_add_builtin_systems(engine);
+ engine_setup_event(engine);
+ engine_add_builtin_systems(engine);
engine_add_buildin_components(engine);
engine_init_dataloaders(engine);
return (engine_create_more(engine));
diff --git a/src/engine/engine_dataloader.c b/src/engine/engine_dataloader.c
index a0c1b3c..db036b6 100644
--- a/src/engine/engine_dataloader.c
+++ b/src/engine/engine_dataloader.c
@@ -25,38 +25,38 @@ void engine_add_dataloader(gc_engine *engine, char *type, gc_loader loader)
gc_dataloader *engine_get_dataloader(gc_engine *this, const char *type)
{
- gc_dataloader *loader;
+ gc_dataloader *loader;
- for (gc_list *li = this->dataloaders; li; li = li->next) {
- loader = (gc_dataloader *)li->data;
- if (!my_strcmp(loader->type, type))
- return (loader);
- }
- return (NULL);
+ for (gc_list *li = this->dataloaders; li; li = li->next) {
+ loader = (gc_dataloader *)li->data;
+ if (!my_strcmp(loader->type, type))
+ return (loader);
+ }
+ return (NULL);
}
void engine_init_dataloaders(gc_engine *this)
{
- this->callbacks = NULL;
- this->dataloaders = NULL;
- this->add_dataloader = &engine_add_dataloader;
- this->get_dataloader = &engine_get_dataloader;
- this->add_callback = &engine_add_callback;
- this->add_dataloader(this, "tiles", &tile_texture_array_loader);
- ui_setup(this);
+ this->callbacks = NULL;
+ this->dataloaders = NULL;
+ this->add_dataloader = &engine_add_dataloader;
+ this->get_dataloader = &engine_get_dataloader;
+ this->add_callback = &engine_add_callback;
+ this->add_dataloader(this, "tiles", &tile_texture_array_loader);
+ ui_setup(this);
}
void engine_add_callback(gc_engine *this, char *name, callback_t func)
{
- gc_data *callback = malloc(sizeof(*callback));
+ gc_data *callback = malloc(sizeof(*callback));
- if (!this || !callback)
- return;
- callback->type = my_strdup("callback");
- callback->name = name;
- callback->destroy = NULL;
- callback->custom = func;
- LISTADD(this->callbacks, callback);
- if (this->scene)
- this->scene->callbacks = this->callbacks;
+ if (!this || !callback)
+ return;
+ callback->type = my_strdup("callback");
+ callback->name = name;
+ callback->destroy = NULL;
+ callback->custom = func;
+ LISTADD(this->callbacks, callback);
+ if (this->scene)
+ this->scene->callbacks = this->callbacks;
}
\ No newline at end of file
diff --git a/src/engine/engine_system_builder.c b/src/engine/engine_system_builder.c
index 2879261..74bab1e 100644
--- a/src/engine/engine_system_builder.c
+++ b/src/engine/engine_system_builder.c
@@ -39,7 +39,7 @@ void engine_add_builtin_systems(gc_engine *engine)
engine->add_system(engine, &friction_system);
engine->add_system(engine, new_system(&tooltip_system));
engine->add_system(engine, new_system(&collision_system, engine->scene));
- clickable_manager_init(engine);
+ clickable_manager_init(engine);
}
int engine_use_sfml(gc_engine *engine, const char *title, int framerate)
diff --git a/src/engine/event_manager.c b/src/engine/event_manager.c
index fa970cd..7effde4 100644
--- a/src/engine/event_manager.c
+++ b/src/engine/event_manager.c
@@ -15,28 +15,36 @@
bool engine_add_event_listener(gc_engine *engine, const char *name, \
void (*func)(gc_engine *, va_list))
{
- struct gc_event_listener *node = malloc(sizeof(struct gc_event_listener));
- char *n_name = my_strdup(name);
+ struct gc_event_listener *node = malloc(sizeof(struct gc_event_listener));
+ char *n_name = my_strdup(name);
- if (!name || !node || !n_name)
- return (false);
- node->name = n_name;
- node->func = func;
- LISTADD(engine->event_listeners, node);
- return (true);
+ if (!name || !node || !n_name)
+ return (false);
+ node->name = n_name;
+ node->func = func;
+ LISTADD(engine->event_listeners, node);
+ return (true);
}
void engine_trigger_event(gc_engine *engine, const char *name, ...)
{
- gc_list *tmp = engine->event_listeners;
- va_list list;
+ gc_list *tmp = engine->event_listeners;
+ va_list list;
- while (tmp) {
- if (!my_strcmp(((struct gc_event_listener *)tmp->data)->name, name)) {
- va_start(list, name);
- ((struct gc_event_listener *) tmp->data)->func(engine, list);
- va_end(list);
- }
- tmp = tmp->next;
- }
+ while (tmp) {
+ if (!my_strcmp(((struct gc_event_listener *)tmp->data)->name, name)) {
+ va_start(list, name);
+ ((struct gc_event_listener *) tmp->data)->func(engine, list);
+ va_end(list);
+ }
+ tmp = tmp->next;
+ }
+}
+
+void engine_setup_event(gc_engine *engine)
+{
+ engine->on_resize = &engine_on_resize;
+ engine->event_listeners = NULL;
+ engine->add_event_listener = &engine_add_event_listener;
+ engine->trigger_event = &engine_trigger_event;
}
\ No newline at end of file
diff --git a/src/entity/entity.c b/src/entity/entity.c
index f602490..634b4f1 100644
--- a/src/entity/entity.c
+++ b/src/entity/entity.c
@@ -58,10 +58,10 @@ static void destroy(gc_entity *entity, gc_scene *scene)
gc_component *next = NULL;
for (gc_component *cmp = entity->components; cmp; cmp = next) {
- for (gc_tupple *tup = scene->entities_by_cmp; tup; tup = tup->next)
- if (!my_strcmp(tup->name, cmp->name))
- LISTREM(tup->entities, entity);
- LISTREM(scene->entities, entity);
+ for (gc_tupple *tup = scene->entities_by_cmp; tup; tup = tup->next)
+ if (!my_strcmp(tup->name, cmp->name))
+ LISTREM(tup->entities, entity);
+ LISTREM(scene->entities, entity);
next = cmp->next;
cmp->destroy(cmp);
}
diff --git a/src/entity/entity_factory.c b/src/entity/entity_factory.c
index 3bda380..a0e8d7d 100644
--- a/src/entity/entity_factory.c
+++ b/src/entity/entity_factory.c
@@ -14,7 +14,7 @@ const gc_entity entity_prefab;
gc_entity *entity_create(void)
{
- static unsigned int next_id = 0;
+ static unsigned int next_id = 0;
gc_entity *entity = malloc(sizeof(gc_entity));
if (!entity)
@@ -41,7 +41,7 @@ int entity_add(gc_scene *scene, gc_entity *e)
char *name;
if (!e)
- return (0);
+ return (0);
scene->entities = list_add(scene->entities, e);
if (!scene->entities)
return (-1);
diff --git a/src/scene/scene.c b/src/scene/scene.c
index 7d8326d..15c8b68 100644
--- a/src/scene/scene.c
+++ b/src/scene/scene.c
@@ -43,7 +43,7 @@ gc_scene *scene_create(gc_engine *engine, const char *xmlpath)
if (!scene || (xmlpath && !(n = xml_parse(xmlpath))))
return (NULL);
- scene->is_paused = false;
+ scene->is_paused = false;
scene->entities = NULL;
scene->entities_by_cmp = NULL;
scene->add_entity = &entity_add;
@@ -54,8 +54,8 @@ gc_scene *scene_create(gc_engine *engine, const char *xmlpath)
scene->get_callback = &scene_get_callback;
scene->load_entity = &scene_load_entity;
scene->callbacks = engine->callbacks;
- scene_load_data(engine, scene, n);
- prefab_loadentities(n, engine, scene);
+ scene_load_data(engine, scene, n);
+ prefab_loadentities(n, engine, scene);
xml_destroy(n);
return (scene);
}
@@ -76,11 +76,11 @@ int change_scene(gc_engine *engine, gc_scene *scene)
callback_t scene_get_callback(gc_scene *this, char *name)
{
- if (!name)
- return (NULL);
- for (gc_list *cal = this->callbacks; cal; cal = cal->next) {
- if (!my_strcmp(((gc_data *)cal->data)->name, name))
- return (((gc_data *)cal->data)->custom);
- }
- return (NULL);
+ if (!name)
+ return (NULL);
+ for (gc_list *cal = this->callbacks; cal; cal = cal->next) {
+ if (!my_strcmp(((gc_data *)cal->data)->name, name))
+ return (((gc_data *)cal->data)->custom);
+ }
+ return (NULL);
}
\ No newline at end of file
diff --git a/src/scene/scene_loader.c b/src/scene/scene_loader.c
index 93e48e5..eef7ddb 100644
--- a/src/scene/scene_loader.c
+++ b/src/scene/scene_loader.c
@@ -18,7 +18,7 @@
void scene_load_data(gc_engine *engine, gc_scene *scene, node *n)
{
gc_dataloader *loader;
- gc_data *data;
+ gc_data *data;
scene->data = NULL;
if (!(n = xml_getnode(n, "data")))
@@ -26,32 +26,32 @@ void scene_load_data(gc_engine *engine, gc_scene *scene, node *n)
for (n = n->child; n; n = n->next) {
loader = engine->get_dataloader(engine, n->name);
if (!loader) {
- my_printf(DATALOADER_NOT_FOUND, n->name);
- return;
- }
- data = loader->load(engine, scene, n);
+ my_printf(DATALOADER_NOT_FOUND, n->name);
+ return;
+ }
+ data = loader->load(engine, scene, n);
if (!data) {
- my_printf(DATALOADER_ERROR, xml_getproperty(n, "name"), n->name);
- return;
- }
+ my_printf(DATALOADER_ERROR, xml_getproperty(n, "name"), n->name);
+ return;
+ }
scene->data = list_add(scene->data, data);
}
}
void scene_load_entity(gc_scene *this, gc_engine *engine, node *n, int prefab)
{
- gc_dataloader *loader = engine->get_dataloader(engine, n->name);
- gc_data *data;
+ gc_dataloader *loader = engine->get_dataloader(engine, n->name);
+ gc_data *data;
- if (!loader) {
- my_printf(NO_CUSTOM_ENTITY_LOADER, n->name);
- return;
- }
- data = loader->load(engine, this, n);
- if (!data)
- return;
- for (gc_list *li = (gc_list *)data->custom; li; li = li->next) {
- ((gc_entity *)li->data)->prefab_id = prefab;
- this->add_entity(this, li->data);
- }
+ if (!loader) {
+ my_printf(NO_CUSTOM_ENTITY_LOADER, n->name);
+ return;
+ }
+ data = loader->load(engine, this, n);
+ if (!data)
+ return;
+ for (gc_list *li = (gc_list *)data->custom; li; li = li->next) {
+ ((gc_entity *)li->data)->prefab_id = prefab;
+ this->add_entity(this, li->data);
+ }
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_dataloaders.c b/src/sfml_renderer/sfml_dataloaders.c
index a249ee8..3df8804 100644
--- a/src/sfml_renderer/sfml_dataloaders.c
+++ b/src/sfml_renderer/sfml_dataloaders.c
@@ -18,9 +18,9 @@ gc_data *sfml_music_loader(gc_engine *engine, gc_scene *scene, node *n)
gc_data *data = malloc(sizeof(*data));
if (!data)
- return (NULL);
- data->type = my_strdup(n->name);
- data->name = xml_getproperty(n, "src");
+ return (NULL);
+ data->type = my_strdup(n->name);
+ data->name = xml_getproperty(n, "src");
if (!data->name || !data->type)
return (NULL);
data->custom = sfMusic_createFromFile(data->name);
@@ -32,34 +32,34 @@ gc_data *sfml_music_loader(gc_engine *engine, gc_scene *scene, node *n)
gc_data *sfml_sprite_loader(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_data *data = malloc(sizeof(*data));
+ gc_data *data = malloc(sizeof(*data));
- if (!data)
- return (NULL);
- data->type = my_strdup(n->name);
+ if (!data)
+ return (NULL);
+ data->type = my_strdup(n->name);
data->name = xml_getproperty(n, "src");
if (!data->name || !data->type)
- return (NULL);
+ return (NULL);
data->custom = sfTexture_createFromFile(data->name, NULL);
if (!data->custom)
return (NULL);
sfTexture_setRepeated(data->custom, sfTrue);
data->destroy = &sfml_texture_destroy;
- if (xml_hasproperty(n, "name"))
- data->name = xml_getproperty(n, "name");
+ if (xml_hasproperty(n, "name"))
+ data->name = xml_getproperty(n, "name");
return (data);
}
gc_data *sfml_font_loader(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_data *data = malloc(sizeof(*data));
+ gc_data *data = malloc(sizeof(*data));
- if (!data)
- return (NULL);
- data->type = my_strdup(n->name);
+ if (!data)
+ return (NULL);
+ data->type = my_strdup(n->name);
data->name = xml_getproperty(n, "src");
if (!data->name || !data->type)
- return (NULL);
+ return (NULL);
data->custom = sfFont_createFromFile(data->name);
if (!data->custom)
return (NULL);
@@ -69,14 +69,14 @@ gc_data *sfml_font_loader(gc_engine *engine, gc_scene *scene, node *n)
gc_data *sfml_camera(gc_engine *engine, gc_scene *scene, node *n)
{
- struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
+ struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
- if (!rend)
- my_printf("The sfml is not found. Could not change the position\
+ if (!rend)
+ my_printf("The sfml is not found. Could not change the position\
of the camera.\n");
- sfView_setCenter(rend->view, (sfVector2f){
- xml_getfloatprop(n, "x"),
- -xml_getfloatprop(n, "y")
- });
- return (NULL);
+ sfView_setCenter(rend->view, (sfVector2f){
+ xml_getfloatprop(n, "x"),
+ -xml_getfloatprop(n, "y")
+ });
+ return (NULL);
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_drawer.c b/src/sfml_renderer/sfml_drawer.c
index e49bee7..e8f5e0e 100644
--- a/src/sfml_renderer/sfml_drawer.c
+++ b/src/sfml_renderer/sfml_drawer.c
@@ -17,48 +17,50 @@
void sfmlrenderer_setorigin(struct sfml_renderer_system *renderer, \
gc_entity *entity, gc_sprite *sprite, struct transform_component *tra)
{
- sfVector2f scale = (sfVector2f){
- tra->size.x * sprite->scale.x / sprite->rect.width,
- tra->size.y * sprite->scale.y / sprite->rect.height
- };
+ sfVector2f scale = (sfVector2f){
+ tra->size.x * sprite->scale.x / sprite->rect.width,
+ tra->size.y * sprite->scale.y / sprite->rect.height
+ };
- sfSprite_setScale(renderer->sprite, scale);
- if (entity->has_component(entity, "fixed_to_cam"))
- sfSprite_setOrigin(renderer->sprite, (sfVector2f) {
- sprite->rect.width / 2,
- sprite->rect.height / 2
- });
- else
- sfSprite_setOrigin(renderer->sprite, (sfVector2f){
- scale.x < 0 ? sprite->rect.width : 0,
- scale.y < 0 ? sprite->rect.height : 0
- });
+ sfSprite_setScale(renderer->sprite, scale);
+ if (entity->has_component(entity, "fixed_to_cam"))
+ sfSprite_setOrigin(renderer->sprite, (sfVector2f) {
+ sprite->rect.width / 2,
+ sprite->rect.height / 2
+ });
+ else
+ sfSprite_setOrigin(renderer->sprite, (sfVector2f){
+ scale.x < 0 ? sprite->rect.width : 0,
+ scale.y < 0 ? sprite->rect.height : 0
+ });
}
-void sfmlrenderer_draw_texture(struct sfml_renderer_system *renderer, \
-struct transform_component *tra, gc_entity *entity, gc_sprite *sprite)
+void sfmlrenderer_draw_texture(gc_engine *engine, gc_entity *entity, \
+gc_sprite *sprite, float dt)
{
+ struct transform_component *tra = GETCMP(entity, transform_component);
sfVector2f pos = (sfVector2f){tra->position.x, -tra->position.y};
+ struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
sprite->pos = tra->position;
if (!sprite->texture) {
- my_printf("Trying to render a sprite without texture.\n");
- return;
- }
- sfSprite_setTexture(renderer->sprite, sprite->texture, true);
- sfSprite_setTextureRect(renderer->sprite, (sfIntRect){
+ my_printf("Trying to render a sprite without texture.\n");
+ return;
+ }
+ sfSprite_setTexture(rend->sprite, sprite->texture, true);
+ sfSprite_setTextureRect(rend->sprite, (sfIntRect){
sprite->rect.left, sprite->rect.top,
sprite->rect.width, sprite->rect.height
});
- sfSprite_setPosition(renderer->sprite, pos);
- sfmlrenderer_setorigin(renderer, entity, sprite, tra);
- sfRenderWindow_drawSprite(renderer->window, renderer->sprite, NULL);
+ sfSprite_setPosition(rend->sprite, pos);
+ sfmlrenderer_setorigin(rend, entity, sprite, tra);
+ sfRenderWindow_drawSprite(rend->window, rend->sprite, NULL);
}
-void sfmlrenderer_draw_anim(struct sfml_renderer_system *renderer, \
-gc_entity *entity, gc_animholder *holder, float dtime)
+void sfmlrenderer_draw_anim(gc_engine *engine, gc_entity *entity, \
+gc_animholder *holder, float dtime)
{
- struct transform_component *tra = GETCMP(entity, transform_component);
+ struct transform_component *tra = GETCMP(entity, transform_component);
gc_int_rect *rec = &holder->sprite->rect;
gc_anim *curr = holder->current;
@@ -70,30 +72,31 @@ gc_entity *entity, gc_animholder *holder, float dtime)
if (rec->left > curr->rect.left + rec->width * (curr->frame_count - 1))
rec->left = curr->rect.left;
}
- sfmlrenderer_draw_texture(renderer, tra, entity, holder->sprite);
+ sfmlrenderer_draw_texture(engine, entity, holder->sprite, dtime);
}
-void sfmlrenderer_draw_txt(gc_engine *engine, \
-struct sfml_renderer_system *renderer, struct transform_component *tra, \
-gc_text *txt)
+void sfmlrenderer_draw_txt(gc_engine *engine, gc_entity *entity, \
+gc_text *txt, float dt)
{
- sfFloatRect bounds;
- float size = 1;
+ struct sfml_renderer_system *this = GETSYS(engine, sfml_renderer_system);
+ struct transform_component *tra = GETCMP(entity, transform_component);
+ sfFloatRect bounds;
+ float size = 1;
- if (txt->resize)
- size = 800 / engine->get_screen_size(engine).x;
- sfText_setString(renderer->text, txt->text);
+ if (txt->resize)
+ size = 800 / engine->get_screen_size(engine).x;
+ sfText_setString(this->text, txt->text);
if (!txt->font)
- my_printf("%s has a font not loaded. Rendering impossible.", txt->font);
- sfText_setFont(renderer->text, txt->font);
- sfText_setCharacterSize(renderer->text, txt->size / size);
- bounds = sfText_getLocalBounds(renderer->text);
+ my_printf("%s has a font not loaded. Rendering impossible.", txt->font);
+ sfText_setFont(this->text, txt->font);
+ sfText_setCharacterSize(this->text, txt->size / size);
+ bounds = sfText_getLocalBounds(this->text);
tra->size.x = bounds.width;
tra->size.y = bounds.height;
- sfText_setColor(renderer->text, *(sfColor*)&txt->color);
- sfText_setPosition(renderer->text, (sfVector2f){
+ sfText_setColor(this->text, *(sfColor*)&txt->color);
+ sfText_setPosition(this->text, (sfVector2f){
tra->position.x - bounds.width / 2,
-tra->position.y - bounds.height
});
- sfRenderWindow_drawText(renderer->window, renderer->text, NULL);
+ sfRenderWindow_drawText(this->window, this->text, NULL);
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_events.c b/src/sfml_renderer/sfml_events.c
index 8290b7c..fb0c60d 100644
--- a/src/sfml_renderer/sfml_events.c
+++ b/src/sfml_renderer/sfml_events.c
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 2/27/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** sfml_events
+*/
#include "engine.h"
#include
@@ -13,58 +16,55 @@ void sfml_handle_events(gc_engine *engine)
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
sfEvent event;
- while (sfRenderWindow_pollEvent(rend->window, &event))
- switch (event.type) {
- case sfEvtClosed:
- sfRenderWindow_close(rend->window);
- break;
- case sfEvtResized:
+ while (sfRenderWindow_pollEvent(rend->window, &event))
+ switch (event.type) {
+ case sfEvtClosed:
+ sfRenderWindow_close(rend->window);
+ break;
+ case sfEvtResized:
engine->on_resize(engine, (gc_vector2){event.size.width, event.size.height});
- break;
- case sfEvtMouseButtonReleased:
- if (event.mouseButton.button == sfMouseLeft)
- engine->trigger_event(engine, "mouse_click", GC_LEFT);
- if (event.mouseButton.button == sfMouseRight)
- engine->trigger_event(engine, "mouse_click", GC_RIGHT);
- break;
- case sfEvtKeyReleased:
- engine->trigger_event(engine, "key_pressed", event.key.code);
- break;
- default:
- break;
- }
+ break;
+ case sfEvtMouseButtonReleased:
+ if (event.mouseButton.button == sfMouseLeft)
+ engine->trigger_event(engine, "mouse_click", GC_LEFT);
+ if (event.mouseButton.button == sfMouseRight)
+ engine->trigger_event(engine, "mouse_click", GC_RIGHT);
+ break;
+ case sfEvtKeyReleased:
+ engine->trigger_event(engine, "key_pressed", event.key.code);
+ }
}
gc_vector2 sfml_engine_get_cursor_pos(gc_engine *engine)
{
- struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
- sfVector2i pos;
- gc_vector2 ret;
- sfVector2f pos2;
+ struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
+ sfVector2i pos;
+ gc_vector2 ret;
+ sfVector2f pos2;
- pos = sfMouse_getPositionRenderWindow(rend->window);
- pos2 = sfRenderWindow_mapPixelToCoords(rend->window, pos, rend->view);
- ret.x = pos2.x;
- ret.y = pos2.y;
- ret.y *= -1;
- return (ret);
+ pos = sfMouse_getPositionRenderWindow(rend->window);
+ pos2 = sfRenderWindow_mapPixelToCoords(rend->window, pos, rend->view);
+ ret.x = pos2.x;
+ ret.y = pos2.y;
+ ret.y *= -1;
+ return (ret);
}
void sfml_resize(gc_engine *engine, gc_vector2 size)
{
- struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
+ struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
- sfView_setSize(rend->view, (sfVector2f){
- size.x,
- size.y
- });
- entities_update_to_cam_size(engine->scene, size);
+ sfView_setSize(rend->view, (sfVector2f){
+ size.x,
+ size.y
+ });
+ entities_update_to_cam_size(engine->scene, size);
}
gc_vector2 sfml_get_screen_size(gc_engine *engine)
{
- struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
- sfVector2u size = sfRenderWindow_getSize(rend->window);
+ struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
+ sfVector2u size = sfRenderWindow_getSize(rend->window);
- return (gc_vector2){size.x, size.y};
+ return (gc_vector2){size.x, size.y};
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_functions.c b/src/sfml_renderer/sfml_functions.c
index e75a2fe..8fd56e5 100644
--- a/src/sfml_renderer/sfml_functions.c
+++ b/src/sfml_renderer/sfml_functions.c
@@ -45,8 +45,8 @@ void sfml_draw(gc_engine *engine)
-cam->cam_pos.y
});
}
- entities_update_to_cam(engine->scene, rend);
- sfRenderWindow_setView(rend->window, rend->view);
+ entities_update_to_cam(engine->scene, rend);
+ sfRenderWindow_setView(rend->window, rend->view);
sfRenderWindow_display(rend->window);
sfRenderWindow_clear(rend->window, sfBlack);
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_init.c b/src/sfml_renderer/sfml_init.c
index bf9a715..6fdcb59 100644
--- a/src/sfml_renderer/sfml_init.c
+++ b/src/sfml_renderer/sfml_init.c
@@ -11,29 +11,29 @@
sfRenderStates *sfml_init_render_state(void)
{
- sfRenderStates *states = malloc(sizeof(sfRenderStates));
+ sfRenderStates *states = malloc(sizeof(sfRenderStates));
- if (!states)
- return (NULL);
- states->texture = NULL;
- states->blendMode = sfBlendAlpha;
- states->shader = NULL;
- states->transform = sfTransform_Identity;
- return (states);
+ if (!states)
+ return (NULL);
+ states->texture = NULL;
+ states->blendMode = sfBlendAlpha;
+ states->shader = NULL;
+ states->transform = sfTransform_Identity;
+ return (states);
}
sfVertexArray *sfml_init_verticies(void)
{
- sfVertexArray *arr = sfVertexArray_create();
- sfVertex v[4] = {
- {.position = {0, 0}, .texCoords = {0, 0}, .color = sfWhite},
- {.position = {0, 0}, .texCoords = {64, 0}, .color = sfWhite},
- {.position = {0, 0}, .texCoords = {0, 64}, .color = sfWhite},
- {.position = {0, 0}, .texCoords = {64, 64}, .color = sfWhite}
- };
+ sfVertexArray *arr = sfVertexArray_create();
+ sfVertex v[4] = {
+ {.position = {0, 0}, .texCoords = {0, 0}, .color = sfWhite},
+ {.position = {0, 0}, .texCoords = {64, 0}, .color = sfWhite},
+ {.position = {0, 0}, .texCoords = {0, 64}, .color = sfWhite},
+ {.position = {0, 0}, .texCoords = {64, 64}, .color = sfWhite}
+ };
- for (int i = 0; i < 4; i++)
- sfVertexArray_append(arr, v[i]);
- sfVertexArray_setPrimitiveType(arr, sfTrianglesStrip);
- return (arr);
+ for (int i = 0; i < 4; i++)
+ sfVertexArray_append(arr, v[i]);
+ sfVertexArray_setPrimitiveType(arr, sfTrianglesStrip);
+ return (arr);
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_music_player.c b/src/sfml_renderer/sfml_music_player.c
index 94df285..fe3432c 100644
--- a/src/sfml_renderer/sfml_music_player.c
+++ b/src/sfml_renderer/sfml_music_player.c
@@ -21,6 +21,6 @@ void sfml_stop_music(gc_engine *engine)
if (!engine->scene)
return;
music = engine->scene->get_data(engine->scene, "music", NULL);
- if (music)
- sfMusic_stop(music);
+ if (music)
+ sfMusic_stop(music);
}
\ No newline at end of file
diff --git a/src/sfml_renderer/sfml_vertex.c b/src/sfml_renderer/sfml_vertex.c
index 895402e..3a66821 100644
--- a/src/sfml_renderer/sfml_vertex.c
+++ b/src/sfml_renderer/sfml_vertex.c
@@ -22,60 +22,62 @@
sfVector2f get_tile_coords(int x, int y, int z)
{
- return (sfVector2f){
- cos(ANGLE_X) * y * 64 - cos(ANGLE_X) * x * 64,
- (sin(ANGLE_Y) * x * 64 + sin(ANGLE_Y) * y * 64 - z)
- };
+ return (sfVector2f){
+ cos(ANGLE_X) * y * 64 - cos(ANGLE_X) * x * 64,
+ (sin(ANGLE_Y) * x * 64 + sin(ANGLE_Y) * y * 64 - z)
+ };
}
void draw_tile(struct sfml_renderer_system *this, gc_vector2 offset, \
struct tile *tile, bool hovered)
{
- sfVertex *v[4];
- int c[3];
- int vertex_order[4] = {0, 1, 3, 2};
+ sfVertex *v[4];
+ int c[3];
+ int vertex_order[4] = {0, 1, 3, 2};
- if (tile->corners[0]->z == INT32_MAX || !tile->corners[2]->y)
- return;
- for (int j = 0; j < (tile->data & 3); j++) {
- int tmp = vertex_order[0];
- for (int i = 0; i < 3; i++)
- vertex_order[i] = vertex_order[i + 1];
- vertex_order[3] = tmp;
- }
- for (int i = 0; i < 4; i++) {
- v[i] = sfVertexArray_getVertex(this->vertices, vertex_order[i]);
- c[0] = tile->corners[i]->x;
- c[1] = tile->corners[i]->y;
- c[2] = tile->corners[i]->z;
- v[i]->position = get_tile_coords(c[0], c[1], c[2]);
- v[i]->position.x += offset.x;
- v[i]->position.y += offset.y;
- if (hovered)
- v[i]->color = (sfColor) {180, 180, 180, 255};
- }
- this->states->texture = (sfTexture *) tile->texture;
- sfRenderWindow_drawVertexArray(this->window, this->vertices, this->states);
- if (hovered)
- for (int i = 0; i < 4; i++)
- v[i]->color = sfWhite;
- this->states->texture = NULL;
+ if (tile->corners[0]->z == INT32_MAX || !tile->corners[2]->y)
+ return;
+ for (int j = 0; j < (tile->data & 3); j++) {
+ int tmp = vertex_order[0];
+ for (int i = 0; i < 3; i++)
+ vertex_order[i] = vertex_order[i + 1];
+ vertex_order[3] = tmp;
+ }
+ for (int i = 0; i < 4; i++) {
+ v[i] = sfVertexArray_getVertex(this->vertices, vertex_order[i]);
+ c[0] = tile->corners[i]->x;
+ c[1] = tile->corners[i]->y;
+ c[2] = tile->corners[i]->z;
+ v[i]->position = get_tile_coords(c[0], c[1], c[2]);
+ v[i]->position.x += offset.x;
+ v[i]->position.y += offset.y;
+ if (hovered)
+ v[i]->color = (sfColor) {180, 180, 180, 255};
+ }
+ this->states->texture = (sfTexture *) tile->texture;
+ sfRenderWindow_drawVertexArray(this->window, this->vertices, this->states);
+ if (hovered)
+ for (int i = 0; i < 4; i++)
+ v[i]->color = sfWhite;
+ this->states->texture = NULL;
}
-void sfmlrenderer_draw_tilemap(struct sfml_renderer_system *this, \
-struct transform_component *pos, struct vertex_component *info)
+void sfmlrenderer_draw_tilemap(gc_engine *engine, gc_entity *entity, \
+struct vertex_component *info, float dt)
{
- sfVector2i vec = sfMouse_getPosition((const sfWindow *) this->window);
- sfVector2f wp = sfRenderWindow_mapPixelToCoords(this->window, vec, this->view);
- wp.y *= -1;
- int i;
- struct tile *tl;
+ struct sfml_renderer_system *this = GETSYS(engine, sfml_renderer_system);
+ struct transform_component *pos = GETCMP(entity, transform_component);
+ sfVector2i v = sfMouse_getPosition((const sfWindow *) this->window);
+ sfVector2f w = sfRenderWindow_mapPixelToCoords(this->window, v, this->view);
+ w.y *= -1;
+ int i;
+ struct tile *tl;
- if (!info || !info->map)
- return;
- tl = get_tile_from_pos(info, (gc_vector2){wp.x, wp.y});
- for (i = 0; info->map[i].corners[0]; i++);
+ if (!info || !info->map)
+ return;
+ tl = get_tile_from_pos(info, (gc_vector2){w.x, wp.y});
+ for (i = 0; info->map[i].corners[0]; i++);
for (i--; i >= 0; i--) {
- draw_tile(this, pos->position, &info->map[i], &info->map[i] == tl);
+ draw_tile(this, pos->position, &info->map[i], &info->map[i] == tl);
}
}
\ No newline at end of file
diff --git a/src/systems/camera_follow_system.c b/src/systems/camera_follow_system.c
index 7adae56..70a1f7e 100644
--- a/src/systems/camera_follow_system.c
+++ b/src/systems/camera_follow_system.c
@@ -23,7 +23,7 @@ gc_entity *entity, float dtime)
sys->cam_pos.x = (sys->cam_pos.x + tra->position.x) / 2;
sys->cam_pos.y = (sys->cam_pos.y + tra->position.y) / 2;
- sys->enabled = true;
+ sys->enabled = true;
(void)engine;
(void)dtime;
}
diff --git a/src/systems/clickable_manager.c b/src/systems/clickable_manager.c
index c497442..facbeb4 100644
--- a/src/systems/clickable_manager.c
+++ b/src/systems/clickable_manager.c
@@ -15,39 +15,36 @@
static inline bool collide(struct transform_component *tra, gc_vector2 position)
{
- return (tra->position.x - tra->size.x / 2) <= position.x
- && (tra->position.y + tra->size.y / 2) >= position.y
- && (tra->position.x + tra->size.x / 2) >= position.x
- && (tra->position.y - tra->size.y / 2) <= position.y;
+ return (tra->position.x - tra->size.x / 2) <= position.x
+ && (tra->position.y + tra->size.y / 2) >= position.y
+ && (tra->position.x + tra->size.x / 2) >= position.x
+ && (tra->position.y - tra->size.y / 2) <= position.y;
}
void clickable_onclick(gc_engine *engine, va_list list)
{
- enum gc_mousekeys key = va_arg(list, enum gc_mousekeys);
- gc_scene *scene = engine->scene;
- gc_vector2 position = engine->get_cursor_pos(engine);
- gc_list *entities = NULL;
- struct transform_component *tra;
- struct clickable_component *cl;
+ enum gc_mousekeys key = va_arg(list, enum gc_mousekeys);
+ gc_scene *scene = engine->scene;
+ gc_vector2 position = engine->get_cursor_pos(engine);
+ gc_list *entities = scene->get_entity_by_cmp(scene, "clickable_component");
+ struct transform_component *tra;
+ struct clickable_component *cl;
- if (!scene)
- return;
- entities = scene->get_entity_by_cmp(scene, "clickable_component");
- if (!entities)
- return;
- while (entities->next)
- entities = entities->next;
- for (gc_list *ent = entities; ent; ent = ent->prev) {
- tra = GETCMP(((gc_entity *)ent->data), transform_component);
- if (!collide(tra, position))
- continue;
- cl = GETCMP(((gc_entity *)ent->data), clickable_component);
- if (cl->onclick && cl->onclick(engine, ent->data, position, key))
- return;
- }
+ if (!entities)
+ return;
+ while (entities->next)
+ entities = entities->next;
+ for (gc_list *ent = entities; ent; ent = ent->prev) {
+ tra = GETCMP(((gc_entity *)ent->data), transform_component);
+ if (!collide(tra, position))
+ continue;
+ cl = GETCMP(((gc_entity *)ent->data), clickable_component);
+ if (cl->onclick && cl->onclick(engine, ent->data, position, key))
+ return;
+ }
}
void clickable_manager_init(struct gc_engine *engine)
{
- engine->add_event_listener(engine, "mouse_click", &clickable_onclick);
+ engine->add_event_listener(engine, "mouse_click", &clickable_onclick);
}
\ No newline at end of file
diff --git a/src/systems/fixed_to_cam_pseudosystem.c b/src/systems/fixed_to_cam_pseudosystem.c
index b673a0f..c2b4a57 100644
--- a/src/systems/fixed_to_cam_pseudosystem.c
+++ b/src/systems/fixed_to_cam_pseudosystem.c
@@ -21,18 +21,18 @@ struct sfml_renderer_system *renderer)
gc_list *list = scene->get_entity_by_cmp(scene, "fixed_to_cam");
for (gc_list *li = list; li; li = li->next) {
- gc_entity *entity = (gc_entity *)li->data;
- struct transform_component *tra = GETCMP(entity, transform_component);
- struct fixed_to_cam *fc = GETCMP(entity, fixed_to_cam);
- sfVector2f size = sfView_getSize(renderer->view);
- sfVector2f pos = sfView_getCenter(renderer->view);
- float x = pos.x - size.x / 2;
- float y = -pos.y + size.y / 2;
+ gc_entity *entity = (gc_entity *)li->data;
+ struct transform_component *tra = GETCMP(entity, transform_component);
+ struct fixed_to_cam *fc = GETCMP(entity, fixed_to_cam);
+ sfVector2f size = sfView_getSize(renderer->view);
+ sfVector2f pos = sfView_getCenter(renderer->view);
+ float x = pos.x - size.x / 2;
+ float y = -pos.y + size.y / 2;
- if (!tra)
- continue;
- x += fc->pos.x * (fc->per_x ? size.x / 100 : 1);
- y -= fc->pos.y * (fc->per_y ? size.y / 100 : 1);
+ if (!tra)
+ continue;
+ x += fc->pos.x * (fc->per_x ? size.x / 100 : 1);
+ y -= fc->pos.y * (fc->per_y ? size.y / 100 : 1);
tra->position = (gc_vector2){x, y};
}
}
@@ -53,11 +53,11 @@ void entities_update_to_cam_size(gc_scene *scene, gc_vector2 size)
continue;
tra->size = (gc_vector2) {
fc->per_w ? size.x * fc->size_x / 100 : tra->size.x,
- fc->per_h ? size.y * fc->size_y / 100 : tra->size.y
+ fc->per_h ? size.y * fc->size_y / 100 : tra->size.y
};
if (fc->per_w && fc->size_x == 0)
- tra->size.x = tra->size.y;
- if (fc->per_h && fc->size_y == 0)
- tra->size.y = tra->size.x;
+ tra->size.x = tra->size.y;
+ if (fc->per_h && fc->size_y == 0)
+ tra->size.y = tra->size.x;
}
}
\ No newline at end of file
diff --git a/src/systems/sfml_renderer_system.c b/src/systems/sfml_renderer_system.c
index 4c9c1b8..6c9a4eb 100644
--- a/src/systems/sfml_renderer_system.c
+++ b/src/systems/sfml_renderer_system.c
@@ -19,46 +19,40 @@
gc_vector2 sfml_get_text_size(sf_renderer *this, gc_text *text)
{
- sfFloatRect bounds;
+ sfFloatRect bounds;
- sfText_setString(this->text, text->text);
- sfText_setFont(this->text, text->font);
- bounds = sfText_getLocalBounds(this->text);
- return (gc_vector2) {bounds.width * 1.3, bounds.height * 2.5};
+ sfText_setString(this->text, text->text);
+ sfText_setFont(this->text, text->font);
+ bounds = sfText_getLocalBounds(this->text);
+ return (gc_vector2) {bounds.width * 1.3, bounds.height * 2.5};
}
+static const void (*drawers[])(gc_engine *, gc_entity *, void *, float) = {
+ &sfmlrenderer_draw_texture,
+ &sfmlrenderer_draw_anim,
+ &sfmlrenderer_draw_txt,
+ &sfmlrenderer_draw_tilemap,
+ NULL
+};
+
void sfml_update_entity(gc_engine *engine, void *system, \
gc_entity *entity, float dt)
{
- struct transform_component *pos = GETCMP(entity, transform_component);
struct renderer *text = GETCMP(entity, renderer);
- struct sfml_renderer_system *rend = (struct sfml_renderer_system *)system;
if (!text->data || !text->is_visible)
return;
- switch (text->type) {
- case GC_TEXTUREREND:
- sfmlrenderer_draw_texture(rend, pos, entity, (gc_sprite *)text->data);
- break;
- case GC_ANIMREND:
- sfmlrenderer_draw_anim(rend, entity, (gc_animholder *)text->data, dt);
- break;
- case GC_TXTREND:
- sfmlrenderer_draw_txt(engine, rend, pos, (gc_text *)text->data);
- break;
- case GC_MAP:
- sfmlrenderer_draw_tilemap(rend, pos, text->data);
- break;
- default:
+ if (text->type > 3) {
my_printf("Trying to render a texture with an unknown type.\n");
- break;
+ return;
}
+ drawers[text->type](engine, entity, text->data, dt);
}
void sfml_setup_options(struct sfml_renderer_system *this, gc_engine *engine)
{
- this->is_fullscreen = false;
- this->resolution = (gc_vector2i){800, 600};
+ this->is_fullscreen = false;
+ this->resolution = (gc_vector2i){800, 600};
engine->is_open = &sfml_is_open;
engine->has_focus = &sfml_has_focus;
engine->is_keypressed = &sfml_is_keypressed;
@@ -79,13 +73,13 @@ void sfmlrend_ctr(void *rend, va_list list)
const char *title = va_arg(list, const char *);
this->framerate = va_arg(list, int);
- this->get_text_size = &sfml_get_text_size;
- this->window = sfRenderWindow_create(mode, title, sfDefaultStyle, NULL);
- this->sprite = sfSprite_create();
- this->view = sfView_create();
- this->text = sfText_create();
- this->vertices = sfml_init_verticies();
- this->states = sfml_init_render_state();
+ this->get_text_size = &sfml_get_text_size;
+ this->window = sfRenderWindow_create(mode, title, sfDefaultStyle, NULL);
+ this->sprite = sfSprite_create();
+ this->view = sfView_create();
+ this->text = sfText_create();
+ this->vertices = sfml_init_verticies();
+ this->states = sfml_init_render_state();
if (!this->window || !this->sprite || \
!this->view || !this->text || !this->vertices || !this->states)
return;
diff --git a/src/systems/tooltip_system.c b/src/systems/tooltip_system.c
index 1647127..fbf0d28 100644
--- a/src/systems/tooltip_system.c
+++ b/src/systems/tooltip_system.c
@@ -19,18 +19,18 @@
static void update_entity(gc_engine *engine, void *system, \
gc_entity *entity, float dtime)
{
- struct tooltip_component *tt = GETCMP(entity, tooltip_component);
- struct transform_component *tra = tt->parent_transform;
- struct renderer *rend = GETCMP(entity, renderer);
- gc_vector2 pad = tt->padding;
- gc_vector2 position = engine->get_cursor_pos(engine);
+ struct tooltip_component *tt = GETCMP(entity, tooltip_component);
+ struct transform_component *tra = tt->parent_transform;
+ struct renderer *rend = GETCMP(entity, renderer);
+ gc_vector2 pad = tt->padding;
+ gc_vector2 position = engine->get_cursor_pos(engine);
- if (!tra)
- return;
- rend->is_visible = (tra->position.x - tra->size.x / 2 - pad.x) <= position.x
- && (tra->position.y + tra->size.y / 2 + pad.y) >= position.y
- && (tra->position.x + tra->size.x / 2 + pad.x) >= position.x
- && (tra->position.y - tra->size.y / 2 - pad.y) <= position.y;
+ if (!tra)
+ return;
+ rend->is_visible = (tra->position.x - tra->size.x / 2 - pad.x) <= position.x
+ && (tra->position.y + tra->size.y / 2 + pad.y) >= position.y
+ && (tra->position.x + tra->size.x / 2 + pad.x) >= position.x
+ && (tra->position.y - tra->size.y / 2 - pad.y) <= position.y;
}
static void ctr(void *system, va_list args)
@@ -38,12 +38,12 @@ static void ctr(void *system, va_list args)
}
const gc_system tooltip_system = {
- name: "tooltip_system",
- component_name: "tooltip_component",
- size: sizeof(gc_system),
- ctr: &ctr,
- dtr: NULL,
- check_dependencies: &system_check_dependencies,
- update_entity: &update_entity,
- destroy: &system_destroy
+ name: "tooltip_system",
+ component_name: "tooltip_component",
+ size: sizeof(gc_system),
+ ctr: &ctr,
+ dtr: NULL,
+ check_dependencies: &system_check_dependencies,
+ update_entity: &update_entity,
+ destroy: &system_destroy
};
\ No newline at end of file
diff --git a/src/ui/button.c b/src/ui/button.c
index 688a67a..eb76a5f 100644
--- a/src/ui/button.c
+++ b/src/ui/button.c
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 2/21/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** button
+*/
#include "engine.h"
#include "data.h"
@@ -21,71 +24,69 @@
gc_entity *background_from_text(gc_engine *engine, gc_scene *scene, node *n, \
gc_text *text)
{
- gc_entity *entity = entity_create();
- struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
- char *texture_name = xml_gettmpstring(n, "sprite", "button_background");
- sfTexture *texture = scene->get_data(scene, "sprite", texture_name);
- gc_vector2i s = {xml_getintprop(n, "width"), xml_getintprop(n, "height")};
- gc_vector2 ts;
+ gc_entity *entity = entity_create();
+ struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
+ char *texture_name = xml_gettmpstring(n, "sprite", "button_background");
+ sfTexture *texture = scene->get_data(scene, "sprite", texture_name);
+ gc_vector2i s = {xml_getintprop(n, "width"), xml_getintprop(n, "height")};
+ gc_vector2 ts;
- if (!rend)
- return (NULL);
- ts = rend->get_text_size(rend, text);
- if (!texture)
- my_printf("No texture defined for the button_background.\n");
- entity->add_component(entity, new_component(&transform_component,
- (gc_vector2){0, 0}, (gc_vector2){s.x ? s.x : ts.x, s.y ? s.y : ts.y}));
- entity->add_component(entity, new_component(&renderer_component,
- GC_TEXTUREREND, texture, (gc_int_rect){-1, -1, 0, 0}));
- entity->add_component(entity, new_component(&fixed_to_cam,
- (gc_vector2){xml_getintprop(n, "x"),xml_getintprop(n, "y")},
- true, true, s.x, s.y,
- xml_propcontains(n, "width", "%"), xml_propcontains(n, "height", "%")));
- return (entity);
+ if (!rend)
+ return (NULL);
+ ts = rend->get_text_size(rend, text);
+ if (!texture)
+ my_printf("No texture defined for the button_background.\n");
+ entity->add_component(entity, new_component(&transform_component,
+ (gc_vector2){0, 0}, (gc_vector2){s.x ? s.x : ts.x, s.y ? s.y : ts.y}));
+ entity->add_component(entity, new_component(&renderer_component,
+ GC_TEXTUREREND, texture, (gc_int_rect){-1, -1, 0, 0}));
+ entity->add_component(entity, new_component(&fixed_to_cam,
+ (gc_vector2){xml_getintprop(n, "x"),xml_getintprop(n, "y")},
+ true, true, s.x, s.y,
+ xml_propcontains(n, "width", "%"), xml_propcontains(n, "height", "%")));
+ return (entity);
}
gc_list *new_button(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_list *entities = NULL;
- gc_text text = (gc_text){
- xml_gettempprop(n, "text"),
- scene->get_data(scene, "font", NULL)
- };
- gc_entity *background = background_from_text(engine, scene, n, &text);
+ gc_list *entities = NULL;
+ gc_text text = (gc_text){xml_gettempprop(n, "text"),
+ scene->get_data(scene, "font", NULL)};
+ gc_entity *background = background_from_text(engine, scene, n, &text);
- if (!background)
- return (NULL);
- if (xml_hasproperty(n, "background_id"))
- background->id = xml_getintprop(n, "background_id");
- if (xml_getbool(n, "input", false))
- background->add_component(background, new_component(&input_component));
- background->add_component(background, new_component(&clickable_component,
- scene, xml_getproperty(n, "click")));
- if (xml_hasproperty(n, "tag"))
- background->add_component(background, new_component(&tag_component,
- xml_getproperty(n, "tag")));
- LISTADD(entities, background);
- LISTADD(entities, new_text(engine, scene, n));
- if (xml_hasproperty(n, "tooltip"))
- LISTADD(entities, tooltip_make(engine, scene, n, background));
- return (entities);
+ if (!background)
+ return (NULL);
+ if (xml_hasproperty(n, "background_id"))
+ background->id = xml_getintprop(n, "background_id");
+ if (xml_getbool(n, "input", false))
+ background->add_component(background, new_component(&input_component));
+ background->add_component(background, new_component(&clickable_component,
+ scene, xml_getproperty(n, "click")));
+ if (xml_hasproperty(n, "tag"))
+ background->add_component(background, new_component(&tag_component,
+ xml_getproperty(n, "tag")));
+ LISTADD(entities, background);
+ LISTADD(entities, new_text(engine, scene, n));
+ if (xml_hasproperty(n, "tooltip"))
+ LISTADD(entities, tooltip_make(engine, scene, n, background));
+ return (entities);
}
gc_data *button_make(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_data *data = malloc(sizeof(*data));
- gc_list *list = new_button(engine, scene, n);
- gc_component *cmp;
+ gc_data *data = malloc(sizeof(*data));
+ gc_list *list = new_button(engine, scene, n);
+ gc_component *cmp;
- if (!list)
- return (NULL);
- data->name = "button";
- data->type = "ui";
- data->destroy = NULL;
- data->custom = list;
- for (n = n->child; n; n = n->next) {
- cmp = deserialize_component(engine, list->data, scene, n);
- ((gc_entity *)list->data)->add_component(list->data, cmp);
- }
- return (data);
+ if (!list)
+ return (NULL);
+ data->name = "button";
+ data->type = "ui";
+ data->destroy = NULL;
+ data->custom = list;
+ for (n = n->child; n; n = n->next) {
+ cmp = deserialize_component(engine, list->data, scene, n);
+ ((gc_entity *)list->data)->add_component(list->data, cmp);
+ }
+ return (data);
}
\ No newline at end of file
diff --git a/src/ui/setup_ui.c b/src/ui/setup_ui.c
index ff41549..84aea3e 100644
--- a/src/ui/setup_ui.c
+++ b/src/ui/setup_ui.c
@@ -1,6 +1,9 @@
-//
-// Created by anonymus-raccoon on 2/21/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** setup_ui
+*/
#include "engine.h"
#include "data.h"
@@ -16,91 +19,91 @@
gc_entity *new_text(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_entity *entity;
+ gc_entity *entity;
- if (xml_hasproperty(n, "text_id"))
- entity = entity_create_with_id(xml_getintprop(n, "text_id"));
- else
- entity = entity_create();
- entity->add_component(entity, new_component(&transform_component,
- (gc_vector2){0, 0}, (gc_vector2){0, 0}));
- entity->add_component(entity, new_component(&renderer_component,
- GC_TXTREND, xml_getproperty(n, "text"),
- scene->get_data(scene, "font", NULL),
- xml_getintprop(n, "size"),
- xml_gettempprop(n, "color"), xml_getbool(n, "resize", true)));
- entity->add_component(entity, new_component(&fixed_to_cam,
- (gc_vector2){xml_getintprop(n, "x"),xml_getintprop(n, "y")},
- xml_propcontains(n, "x", "%"), xml_propcontains(n, "y", "%"),
- 0, 0, false, false));
- if (xml_hasproperty(n, "tag"))
- entity->add_component(entity, new_component(&tag_component,
- xml_getproperty(n, "tag")));
- return (entity);
+ if (xml_hasproperty(n, "text_id"))
+ entity = entity_create_with_id(xml_getintprop(n, "text_id"));
+ else
+ entity = entity_create();
+ entity->add_component(entity, new_component(&transform_component,
+ (gc_vector2){0, 0}, (gc_vector2){0, 0}));
+ entity->add_component(entity, new_component(&renderer_component,
+ GC_TXTREND, xml_getproperty(n, "text"),
+ scene->get_data(scene, "font", NULL),
+ xml_getintprop(n, "size"),
+ xml_gettempprop(n, "color"), xml_getbool(n, "resize", true)));
+ entity->add_component(entity, new_component(&fixed_to_cam,
+ (gc_vector2){xml_getintprop(n, "x"), xml_getintprop(n, "y")},
+ xml_propcontains(n, "x", "%"), xml_propcontains(n, "y", "%"),
+ 0, 0, false, false));
+ if (xml_hasproperty(n, "tag"))
+ entity->add_component(entity, new_component(&tag_component,
+ xml_getproperty(n, "tag")));
+ return (entity);
}
gc_entity *new_sprite(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_entity *entity = entity_create();
- char *src = xml_gettempprop(n, "src");
- sfTexture *texture = scene->get_data(scene, "sprite", src);
+ gc_entity *entity = entity_create();
+ char *src = xml_gettempprop(n, "src");
+ sfTexture *texture = scene->get_data(scene, "sprite", src);
- entity->add_component(entity, new_component(&transform_component,
- (gc_vector2){0, 0},
- (gc_vector2){xml_getintprop(n, "width"),xml_getintprop(n, "height")}));
- entity->add_component(entity, new_component(&renderer_component,
- GC_TEXTUREREND, texture, (sfIntRect){0, 0, -1, -1}));
- entity->add_component(entity, new_component(&fixed_to_cam,
- (gc_vector2){xml_getintprop(n, "x"),xml_getintprop(n, "y") },
- xml_propcontains(n, "x", "%"), xml_propcontains(n, "y", "%"),
- xml_getintprop(n, "width"), xml_getintprop(n, "height"),
- xml_propcontains(n, "width", "%"), xml_propcontains(n, "height", "%")));
- if (xml_hasproperty(n, "tag"))
- entity->add_component(entity, new_component(&tag_component,
- xml_getproperty(n, "tag")));
- return (entity);
+ entity->add_component(entity, new_component(&transform_component,
+ (gc_vector2){0, 0},
+ (gc_vector2){xml_getintprop(n, "width"), xml_getintprop(n, "height")}));
+ entity->add_component(entity, new_component(&renderer_component,
+ GC_TEXTUREREND, texture, (sfIntRect){0, 0, -1, -1}));
+ entity->add_component(entity, new_component(&fixed_to_cam,
+ (gc_vector2){xml_getintprop(n, "x"), xml_getintprop(n, "y") },
+ xml_propcontains(n, "x", "%"), xml_propcontains(n, "y", "%"),
+ xml_getintprop(n, "width"), xml_getintprop(n, "height"),
+ xml_propcontains(n, "width", "%"), xml_propcontains(n, "height", "%")));
+ if (xml_hasproperty(n, "tag"))
+ entity->add_component(entity, new_component(&tag_component,
+ xml_getproperty(n, "tag")));
+ return (entity);
}
gc_data *sprite_make(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_list *list = NULL;
- gc_data *data = malloc(sizeof(*data));
- gc_entity *sprite = new_sprite(engine, scene, n);
+ gc_list *list = NULL;
+ gc_data *data = malloc(sizeof(*data));
+ gc_entity *sprite = new_sprite(engine, scene, n);
- LISTADD(list, sprite);
- if (xml_hasproperty(n, "tooltip"))
- LISTADD(list, tooltip_make(engine, scene, n, sprite));
- data->name = "sprite";
- data->type = "ui";
- data->destroy = NULL;
- data->custom = list;
- return (data);
+ LISTADD(list, sprite);
+ if (xml_hasproperty(n, "tooltip"))
+ LISTADD(list, tooltip_make(engine, scene, n, sprite));
+ data->name = "sprite";
+ data->type = "ui";
+ data->destroy = NULL;
+ data->custom = list;
+ return (data);
}
gc_data *text_make(gc_engine *engine, gc_scene *scene, node *n)
{
- gc_list *list = NULL;
- gc_data *data = malloc(sizeof(*data));
- gc_component *cmp;
- gc_entity *txt = new_text(engine, scene, n);
+ gc_list *list = NULL;
+ gc_data *data = malloc(sizeof(*data));
+ gc_component *cmp;
+ gc_entity *txt = new_text(engine, scene, n);
- LISTADD(list, txt);
- if (xml_hasproperty(n, "tooltip"))
- LISTADD(list, tooltip_make(engine, scene, n, txt));
- for (n = n->child; n; n = n->next) {
- cmp = deserialize_component(engine, txt, scene, n);
- txt->add_component(txt, cmp);
- }
- data->name = "text";
- data->type = "ui";
- data->destroy = NULL;
- data->custom = list;
- return (data);
+ LISTADD(list, txt);
+ if (xml_hasproperty(n, "tooltip"))
+ LISTADD(list, tooltip_make(engine, scene, n, txt));
+ for (n = n->child; n; n = n->next) {
+ cmp = deserialize_component(engine, txt, scene, n);
+ txt->add_component(txt, cmp);
+ }
+ data->name = "text";
+ data->type = "ui";
+ data->destroy = NULL;
+ data->custom = list;
+ return (data);
}
void ui_setup(gc_engine *engine)
{
- engine->add_dataloader(engine, "button", &button_make);
- engine->add_dataloader(engine, "panel", &sprite_make);
- engine->add_dataloader(engine, "text", &text_make);
+ engine->add_dataloader(engine, "button", &button_make);
+ engine->add_dataloader(engine, "panel", &sprite_make);
+ engine->add_dataloader(engine, "text", &text_make);
}
\ No newline at end of file
diff --git a/src/ui/tooltip.c b/src/ui/tooltip.c
index 0e8944a..9301c91 100644
--- a/src/ui/tooltip.c
+++ b/src/ui/tooltip.c
@@ -1,6 +1,10 @@
-//
-// Created by anonymus-raccoon on 3/9/20.
-//
+/*
+** EPITECH PROJECT, 2020
+** My3D
+** File description:
+** tooltip
+*/
+
#include "engine.h"
#include "xml.h"
@@ -14,35 +18,35 @@
static void setup_position(gc_entity *entity, gc_scene *scene, node *n)
{
- entity->add_component(entity, new_component(&fixed_to_cam,
- (gc_vector2){
- xml_getintprop(n, "x") + xml_getintprop(n, "tooltip_x"),
- xml_getintprop(n, "y") - xml_getintprop(n, "tooltip_y")
- },
- xml_propcontains(n, "x", "%"),
- xml_propcontains(n, "y", "%"),
- 0, 0, false, false));
+ entity->add_component(entity, new_component(&fixed_to_cam,
+ (gc_vector2){
+ xml_getintprop(n, "x") + xml_getintprop(n, "tooltip_x"),
+ xml_getintprop(n, "y") - xml_getintprop(n, "tooltip_y")
+ },
+ xml_propcontains(n, "x", "%"),
+ xml_propcontains(n, "y", "%"),
+ 0, 0, false, false));
}
gc_entity *tooltip_make(gc_engine *engine, gc_scene *scene, node *n, \
gc_entity *parent)
{
- gc_entity *entity = entity_create();
+ gc_entity *entity = entity_create();
- if (!entity)
- return (NULL);
- entity->add_component(entity, new_component(&transform_component,
- (gc_vector2){0, 0}, (gc_vector2){0, 0}));
- entity->add_component(entity, new_component(&renderer_component,
- GC_TXTREND, xml_getproperty(n, "tooltip"),
- scene->get_data(scene, "font", NULL), xml_getintprop(n, "size"),
- xml_gettempprop(n, "color"), xml_getbool(n, "resize", true)));
- setup_position(entity, scene, n);
- entity->add_component(entity, new_component(&tooltip_component,
- GETCMP(parent, transform_component), xml_getfloatprop(n, "padding_x"),
- xml_getfloatprop(n, "padding_y")));
- if (xml_hasproperty(n, "tag"))
- entity->add_component(entity, new_component(&tag_component,
- xml_getproperty(n, "tag")));
- return (entity);
+ if (!entity)
+ return (NULL);
+ entity->add_component(entity, new_component(&transform_component,
+ (gc_vector2){0, 0}, (gc_vector2){0, 0}));
+ entity->add_component(entity, new_component(&renderer_component,
+ GC_TXTREND, xml_getproperty(n, "tooltip"),
+ scene->get_data(scene, "font", NULL), xml_getintprop(n, "size"),
+ xml_gettempprop(n, "color"), xml_getbool(n, "resize", true)));
+ setup_position(entity, scene, n);
+ entity->add_component(entity, new_component(&tooltip_component,
+ GETCMP(parent, transform_component), xml_getfloatprop(n, "padding_x"),
+ xml_getfloatprop(n, "padding_y")));
+ if (xml_hasproperty(n, "tag"))
+ entity->add_component(entity, new_component(&tag_component,
+ xml_getproperty(n, "tag")));
+ return (entity);
}
\ No newline at end of file
diff --git a/src/utility/list.c b/src/utility/list.c
index 598b8c0..b6d3354 100644
--- a/src/utility/list.c
+++ b/src/utility/list.c
@@ -14,15 +14,15 @@ gc_list *list_add(gc_list *list, void *obj)
if (!list) {
list = malloc(sizeof(gc_list));
- if (list)
- list->prev = NULL;
+ 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;
+ if (list->next)
+ list->next->prev = list;
list = list->next;
}
if (!list)
@@ -34,21 +34,21 @@ gc_list *list_add(gc_list *list, void *obj)
gc_list *list_remove(gc_list *list, void *obj)
{
- gc_list *listconst = list;
+ gc_list *listconst = list;
- if (!list)
- return (NULL);
- if (list->data == obj) {
- if (list->next)
- list->next->prev = NULL;
- return (list->next);
- }
- while (list->next && list->next->data != obj)
- list = list->next;
- if (!list->next)
- return (listconst);
- list->next = list->next->next;
- if (list->next)
- list->next->prev = list;
- return (listconst);
+ if (!list)
+ return (NULL);
+ if (list->data == obj) {
+ if (list->next)
+ list->next->prev = NULL;
+ return (list->next);
+ }
+ while (list->next && list->next->data != obj)
+ list = list->next;
+ if (!list->next)
+ return (listconst);
+ list->next = list->next->next;
+ if (list->next)
+ list->next->prev = list;
+ return (listconst);
}
\ No newline at end of file