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]); } }