From e0a1b58ed98dad1aa9b528265d4613907cac89ed Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Mon, 20 Jun 2022 15:28:06 +0200 Subject: [PATCH] Add roads, railways and shorelines gestion, fix large building construction, add demolition and auto-orientation of harbors --- assets-fx/large_tileset.png | Bin 31972 -> 5771 bytes assets-fx/mini_tileset.png | Bin 30409 -> 1899 bytes src/calccity.c | 12 +- src/calccity.h | 3 +- src/core.c | 371 +++++++++++++++++++++++++++--------- src/core.h | 19 +- src/display.c | 8 +- src/menus.c | 2 +- 8 files changed, 315 insertions(+), 100 deletions(-) diff --git a/assets-fx/large_tileset.png b/assets-fx/large_tileset.png index e0b07bca910d5d4c3bbf5b57fcff3ffdf350be49..34400e0709c34a5755719381d242ed6716d20a8f 100644 GIT binary patch delta 5741 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 literal 31972 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[y][x] = 139; + map->data[y][x] = 127; map->id[y][x] = 1; } // Ground else { - map->data[y][x] = 48 + rand() % 2; + map->data[y][x] = 125 + rand() % 2; map->id[y][x] = 0; - } - - // Shorelines - switch (y) - { - case 1: - switch (x) - { - case 1: - map->data[y][x] = 110; - break; - - case 48: - map->data[y][x] = 112; - break; - - default: - if (x != 0 && x != 49) map->data[y][x] = 111; - break; - } - break; - - case 48: - switch (x) - { - case 1: - map->data[y][x] = 130; - break; - - case 48: - map->data[y][x] = 132; - break; - - default: - if (x != 0 && x != 49) map->data[y][x] = 131; - break; - } - break; - - default: - if (y != 0 && y != 49) - { - if (x == 1) map->data[y][x] = 120; - if (x == 48) map->data[y][x] = 122; - } - } + } } } + for (int y = 0; y < 50; y ++) + { + for (int x = 0; x < 50; x ++) + check(map, x, y); + } } @@ -154,7 +114,47 @@ void next_step(struct calccity *calccity, struct map *map) } } - // Disasters gestion soon™ + if (calccity->disaster) + { + // Firehazard + if (calccity->stat[7] > 500 && rand() % 1000 == 0) + { + display_message("UN INCENDIE A RAVAGE VOTRE VILLE."); + disaster(calccity, map, calccity->stat[7]); + update_stat(calccity, map); + } + + // Nuclear disaster + if (calccity->stat[8] >= 1 && rand() % 10000 == 0) + { + display_message("UN ACCIDENT NUCLEAIRE A RAVAGE VOTRE VILLE."); + disaster(calccity, map, calccity->stat[8] * 100); + update_stat(calccity, map); + } + + // Earthquake + if (rand() % 10000 == 0) + { + display_message("UN TREMBLEMENT DE TERRE A RAVAGE VOTRE VILLE."); + disaster(calccity, map, rand() % 10); + update_stat(calccity, map); + } + + // Treasure + if (calccity->misc[0] > 1000 && rand() % 1000 == 0) + { + if (rand() % 2) + { + display_message("DES INVESTISSEMENT AUDACIEUX VOUS ONT RAPPORTES 1000$ !"); + calccity->misc[0] += 1000; + } + else + { + display_message("DES INVESTISSEMENT FOIREUX VOUS ONT FAIT PERDRE 1000$."); + calccity->misc[0] -= 1000; + } + } + } } @@ -229,34 +229,47 @@ void main_loop(struct calccity *calccity, struct camera *camera, struct map *map exit_build_mode(camera, &build_mode); // Build validation - if (key == KEY_SHIFT && can_build(calccity, camera, map, &building)) + if (key == KEY_SHIFT) { unsigned short loc_x = building.size[0] * floor(camera->x + camera->cursor_x / (floor(camera->cursor_size[0] / 8) + 1)); unsigned short loc_y = building.size[1] * floor(camera->y + camera->cursor_y / (floor(camera->cursor_size[1] / 8) + 1)); + unsigned char index = 0; - if (build_mode == 5 || build_mode == 8 || build_mode == 11 || build_mode == 27 || build_mode == 28 || build_mode == 29) + if (can_build(calccity, map, &building, loc_x, loc_y, &index)) { - building = large_building(map, build_mode, &loc_x, &loc_y); - for (int y = loc_y; y < loc_y + building.size[1]; y ++) + // Large buildings gestion + if (build_mode == 5 || build_mode == 8 || build_mode == 11 || build_mode == 27 || build_mode == 28 || build_mode == 29) { - for (int x = loc_x; x < loc_x + building.size[0]; x ++) - map->id[y][x] = 0; + building = large_building(map, &build_mode, &loc_x, &loc_y); + for (int y = loc_y; y < loc_y + building.size[1]; y ++) + { + for (int x = loc_x; x < loc_x + building.size[0]; x ++) + map->id[y][x] = 0; + } + update_stat(calccity, map); } + + // Destruction + if (map->id[loc_y][loc_x] != 1 && build_mode == 0) + destruction(map, loc_x, loc_y); + + // Other buildings + else + { + for (int y = loc_y; y < loc_y + building.size[1]; y ++) + { + for (int x = loc_x; x < loc_x + building.size[0]; x ++) + { + map->data[y][x] = building.id[index]; + map->id[y][x] = -1; + index ++; + } + } + map->id[loc_y][loc_x] = build_mode; + } + calccity->misc[0] -= building.cost; update_stat(calccity, map); } - - unsigned char index = 0; - for (int y = loc_y; y < loc_y + building.size[1]; y ++) - { - for (int x = loc_x; x < loc_x + building.size[0]; x ++) - { - map->data[y][x] = building.id[index]; - index ++; - } - } - map->id[loc_y][loc_x] = build_mode; - calccity->misc[0] -= building.cost; - update_stat(calccity, map); } } @@ -315,10 +328,8 @@ void keyboard_managment(struct camera *camera, const int key, const int build_mo } -bool can_build(struct calccity *calccity, struct camera *camera, struct map *map, struct building *building) +bool can_build(struct calccity *calccity, struct map *map, struct building *building, const unsigned short loc_x, const unsigned short loc_y, unsigned char *index) { - unsigned short loc_x = building->size[0] * floor(camera->x + camera->cursor_x / (floor(camera->cursor_size[0] / 8) + 1)); - unsigned short loc_y = building->size[1] * floor(camera->y + camera->cursor_y / (floor(camera->cursor_size[1] / 8) + 1)); // Not enougth money if (calccity->misc[0] < building->cost) @@ -327,25 +338,38 @@ bool can_build(struct calccity *calccity, struct camera *camera, struct map *map return false; } + // harbor's orientation + if (building->id[0] == 62) + { + *index = check_harbor(map, loc_x, loc_y); + if (*index == 4) + { + display_message("VOUS DEVEZ CONSTUIRE LES PORTS A PROXIMITE DE L'EAU"); + return false; + } + } for (int y = loc_y; y < loc_y + building->size[1]; y ++) { for (int x = loc_x; x < loc_x + building->size[0]; x ++) { // Build on water - if (map->data[y][x] == 139) + if (map->id[y][x] == 1 && building->id[0] != 110) { display_message("VOUS NE POUVEZ PAS CONSTRUIRE SUR L'EAU."); return false; } // Build on another building - if (map->data[y][x] != 48 && map->data[y][x] != 49 && map->data[y][x] < 110 && building->id[0] != 48) + if (map->id[y][x] != 0 && building->id[0] != 110) { display_message("VOUS NE POUVEZ PAS CONSTRUIRE SUR BATIMENT EXISTANT."); return false; } + // Build dirt on dirt or water on water + if ((building->id[0] == 110 && map->id[y][x] == 0) || (building->id[0] == 127 && map->id[y][x] == 1)) + return false; } } @@ -361,7 +385,7 @@ void exit_build_mode(struct camera *camera, int *build_mode) } -struct building large_building(struct map *map, const int build_mode, short unsigned int *loc_x, short unsigned int *loc_y) +struct building large_building(struct map *map, int *build_mode, short unsigned int *loc_x, short unsigned int *loc_y) { extern const struct building buildings[42]; const short unsigned int Y[16] = {*loc_y - 1, *loc_y - 1, *loc_y, *loc_y, *loc_y - 1, *loc_y - 1, *loc_y, *loc_y, *loc_y, *loc_y, *loc_y + 1, *loc_y + 1, *loc_y, *loc_y, *loc_y + 1, *loc_y + 1}; @@ -374,7 +398,7 @@ struct building large_building(struct map *map, const int build_mode, short unsi { short unsigned int y = Y[4 * i + j]; short unsigned int x = X[4 * i + j]; - if (map->id[y][x] == build_mode) check ++; + if (map->id[y][x] == *build_mode) check ++; } if (check == 3) @@ -382,41 +406,40 @@ struct building large_building(struct map *map, const int build_mode, short unsi *loc_x = X[4 * i]; *loc_y = Y[4 * i]; - switch (build_mode) + switch (*build_mode) { case 5: - return buildings[35]; + *build_mode = 35; break; case 8: - return buildings[36]; + *build_mode = 36; break; case 11: - return buildings[37]; + *build_mode = 37; break; case 27: - return buildings[38]; + *build_mode = 38; break; case 28: - return buildings[39]; + *build_mode = 39; break; case 29: - return buildings[40]; + *build_mode = 40; break; } } } - return buildings[build_mode]; + return buildings[*build_mode]; } void update_stat(struct calccity *calccity, struct map *map) -{ - +{ extern const struct building buildings[42]; // Reset stat @@ -428,6 +451,10 @@ void update_stat(struct calccity *calccity, struct map *map) { for (int x = 0; x < 50; x ++) { + // Checking shorelines, roads and railways + check(map, x, y); + + // Update stat if (map->id[y][x] > 1) { struct building building = buildings[map->id[y][x]]; @@ -595,4 +622,178 @@ void end_year(struct calccity *calccity) while (key != KEY_ALPHA) key = getkey_opt(opt, &timeout).key; +} + + +void check(struct map *map, const int x, const int y) +{ + switch (map->id[y][x]) + { + // shorelines + case 0: + int shore_id = 110; + if ((y - 1 >= 0) && map->id[y - 1][x] != 1) shore_id += 8; + if ((y + 1 < 50) && map->id[y + 1][x] != 1) shore_id += 1; + if ((x - 1 >= 0) && map->id[y][x - 1] != 1) shore_id += 4; + if ((x + 1 < 50) && map->id[y][x + 1] != 1) shore_id += 2; + + if (map->data[y][x] != 125 && map->data[y][x] != 126 && shore_id == 125) shore_id += rand() % 2; + map->data[y][x] = shore_id; + break; + + // roads + case 15: + int road_id = 80; + if ((y - 1 >= 0) && map->id[y - 1][x] == 15) road_id += 8; + if ((y + 1 < 50) && map->id[y + 1][x] == 15) road_id += 1; + if ((x - 1 >= 0) && map->id[y][x - 1] == 15) road_id += 4; + if ((x + 1 < 50) && map->id[y][x + 1] == 15) road_id += 2; + + if (road_id > 80) road_id --; + map->data[y][x] = road_id; + break; + + // railways + case 18: + int rail_id = 95; + if ((y - 1 >= 0) && map->id[y - 1][x] == 18) rail_id += 8; + if ((y + 1 < 50) && map->id[y + 1][x] == 18) rail_id += 1; + if ((x - 1 >= 0) && map->id[y][x - 1] == 18) rail_id += 4; + if ((x + 1 < 50) && map->id[y][x + 1] == 18) rail_id += 2; + + if (rail_id > 95) rail_id --; + map->data[y][x] = rail_id; + break; + } +} + + +int check_harbor(struct map *map, const int x, const int y) +{ + if (map->id[y][x - 1] == 1) return 0; + if (map->id[y][x + 1] == 1) return 1; + if (map->id[y - 1][x] == 1) return 2; + if (map->id[y + 1][x] == 1) return 3; + + return 4; +} + + +int get_reference_id(const unsigned char tile_id) +{ + switch (tile_id) + { + case 0: case 1: + return 17; + break; + + case 50: case 51: case 60: case 61: + return 21; + break; + + case 3: case 4: case 13: case 14: + return 22; + break; + + case 42: case 43: case 52: case 53: + return 26; + break; + + case 28: case 29: case 38: case 39: + return 33; + break; + + case 10: case 11: case 20: case 21: + return 34; + break; + + case 5: case 6: case 15: case 16: + return 35; + break; + + case 7: case 8: case 17: case 18: + return 36; + break; + + case 30: case 31: case 40: case 41: + return 37; + break; + + case 26: case 27: case 36: case 37: + return 38; + break; + + case 22: case 23: case 32: case 33: + return 39; + break; + + case 24: case 25: case 34: case 35: + return 40; + break; + + case 2: case 12: + return 41; + break; + } + return 0; +} + + +void destruction(struct map *map, int loc_x, int loc_y) +{ + extern const struct building buildings[42]; + + unsigned char ref_id; + if (map->id[loc_y][loc_x] == -1) ref_id = get_reference_id(map->data[loc_y][loc_x]); + else ref_id = map->id[loc_y][loc_x]; + + const struct building building = buildings[ref_id]; + const int ref_x = loc_x, ref_y = loc_y; + + if (map->id[ref_y - 1][ref_x] == ref_id) loc_y --; + if (map->id[ref_y - 1][ref_x - 1] == ref_id){loc_x --; loc_y --;} + if (map->id[ref_y][ref_x - 1] == ref_id) loc_x --; + + for (int y = loc_y; y < loc_y + building.size[1]; y ++) + { + for (int x = loc_x; x < loc_x + building.size[0]; x ++) + { + map->data[y][x] = 125 + rand() % 2; + map->id[y][x] = 0; + } + } +} + + +void disaster(struct calccity *calccity, struct map *map, const int destruction_rate) +{ + for (int y = 0; y < 50; y ++) + { + for (int x = 0; x < 50; x ++) + { + if (map->id[y][x] > 1 && rand() % destruction_rate <= destruction_rate / 4) + { + map->id[y][x] = 0; + map->data[y][x] = 125 + rand() % 2; + + // Large building check + if (map->id[y][x + 1] == -1) + { + map->id[y][x + 1] = 0; + map->data[y][x + 1] = 125 + rand() % 2; + } + if (map->id[y + 1][x + 1] == -1) + { + map->id[y + 1][x + 1] = 0; + map->data[y + 1][x + 1] = 125 + rand() % 2; + } + if (map->id[y + 1][x] == -1) + { + map->id[y][x + 1] = 0; + map->data[y][x + 1] = 125 + rand() % 2; + } + calccity->misc[1] = calccity->misc[1] / (rand() % destruction_rate); + } + } + } } \ No newline at end of file diff --git a/src/core.h b/src/core.h index d20b774..391cc98 100644 --- a/src/core.h +++ b/src/core.h @@ -24,13 +24,13 @@ void main_loop(struct calccity *calccity, struct camera *camera, struct map *map void keyboard_managment(struct camera *camera, const int key, const int build_mode); // can_build : test if the build is legit -bool can_build(struct calccity *calccity, struct camera *camera, struct map *map, struct building *building); +bool can_build(struct calccity *calccity, struct map *map, struct building *building, const unsigned short x, const unsigned short y, unsigned char *index); // exit_build_mode : reset build mode and cusor void exit_build_mode(struct camera *camera, int *build_mode); // large_building : detect large buildings and adjust the building's id -struct building large_building(struct map *map, const int build_mode, short unsigned int *loc_x, short unsigned int *loc_y); +struct building large_building(struct map *map, int *build_mode, short unsigned int *loc_x, short unsigned int *loc_y); // update_stat : compute the new stat with buildings void update_stat(struct calccity *calccity, struct map *map); @@ -38,4 +38,19 @@ void update_stat(struct calccity *calccity, struct map *map); // end_year : display the year's balance sheet void end_year(struct calccity *calccity); +// check_shorelines : check the shorelines, roads and railways +void check(struct map *map, const int x, const int y); + +// check_harbor : check the harbor's orientation +int check_harbor(struct map *map, const int x, const int y); + +// get_reference_id : get the id of large buildings +int get_reference_id(const unsigned char tile_id); + +// destruction : manage deconstruction +void destruction(struct map *map, int loc_x, int loc_y); + +// disaster : manage disasters +void disaster(struct calccity *calccity, struct map *map, const int destruction_rate); + #endif /* _CORE_H */ \ No newline at end of file diff --git a/src/display.c b/src/display.c index 91a4412..42f89d1 100644 --- a/src/display.c +++ b/src/display.c @@ -45,7 +45,7 @@ void display_large_map(struct calccity *calccity, struct camera *camera, struct int cam_x = x + camera->x, cam_y = y + camera->y; // Water - if (cam_y > 49 || cam_x > 49 || map->data[cam_y][cam_x] == 139) + if (cam_y > 49 || cam_x > 49 || map->data[cam_y][cam_x] == 127) dsubimage(3 + x * 15, y * 15, &img_large_water, 15 * calccity->blinker_water, 0, 15 * (calccity->blinker_water + 1), 15, DIMAGE_NONE); else { @@ -130,7 +130,7 @@ void display_around(struct calccity *calccity, struct camera *camera, const int } -void display_message(char* message) +void display_message(char *message) { dclear(C_WHITE); @@ -144,13 +144,13 @@ void display_message(char* message) int total_offset = 0; for (int i = 0; i < 5; i ++) { - dtext_opt(3, 7 * i + 8, C_BLACK, C_WHITE, 0, 0, message + total_offset, 20); + dtext_opt(3, 7 * i + 8, C_BLACK, C_WHITE, 0, 0, message + total_offset, 27); int offset = 0; while (message[total_offset + offset] != '\0') offset += 1; if (!offset) break; - else if (offset > 20) total_offset += 20; + else if (offset > 27) total_offset += 27; else total_offset += offset; } diff --git a/src/menus.c b/src/menus.c index a6e55d5..6f801f4 100644 --- a/src/menus.c +++ b/src/menus.c @@ -309,7 +309,7 @@ int menu_6(struct calccity *calccity) while (key != KEY_ALPHA) { - int prcnt = 100 - (calccity->time_speed * 100 / 7500); + int prcnt = 100 - (calccity->time_speed * 100 / 10000); dclear(C_WHITE);