Fix bugs on mecanics
This commit is contained in:
parent
755e3a0f22
commit
8508c6d20e
63
src/core.c
63
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;
|
||||
}
|
|
@ -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 */
|
|
@ -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]);
|
||||
}
|
||||
|
||||
|
||||
|
|
14
src/menus.c
14
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};
|
||||
|
|
Loading…
Reference in New Issue