diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2188591..c13e85a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -234,7 +234,8 @@ add_executable(My3D
src/components/game_display.c
src/systems/game_display_system.c
src/teams/absent.c
- src/teams/forgot.c include/teams.h)
+ src/teams/forgot.c include/teams.h
+ src/systems/game_manager_system.c include/systems/game_manager_system.h)
add_compile_options(-W -Wall -Wextra -Wshadow)
diff --git a/assets/ui/martine_a_epi_marseille.png b/assets/ui/martine_a_epi_marseille.png
new file mode 100644
index 0000000..d5ca492
Binary files /dev/null and b/assets/ui/martine_a_epi_marseille.png differ
diff --git a/include/systems/game_manager_system.h b/include/systems/game_manager_system.h
new file mode 100644
index 0000000..fe18ffa
--- /dev/null
+++ b/include/systems/game_manager_system.h
@@ -0,0 +1,12 @@
+//
+// Created by anonymus-raccoon on 3/9/20.
+//
+
+#ifndef _GAME_MANAGER_SYSTEM_H_
+#define _GAME_MANAGER_SYSTEM_H_
+
+#include "system.h"
+
+const gc_system game_manager_system;
+
+#endif //_GAME_MANAGER_SYSTEM_H_
diff --git a/prefabs/go/happiness.gcprefab b/prefabs/go/happiness.gcprefab
new file mode 100644
index 0000000..9447199
--- /dev/null
+++ b/prefabs/go/happiness.gcprefab
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/prefabs/go/stupidity.gcprefab b/prefabs/go/stupidity.gcprefab
new file mode 100644
index 0000000..3bc4466
--- /dev/null
+++ b/prefabs/go/stupidity.gcprefab
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/game_loader.c b/src/game_loader.c
index 243d1a4..3c1923a 100644
--- a/src/game_loader.c
+++ b/src/game_loader.c
@@ -14,10 +14,12 @@
#include "teams.h"
#include "components/game_display.h"
#include "components/game_manager.h"
+#include "systems/game_manager_system.h"
int register_customcmps(gc_engine *engine)
{
engine->add_component(engine, &game_manager);
+ engine->add_system(engine, &game_manager_system);
engine->add_component(engine, &game_display);
engine->add_system(engine, &game_display_system);
engine->add_component(engine, &teams_component);
diff --git a/src/systems/game_manager_system.c b/src/systems/game_manager_system.c
new file mode 100644
index 0000000..a55d1a3
--- /dev/null
+++ b/src/systems/game_manager_system.c
@@ -0,0 +1,39 @@
+//
+// Created by anonymus-raccoon on 3/9/20.
+//
+
+#include "system.h"
+#include "components/game_manager.h"
+#include "prefab.h"
+
+static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
+float dtime)
+{
+ struct game_manager *manager = GETCMP(entity, game_manager);
+ gc_scene *gameover_scene = NULL;
+
+ if (manager->happiness <= 0)
+ gameover_scene = scene_create(engine, "prefabs/go/happiness.gcprefab");
+ if (manager->stupidity >= 100)
+ gameover_scene = scene_create(engine, "prefabs/go/stupidity.gcprefab");
+
+ if (gameover_scene)
+ engine->change_scene(engine, gameover_scene);
+}
+
+
+static void destroy(void *system)
+{
+ (void)system;
+}
+
+const gc_system game_manager_system = {
+ name: "game_cycle",
+ component_name: "game_manager",
+ 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