From 045ce2301d7a303563521a4d7f98f439c1db86c1 Mon Sep 17 00:00:00 2001
From: AnonymusRaccoon
Date: Mon, 9 Mar 2020 12:04:32 +0100
Subject: [PATCH] Allowing teams'PM to be deleted
---
CMakeLists.txt | 1 +
assets/ui/clown.png | Bin 0 -> 13290 bytes
include/components/game_display.h | 3 ++-
include/components/game_manager.h | 1 +
include/components/teams_component.h | 2 ++
include/setup.h | 5 ++++-
lib/gamacon | 2 +-
prefabs/game.gcprefab | 7 ++++++-
prefabs/teams/absent.gcprefab | 4 ++--
src/components/game_display.c | 6 +++++-
src/components/game_manager.c | 2 ++
src/game_loader.c | 1 +
src/systems/game_display_system.c | 2 ++
src/systems/teams_system.c | 16 +++++++--------
src/teams/absent.c | 29 +++++++++++++++++++++++++++
15 files changed, 66 insertions(+), 15 deletions(-)
create mode 100644 assets/ui/clown.png
create mode 100644 src/teams/absent.c
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7c64376..8667f98 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -233,6 +233,7 @@ add_executable(My3D
include/components/game_display.h
src/components/game_display.c
src/systems/game_display_system.c
+ src/teams/absent.c
)
add_compile_options(-W -Wall -Wextra -Wshadow)
diff --git a/assets/ui/clown.png b/assets/ui/clown.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4670e7e870372c0274a87a93fb3cf884ebbf5f3
GIT binary patch
literal 13290
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
literal 0
HcmV?d00001
diff --git a/include/components/game_display.h b/include/components/game_display.h
index 9f1bb27..c4a6017 100644
--- a/include/components/game_display.h
+++ b/include/components/game_display.h
@@ -9,7 +9,8 @@
typedef enum display_type
{
- HAPPINESS_DISPLAY
+ HAPPINESS_DISPLAY,
+ STUPIDITY_DISPLAY
} display_type;
struct game_display
diff --git a/include/components/game_manager.h b/include/components/game_manager.h
index dc7824a..189e21c 100644
--- a/include/components/game_manager.h
+++ b/include/components/game_manager.h
@@ -11,6 +11,7 @@ struct game_manager
{
gc_component base;
int happiness;
+ int stupidity;
};
const struct game_manager game_manager;
diff --git a/include/components/teams_component.h b/include/components/teams_component.h
index 6db17f3..d2234b1 100644
--- a/include/components/teams_component.h
+++ b/include/components/teams_component.h
@@ -19,4 +19,6 @@ struct teams_component
const struct teams_component teams_component;
+bool teams_move_up(gc_scene *scene, float amount, float y_level);
+
#endif //_TEAMS_COMPONENT_C_
diff --git a/include/setup.h b/include/setup.h
index d9400fa..abc171c 100644
--- a/include/setup.h
+++ b/include/setup.h
@@ -22,4 +22,7 @@ void resolution_set_text(gc_entity *entity, gc_engine *engine);
bool fullscreen(gc_engine *engine, int entity_id);
bool resolution_down(gc_engine *engine, int entity_id);
-bool resolution_up(gc_engine *engine, int entity_id);
\ No newline at end of file
+bool resolution_up(gc_engine *engine, int entity_id);
+
+
+bool absent_check(gc_engine *engine, int entity_id);
\ No newline at end of file
diff --git a/lib/gamacon b/lib/gamacon
index 3e0ba65..da2f00a 160000
--- a/lib/gamacon
+++ b/lib/gamacon
@@ -1 +1 @@
-Subproject commit 3e0ba651102bb2f0dba0bd9554c77efaaf82c8de
+Subproject commit da2f00aea405d2e0a5763ee07e709c82a07ea8ba
diff --git a/prefabs/game.gcprefab b/prefabs/game.gcprefab
index 390779a..872730a 100644
--- a/prefabs/game.gcprefab
+++ b/prefabs/game.gcprefab
@@ -6,6 +6,7 @@
+
@@ -28,7 +29,7 @@
-
+
@@ -43,5 +44,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/prefabs/teams/absent.gcprefab b/prefabs/teams/absent.gcprefab
index 52cc769..fd7aec4 100644
--- a/prefabs/teams/absent.gcprefab
+++ b/prefabs/teams/absent.gcprefab
@@ -1,6 +1,6 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/components/game_display.c b/src/components/game_display.c
index 78acd75..d0792ad 100644
--- a/src/components/game_display.c
+++ b/src/components/game_display.c
@@ -25,8 +25,12 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{
struct game_display *cmp = (struct game_display *)component;
struct renderer *rend = GETCMP(entity, renderer);
+ char *display_type = xml_gettempprop(n, "stats");
- cmp->type = HAPPINESS_DISPLAY;
+ if (!my_strcmp(display_type, "happiness"))
+ cmp->type = HAPPINESS_DISPLAY;
+ else
+ cmp->type = STUPIDITY_DISPLAY;
if (!rend || rend->type != GC_TXTREND) {
my_printf("Using a game display without a text renderer.\n");
return;
diff --git a/src/components/game_manager.c b/src/components/game_manager.c
index a28d875..e604542 100644
--- a/src/components/game_manager.c
+++ b/src/components/game_manager.c
@@ -16,6 +16,7 @@ static void ctr(void *component, va_list args)
struct game_manager *cmp = (struct game_manager *)component;
cmp->happiness = va_arg(args, int);
+ cmp->stupidity = va_arg(args, int);
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
@@ -23,6 +24,7 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
struct game_manager *cmp = (struct game_manager *)component;
cmp->happiness = xml_getintprop(n, "happiness");
+ cmp->stupidity = xml_getintprop(n, "stupidity");
if (scene->get_entity_by_cmp(scene, "game_manager"))
my_printf(MULTIPLE_GAME_MGR_ERROR);
}
diff --git a/src/game_loader.c b/src/game_loader.c
index 8da730b..01f52bd 100644
--- a/src/game_loader.c
+++ b/src/game_loader.c
@@ -30,6 +30,7 @@ int register_customcmps(gc_engine *engine)
engine->add_callback(engine, "fullscreen", &fullscreen);
engine->add_callback(engine, "resolution_down", &resolution_down);
engine->add_callback(engine, "resolution_up", &resolution_up);
+ engine->add_callback(engine, "absent_check", &absent_check);
return (0);
}
diff --git a/src/systems/game_display_system.c b/src/systems/game_display_system.c
index 9adf5be..7199f17 100644
--- a/src/systems/game_display_system.c
+++ b/src/systems/game_display_system.c
@@ -30,6 +30,8 @@ float dtime)
return;
if (disp->type == HAPPINESS_DISPLAY)
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->happiness);
+ else
+ sprintf(((gc_text *)rend->data)->text, "%d%%", manager->stupidity);
}
static void destroy(void *system)
diff --git a/src/systems/teams_system.c b/src/systems/teams_system.c
index 6f9a4fb..e987359 100644
--- a/src/systems/teams_system.c
+++ b/src/systems/teams_system.c
@@ -16,7 +16,7 @@
#include
#include "my.h"
-static bool move_teams_up(gc_scene *scene, float amount)
+bool teams_move_up(gc_scene *scene, float amount, float y_level)
{
gc_list *list = scene->get_entity_by_cmp(scene, "tag_component");
struct fixed_to_cam *fc;
@@ -28,7 +28,7 @@ static bool move_teams_up(gc_scene *scene, float amount)
if (my_strcmp(tc->tag, "teams"))
continue;
fc = GETCMP(list->data, fixed_to_cam);
- if (!fc)
+ if (!fc || fc->pos.y < y_level)
continue;
fc->pos.y -= amount;
if (fc->pos.y < 15) {
@@ -43,19 +43,19 @@ 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;
+ struct game_manager *manager = GETCMP(entity, game_manager);
int index;
+ if (!manager) {
+ my_printf("No game manager found. Teams is disabled.\n");
+ return;
+ }
team->next_teams -= dtime;
if (team->next_teams < 0 && team->prefab_count) {
index = random() % team->prefab_count;
team->next_teams = team->delay;
- if (move_teams_up(engine->scene, team->prefabs_size[index]) && m) {
- manager = GETCMP(m->data, game_manager);
+ if (teams_move_up(engine->scene, team->prefabs_size[index], 0))
manager->happiness -= 10;
- }
prefab_load(engine, team->prefabs[index]);
}
}
diff --git a/src/teams/absent.c b/src/teams/absent.c
new file mode 100644
index 0000000..3c91855
--- /dev/null
+++ b/src/teams/absent.c
@@ -0,0 +1,29 @@
+//
+// Created by anonymus-raccoon on 3/6/20.
+//
+
+#include
+#include "components/game_manager.h"
+#include
+#include
+#include "components/teams_component.h"
+#include "engine.h"
+
+bool absent_check(gc_engine *engine, int id)
+{
+ gc_scene *scene = engine->scene;
+ gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
+ gc_entity *entity = scene->get_entity(scene, id);
+ float y_pos = GETCMP(entity, transform_component)->position.y;
+ int prefab_id = entity->prefab_id;
+
+ if (!li)
+ return (false);
+ GETCMP(li->data, game_manager)->happiness += 3;
+ GETCMP(li->data, game_manager)->stupidity += random() % 5;
+ for (gc_list *ent = scene->entities; ent; ent = ent->next)
+ if (((gc_entity *)ent->data)->prefab_id == prefab_id)
+ ((gc_entity *)ent->data)->destroy(ent->data, scene);
+ teams_move_up(scene, 15, y_pos);
+ return (true);
+}
\ No newline at end of file