From 8508c6d20e9381143c6f2bf0a81f138bdc5408eb Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sun, 7 Nov 2021 18:31:23 +0100 Subject: [PATCH] Fix bugs on mecanics --- src/core.c | 63 +++++++++++++++++++++++++++++++++++++++++++++------ src/core.h | 3 +++ src/display.c | 4 ---- src/menus.c | 14 ++++++------ 4 files changed, 66 insertions(+), 18 deletions(-) diff --git a/src/core.c b/src/core.c index c3a5663..aa73ed3 100644 --- a/src/core.c +++ b/src/core.c @@ -147,9 +147,10 @@ void next_step(struct calccity *calccity, struct map *map) calccity->month ++; if (calccity->month > 12) { + update_stat(calccity, map); + end_year(calccity); calccity->month = 1; calccity->year ++; - update_stat(calccity, map); } } } @@ -204,6 +205,7 @@ void main_loop(struct calccity *calccity, struct camera *camera, struct map *map case KEY_F4: menu_4(calccity); + update_stat(calccity, map); break; case KEY_F5: @@ -455,7 +457,12 @@ void update_stat(struct calccity *calccity, struct map *map) calccity->stat[21] -= floor(calccity->misc[1] / 1000); // Happyness - calccity->stat[22] = floor((calccity->misc[1] + calccity->stat[22] + calccity->stat[0] + calccity->stat[1] + calccity->stat[2] + calccity->stat[3] - calccity->stat[6] - calccity->stat[7] - calccity->stat[9] - 10 * calccity->taxes[0]) / calccity->misc[1]); + if (calccity->misc[1]) + calccity->stat[22] = floor((calccity->misc[1] + calccity->stat[22] + calccity->stat[0] + calccity->stat[1] + calccity->stat[2] + calccity->stat[3] - calccity->stat[6] - calccity->stat[7] - calccity->stat[9] - 10 * calccity->taxes[0]) / calccity->misc[1]); + + + calccity->misc[3] = 0; + calccity->misc[4] = 0; // Population out if (calccity->stat[17] < 0 || calccity->stat[19] < 0 || calccity->stat[3] < 0) calccity->misc[4] += 20; @@ -479,16 +486,58 @@ void update_stat(struct calccity *calccity, struct map *map) if (calccity->stat[17] > 0 && calccity->stat[19] > 0) { for (int i = 0; i < 6; i ++) - if (calccity->stat[i] > 0) calccity->misc[3] += 10; + if (calccity->stat[i] > 0) calccity->misc[3] += 25; - if (calccity->stat[6] < 0) calccity->misc[3] += 10; - if (calccity->stat[7] < 0) calccity->misc[3] += 10; - if (calccity->stat[9] < 0) calccity->misc[3] += 10; + if (calccity->stat[6] < 0) calccity->misc[3] += 20; + if (calccity->stat[7] < 0) calccity->misc[3] += 20; + if (calccity->stat[9] < 0) calccity->misc[3] += 20; - if (calccity->stat[12] > 0) calccity->misc[3] += 10; + if (calccity->stat[12] > 0) calccity->misc[3] += 20; if (calccity->taxes[0] <= 10) calccity->misc[3] += 5; } calccity->misc[1] = calccity->misc[1] + calccity->misc[3] - calccity->misc[4]; if (calccity->misc[1] < 0) calccity->misc[1] = 0; +} + + + +void end_year(struct calccity *calccity) +{ + dclear(C_WHITE); + + drect(0, 0, 127, 6, C_BLACK); + dprint_opt(33, 1, C_WHITE, C_NONE, 0, 0, "BILAN %d", calccity->year); + + dhline(0, C_BLACK); + dhline(63, C_BLACK); + dvline(0, C_BLACK); + dvline(127, C_BLACK); + + int taxe_housing = calccity->taxes[0] / 100 * calccity->misc[1]; + int taxe_trade = calccity->taxes[1] / 100 * calccity->stat[10]; + int taxe_industry = calccity->taxes[2] / 100 * calccity->stat[11]; + int taxe_export = calccity->taxes[3] / 100 * calccity->stat[14]; + + int entry = taxe_housing + taxe_trade + taxe_industry + taxe_export; + + dprint_opt(4, 8, C_BLACK, C_WHITE, 0, 0, "TAXE HABITATION %d", taxe_housing); + dprint_opt(4, 15, C_BLACK, C_WHITE, 0, 0, "TAXE COMMERCE %d", taxe_trade); + dprint_opt(4, 22, C_BLACK, C_WHITE, 0, 0, "TAXE INDUSTRIE %d", taxe_industry); + dprint_opt(4, 29, C_BLACK, C_WHITE, 0, 0, "TAXE EXPORT %d", taxe_export); + dprint_opt(4, 36, C_BLACK, C_WHITE, 0, 0, "TOTAL %d", entry); + dprint_opt(4, 43, C_BLACK, C_WHITE, 0, 0, "COUT ANNUEL %d", calccity->stat[15]); + dprint_opt(4, 50, C_BLACK, C_WHITE, 0, 0, "BILAN %d", entry - calccity->stat[15]); + + calccity->misc[0] += entry - calccity->stat[15]; + if (calccity->misc[0] < 0) calccity->misc[0] = 0; + + dupdate(); + + int key = 0; + int opt = GETKEY_DEFAULT & ~GETKEY_MOD_SHIFT & ~GETKEY_MOD_ALPHA & ~GETKEY_REP_ARROWS; + int timeout = 0; + + while (key != KEY_ALPHA) + key = getkey_opt(opt, &timeout).key; } \ No newline at end of file diff --git a/src/core.h b/src/core.h index c9f28a0..74a83fe 100644 --- a/src/core.h +++ b/src/core.h @@ -32,4 +32,7 @@ void exit_build_mode(struct camera *camera, int *build_mode); // update_stat : compute the new stat with buildings void update_stat(struct calccity *calccity, struct map *map); +// end_year : display the year's balance sheet +void end_year(struct calccity *calccity); + #endif /* _CORE_H */ \ No newline at end of file diff --git a/src/display.c b/src/display.c index 8f88455..d9fc4ed 100644 --- a/src/display.c +++ b/src/display.c @@ -69,10 +69,6 @@ void display_large_map(struct calccity *calccity, struct camera *camera, struct } } } - - unsigned short loc_x = floor(camera->x + camera->cursor_x / (floor(camera->cursor_size[0] / 8) + 1)); - unsigned short loc_y = floor(camera->y + camera->cursor_y / (floor(camera->cursor_size[1] / 8) + 1)); - dprint_opt(3, 7, C_BLACK, C_WHITE, 0, 0, "%d", map->id[loc_y][loc_x]); } diff --git a/src/menus.c b/src/menus.c index b752a4b..57ae8d4 100644 --- a/src/menus.c +++ b/src/menus.c @@ -135,13 +135,13 @@ void menu_4(struct calccity *calccity) break; case KEY_LEFT: - if (choice < 5 && calccity->taxes[choice] > 0) calccity->taxes[choice] --; - if (choice >= 5 && calccity->funds[choice - 5] > 0) calccity->funds[choice - 5] --; + if (choice < 4 && calccity->taxes[choice] > 0) calccity->taxes[choice] --; + if (choice >= 4 && calccity->funds[choice - 4] > 0) calccity->funds[choice - 4] --; break; case KEY_RIGHT: - if (choice < 5 && calccity->taxes[choice] < 100) calccity->taxes[choice] ++; - if (choice >= 5 && calccity->funds[choice - 5] < 100) calccity->funds[choice - 5] ++; + if (choice < 4 && calccity->taxes[choice] < 100) calccity->taxes[choice] ++; + if (choice >= 4 && calccity->funds[choice - 4] < 100) calccity->funds[choice - 4] ++; break; } @@ -168,8 +168,8 @@ void menu_5(struct calccity *calccity) "TRANSPORT", "SECURITE", "CRIME", - "RISQUE INCENDIE", - "RISQUE NUCLEAIRE", + "INCENDIE", + "NUCLEAIRE", "POLLUTION", "ECONOMIE", "COMMERCE", @@ -182,7 +182,7 @@ void menu_5(struct calccity *calccity) "EAU", "ENERGIE", "DECHETS", - "TOMBES" + "TOMBES", }; long values[27] = {0};