From 1b3e0eab80a5295e9d966083de5c27c53e1514ee Mon Sep 17 00:00:00 2001 From: Alexandre Date: Fri, 23 Aug 2024 15:51:08 +0200 Subject: [PATCH] more rooms --- bin/back | Bin 101528 -> 100528 bytes src/display.c | 4 +- src/display.h | 2 +- src/generation.c | 141 +---------------------------------------------- src/generation.h | 6 -- src/main.c | 2 +- src/structure.h | 1 - templates.txt | 18 ++++++ 8 files changed, 24 insertions(+), 150 deletions(-) diff --git a/bin/back b/bin/back index 64b1b35c7d3fcfe122652c25f19f4034a6d87422..82d7bebd9d8fe784650c0f07ac3122dd58ea4bb0 100755 GIT binary patch delta 36140 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�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 DFVrt= delta 38436 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 != draw_par) { ch->draw_id = draw_par ; //printf("[DDDDD] chunk (%d, %d) has signature : \n", ch.chx, ch.chy); @@ -172,7 +172,7 @@ void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int fprintf(stderr, "NO\n"); exit(1); }; - drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, dist); + drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax); if(dist != render_distance -1 && !gridMem(map, chx+1, chy)) { generate_chunk_all(chx+1, chy); diff --git a/src/display.h b/src/display.h index f743e16..c116bec 100644 --- a/src/display.h +++ b/src/display.h @@ -21,7 +21,7 @@ void drawNumberToRenderer(SDL_Renderer* renderer, imgs data, int n, int X, int Y void drawStringToRenderer(SDL_Renderer* renderer, imgs data, char* s, int X, int Y, int W, int H); -void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, int ymin, int ymax, int di); +void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, int ymin, int ymax); void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int xmax, int ymin, int ymax, int dist); diff --git a/src/generation.c b/src/generation.c index 07328fb..0c83a2c 100644 --- a/src/generation.c +++ b/src/generation.c @@ -45,55 +45,10 @@ template full ; // ------------------------------------------------------------------------ // -void one_debug() { - matches = malloc(sizeof(array*)*4); - - matches[0] = malloc(sizeof(array)); - matches[1] = malloc(sizeof(array)); - matches[2] = malloc(sizeof(array)); - matches[3] = malloc(sizeof(array)); - - matches[0][0].arr = malloc(sizeof(int)); - matches[0][0].arr[0] = 0; - matches[0][0].len = 1; - - matches[1][0].arr = malloc(sizeof(int)); - matches[1][0].arr[0] = 0; - matches[1][0].len = 1; - - matches[2][0].arr = malloc(sizeof(int)); - matches[2][0].arr[0] = 0; - matches[2][0].len = 1; - - matches[3][0].arr = malloc(sizeof(int)); - matches[3][0].arr[0] = 0; - matches[3][0].len = 1; - - configs = malloc(sizeof(template)); - - configs[0].lines = malloc(sizeof(uint8_t)*8); - configs[0].lines[0] = 255; - configs[0].lines[1] = 129; - configs[0].lines[2] = 129; - configs[0].lines[3] = 129; - configs[0].lines[4] = 129; - configs[0].lines[5] = 129; - configs[0].lines[6] = 129; - configs[0].lines[7] = 255; - - configs[0].id = 0; -} - -// ------------------------------------------------------------------------ // - bool unpack_coord(uint8_t* lines, int cx, int cy) { return (bool)((lines[cy]/pw(2, cx))%2); } -bool is_compatible(chunk ch, cardinal dir, int config_id) { - return arr_mem(matches[(int)dir][ch.chdata.id], config_id); -} - template copy(template src) { template new ; new.id = src.id ; @@ -132,14 +87,7 @@ void print_template(int config_id) { rem = rem/2 ; }; printf("(%d)\n", configs[config_id].lines[i]); - };/* - for(int i = 0; i < 4; i++) { - printf("["); - for(int j = 0; j < matches[i][config_id].len; j++) { - printf("%d ", matches[i][config_id].arr[j]); - } - printf("]\n"); - };*/ + }; printf("\n"); } @@ -167,47 +115,9 @@ void rotateTemplateClockWise(int config_id) { //print_template(config_id); } - if(false) { - int* temp = matches[0][config_id].arr; - int len0 = matches[0][config_id].len; - - matches[0][config_id].arr = matches[1][config_id].arr; - matches[0][config_id].len = matches[1][config_id].len; - - matches[1][config_id].arr = matches[2][config_id].arr; - matches[1][config_id].len = matches[2][config_id].len; - - matches[2][config_id].arr = matches[3][config_id].arr; - matches[2][config_id].len = matches[3][config_id].len; - - matches[3][config_id].arr = temp; - matches[3][config_id].len = len0; - - for(int tp = 0; tp < n_configs; tp++) { - pop(&matches[0][tp], config_id); - append(&matches[1][tp], config_id); - - pop(&matches[1][tp], config_id); - append(&matches[2][tp], config_id); - - pop(&matches[2][tp], config_id); - append(&matches[3][tp], config_id); - - pop(&matches[3][tp], config_id); - append(&matches[0][tp], config_id); - } - } - free(new); } -bool is_compat_one(int cx, int cy, cardinal dir, int idx) { - if(idx == -1 || !gridMem(map, cx, cy)) { - return true; - }; - return is_compatible(*gridGet(map, cx, cy), dir, idx); -} - bool is_compat_sig_north(int cx, int cy, int idx) { chunk* cp = gridGet(map, cx, cy-1); if(cp == NULL) { @@ -250,34 +160,7 @@ void signature(template t) { bool is_compat_with_spins(int cx, int cy, int idx) { for(int k = 0; k < 4; k++) { - //printf(" (%d %d %d %d)\n", is_compat_one(cx-1, cy, EAST, idx), is_compat_one(cx+1, cy, WEST, idx), is_compat_one(cx, cy-1, SOUTH, idx), is_compat_one(cx, cy+1, NORTH, idx)); - //if(is_compat_one(cx-1, cy, EAST, idx) && is_compat_one(cx+1, cy, WEST, idx) && is_compat_one(cx, cy-1, SOUTH, idx) && is_compat_one(cx, cy+1, NORTH, idx)) { if(is_compat_sig_north(cx, cy, idx) && is_compat_sig_east(cx, cy, idx) && is_compat_sig_south(cx, cy, idx) && is_compat_sig_west(cx, cy, idx)) { - - /*printf("---------------------------------\n"); - signature(configs[idx]); - if(gridGet(map, cx, cy+1) != NULL) { - printf("[SOUTH] - %d\n", (gridGet(map, cx, cy+1)->chdata).lines[7]); - } else { - printf("[SOUTH] - \n"); - } - if(gridGet(map, cx+1, cy) != NULL) { - printf("[EAST] - %d\n", (gridGet(map, cx+1, cy)->chdata).westsig); - } else { - printf("[EAST] - \n"); - } - if(gridGet(map, cx, cy-1) != NULL) { - printf("[NORTH] - %d\n", (gridGet(map, cx, cy-1)->chdata).lines[0]); - } else { - printf("[NORTH] - \n"); - } - if(gridGet(map, cx-1, cy) != NULL) { - printf("[WEST] - %d\n\n", (gridGet(map, cx-1, cy)->chdata).eastsig); - } else { - printf("[WEST] - \n"); - } - printf("---------------------------------\n");*/ - return true ; } else { rotateTemplateClockWise(idx); @@ -370,18 +253,7 @@ void parse_one(FILE* ptr, FILE* ptr2, int index) { configs[index].eastsig += xres; } } - };/* - for(int i = 0; i < 4; i++) { - int len = count_char_in_line(ptr2, ','); - matches[i][index].len = len ; - matches[i][index].arr = malloc(sizeof(int)*n_configs); // just in case - int wasted = fgetc(ptr); // always a '[' - for(int j = 0; j < len; j++) { - int read = get_integer(ptr); - matches[i][index].arr[j] = read ; - }; - terminate_line(ptr); - };*/ + }; terminate_line(ptr); terminate_line(ptr2); @@ -391,15 +263,6 @@ void parse_configs(char* filename, int n_conf) { // Initializing everything // n_configs = n_conf ; - matches = malloc(sizeof(array*)*4); - // 4 cardinal directions - - matches[0] = malloc(sizeof(array)*n_conf); - matches[1] = malloc(sizeof(array)*n_conf); - matches[2] = malloc(sizeof(array)*n_conf); - matches[3] = malloc(sizeof(array)*n_conf); - // compatibilities, 1 for each template - configs = malloc(sizeof(template)*n_conf); // data for each template diff --git a/src/generation.h b/src/generation.h index 3225a10..3d52732 100644 --- a/src/generation.h +++ b/src/generation.h @@ -1,20 +1,14 @@ #ifndef BACK_GEN_H #define BACK_GEN_H -void one_debug(); - bool unpack_coord(uint8_t* lines, int cx, int cy); -bool is_compatible(chunk ch, cardinal dir, int config_id); - void generate_chunk(int x, int y, int config_id); void print_template(int config_id); void rotateTemplateClockWise(int config_id); -bool is_compat_one(int cx, int cy, cardinal dir, int idx); - void signature(template t); bool is_compat_with_spins(int cx, int cy, int idx); diff --git a/src/main.c b/src/main.c index 10e07aa..cbb7b68 100644 --- a/src/main.c +++ b/src/main.c @@ -43,7 +43,7 @@ int main(int argc, char** argv) { /* -------------------------------------------------------- */ //one_debug(); - parse_configs("templates.txt", 30); + parse_configs("templates.txt", 32); initialize(rend); diff --git a/src/structure.h b/src/structure.h index c0b0c25..efa4e0b 100644 --- a/src/structure.h +++ b/src/structure.h @@ -40,7 +40,6 @@ extern int __width__ ; extern int __height__ ; extern template* configs ; -extern array** matches ; // first length is always 4 (NESW) extern int n_configs ; // 2nd length extern imgs digits ; diff --git a/templates.txt b/templates.txt index 8bfcf24..b035cf6 100644 --- a/templates.txt +++ b/templates.txt @@ -268,6 +268,24 @@ 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 +1 1 1 0 0 1 1 1 +1 0 0 0 0 0 0 1 +1 0 0 0 0 0 0 1 +1 0 0 0 0 0 0 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 + +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 +1 1 1 1 1 1 1 1 + $ format is :