From 1156affb2ceae7319d38130d448241020092d80d Mon Sep 17 00:00:00 2001
From: AnonymusRaccoon
Date: Fri, 6 Mar 2020 17:35:21 +0100
Subject: [PATCH] Teams PM take down happiness
---
lib/gamacon | 2 +-
src/systems/teams_system.c | 19 +++++++++++++++----
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/lib/gamacon b/lib/gamacon
index 76101c2..da57b43 160000
--- a/lib/gamacon
+++ b/lib/gamacon
@@ -1 +1 @@
-Subproject commit 76101c299286c32f13c0917e01049b33848ff94b
+Subproject commit da57b43f45546cefb28a4b485eb7d5ca0d4e1d42
diff --git a/src/systems/teams_system.c b/src/systems/teams_system.c
index eef7412..6f9a4fb 100644
--- a/src/systems/teams_system.c
+++ b/src/systems/teams_system.c
@@ -13,13 +13,15 @@
#include
#include
#include
+#include
#include "my.h"
-static void move_teams_up(gc_scene *scene, float amount)
+static bool move_teams_up(gc_scene *scene, float amount)
{
gc_list *list = scene->get_entity_by_cmp(scene, "tag_component");
struct fixed_to_cam *fc;
struct tag_component *tc;
+ bool pm_timeout = false;
for (; list; list = list->next) {
tc = GETCMP(list->data, tag_component);
@@ -29,22 +31,31 @@ static void move_teams_up(gc_scene *scene, float amount)
if (!fc)
continue;
fc->pos.y -= amount;
- if (fc->pos.y < 15)
- ((gc_entity *)list->data)->destroy(list->data, scene);
+ if (fc->pos.y < 15) {
+ ((gc_entity *) list->data)->destroy(list->data, scene);
+ pm_timeout = true;
+ }
}
+ return (pm_timeout);
}
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime)
{
struct teams_component *team = GETCMP(entity, teams_component);
+ gc_scene *scene = engine->scene;
+ struct gc_list *m = scene->get_entity_by_cmp(scene, "game_manager");
+ struct game_manager *manager;
int index;
team->next_teams -= dtime;
if (team->next_teams < 0 && team->prefab_count) {
index = random() % team->prefab_count;
team->next_teams = team->delay;
- move_teams_up(engine->scene, team->prefabs_size[index]);
+ if (move_teams_up(engine->scene, team->prefabs_size[index]) && m) {
+ manager = GETCMP(m->data, game_manager);
+ manager->happiness -= 10;
+ }
prefab_load(engine, team->prefabs[index]);
}
}