diff --git a/Makefile b/Makefile
index 2867930..d0b6933 100644
--- a/Makefile
+++ b/Makefile
@@ -13,9 +13,11 @@ SRC = main.c \
src/components/live_component.c \
src/components/kill_component.c \
src/components/win_component.c \
+ src/components/timer_component.c \
src/systems/gravity_system.c \
src/systems/walk_system.c \
- src/systems/jump_system.c
+ src/systems/jump_system.c \
+ src/systems/timer_system.c
OBJ = $(SRC:%.c=%.o)
diff --git a/assets/fonts/roboto.ttf b/assets/fonts/roboto.ttf
new file mode 100644
index 0000000..2b6392f
Binary files /dev/null and b/assets/fonts/roboto.ttf differ
diff --git a/assets/maps/scrolling_map.txt b/assets/maps/scrolling_map.txt
deleted file mode 100644
index 081f0f4..0000000
--- a/assets/maps/scrolling_map.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-11111111111111111111111111111111111111111111111111111111111111111111111111111111
\ No newline at end of file
diff --git a/include/components/timer_component.h b/include/components/timer_component.h
new file mode 100644
index 0000000..8fd79c3
--- /dev/null
+++ b/include/components/timer_component.h
@@ -0,0 +1,18 @@
+/*
+** EPITECH PROJECT, 2019
+** Gamacon
+** File description:
+** gravity_component
+*/
+
+#pragma once
+
+#include "component.h"
+
+struct timer_component
+{
+ gc_component base;
+ float time_left;
+};
+
+extern const struct timer_component timer_component;
\ No newline at end of file
diff --git a/include/systems/timer_system.h b/include/systems/timer_system.h
new file mode 100644
index 0000000..bd518cd
--- /dev/null
+++ b/include/systems/timer_system.h
@@ -0,0 +1,12 @@
+/*
+** EPITECH PROJECT, 2019
+** MUL_my_runner_2019
+** File description:
+** texture_renderer_system
+*/
+
+#pragma once
+
+#include "system.h"
+
+extern const gc_system timer_system;
\ No newline at end of file
diff --git a/lib/gamacon b/lib/gamacon
index ded8579..a1e4936 160000
--- a/lib/gamacon
+++ b/lib/gamacon
@@ -1 +1 @@
-Subproject commit ded85794e01c6d9d8b2ac888937689cf45193f82
+Subproject commit a1e4936dba3d8de7905d433081cb62765497a97d
diff --git a/prefabs/game.gcprefab b/prefabs/game.gcprefab
index 3bc663f..5332ff8 100644
--- a/prefabs/game.gcprefab
+++ b/prefabs/game.gcprefab
@@ -7,6 +7,7 @@
+
@@ -54,7 +55,16 @@
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/timer_component.c b/src/components/timer_component.c
new file mode 100644
index 0000000..8070a1b
--- /dev/null
+++ b/src/components/timer_component.c
@@ -0,0 +1,49 @@
+/*
+** EPITECH PROJECT, 2020
+** Twac
+** File description:
+** timer_component
+*/
+
+#include "component.h"
+#include "components/timer_component.h"
+#include "utility.h"
+#include
+
+static void ctr(void *component, va_list args)
+{
+ struct timer_component *cmp = (struct timer_component *)component;
+
+ cmp->time_left = va_arg(args, double);
+}
+
+static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
+{
+ struct timer_component *cmp = (struct timer_component *)component;
+
+ cmp->time_left = xml_getintprop(n, "time");
+ (void)entity;
+ (void)scene;
+}
+
+static char *serialize(void *component)
+{
+ (void)component;
+ return (NULL);
+}
+
+const struct timer_component timer_component = {
+ base: {
+ name: "timer_component",
+ size: sizeof(struct timer_component),
+ dependencies: (char *[]){
+ "renderer",
+ NULL
+ },
+ ctr: &ctr,
+ fdctr: &fdctr,
+ dtr: NULL,
+ serialize: &serialize,
+ destroy: &component_destroy
+ }
+};
\ No newline at end of file
diff --git a/src/game_loader.c b/src/game_loader.c
index f8cea4e..850113d 100644
--- a/src/game_loader.c
+++ b/src/game_loader.c
@@ -6,6 +6,7 @@
*/
#include "engine.h"
+#include "components/renderer.h"
#include "runner.h"
#include "prefab.h"
#include "components/gravity_component.h"
@@ -14,9 +15,11 @@
#include "components/live_component.h"
#include "components/kill_component.h"
#include "components/win_component.h"
+#include "components/timer_component.h"
#include "systems/gravity_system.h"
#include "systems/walk_system.h"
#include "systems/jump_system.h"
+#include "systems/timer_system.h"
#include
#include
@@ -28,10 +31,12 @@ int register_customcmps(gc_engine *engine)
engine->add_system(engine, &gravity_system);
engine->add_system(engine, &walk_system);
engine->add_system(engine, &jump_system);
+ engine->add_system(engine, &timer_system);
engine->finish_physics(engine);
engine->add_component(engine, &live_component);
engine->add_component(engine, &kill_component);
engine->add_component(engine, &win_component);
+ engine->add_component(engine, &timer_component);
return (0);
}
diff --git a/src/systems/timer_system.c b/src/systems/timer_system.c
new file mode 100644
index 0000000..a58b9de
--- /dev/null
+++ b/src/systems/timer_system.c
@@ -0,0 +1,45 @@
+/*
+** EPITECH PROJECT, 2020
+** Twac
+** File description:
+** timer_system
+*/
+
+#include "entity.h"
+#include "system.h"
+#include "vector2.h"
+#include "utility.h"
+#include "components/timer_component.h"
+#include "components/renderer.h"
+#include "text.h"
+#include
+
+static void update_entity(gc_engine *engine, void *system, \
+gc_entity *entity, float dtime)
+{
+ struct renderer *rend = GETCMP(renderer);
+ struct timer_component *timer = GETCMP(timer_component);
+
+ if (!rend || rend->type != GC_TXTREND)
+ return;
+ timer->time_left -= dtime;
+ ((gc_text *)rend->data)->text = tostr((int)timer->time_left);
+ (void)system;
+ (void)engine;
+}
+
+static void destroy(void *system)
+{
+ (void)system;
+}
+
+const gc_system timer_system = {
+ name: "timer_system",
+ component_name: "timer_component",
+ size: sizeof(gc_system),
+ ctr: NULL,
+ dtr: NULL,
+ check_dependencies: &system_check_dependencies,
+ update_entity: &update_entity,
+ destroy: &destroy
+};
\ No newline at end of file