From 62f79bf9e0bf38509eedb451ee42ce1c6e98c01e Mon Sep 17 00:00:00 2001 From: Alexandre Date: Thu, 29 Aug 2024 14:44:49 +0200 Subject: [PATCH] added special tile handling + implemented rotating tiles --- bin/back | Bin 114016 -> 123368 bytes src/base.c | 90 +++++++++++++++++++++++++++++++++++++ src/base.h | 16 +++++++ src/display.c | 17 +++++++ src/display.h | 2 + src/generation.c | 91 +++++++++++++++++++++++++++++++++----- src/generation.h | 4 +- src/hash.h | 10 +++++ src/move.c | 110 ++++++++++++++++++++++++++++++++-------------- src/move.h | 6 ++- src/structure.h | 2 + templates_lv1.txt | 12 ++--- 12 files changed, 307 insertions(+), 53 deletions(-) diff --git a/bin/back b/bin/back index 3d7bfcae0f1bcc4f4faf8c46c9cf937c74857f08..c552269962b6120a815afc25977c2e1e07d50ede 100755 GIT binary patch literal 123368 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 JT}N=<>@Pdn>TUo4 diff --git a/src/base.c b/src/base.c index aba5b62..f71bf5f 100644 --- a/src/base.c +++ b/src/base.c @@ -209,6 +209,96 @@ void pop(array* arr, int elt) { } } +bool str_equal(char* s1, char* s2) { + if(s1[0] == '\0' || s2[0] == '\0') { + return (s1[0] == '\0' && s2[0] == '\0'); + } + return (s1[0] == s2[0] && str_equal(&s1[1], &s2[1])); +} + +// ------------------------------------------------------------------------------------------------ // + +void linked_add(linkedList* lst, int x, int y, char* flag) { + if(lst == NULL) { + fprintf(stderr, "ERROR : linked list has not been initialized\n"); + exit(1); + } else if(lst->next == NULL) { + lst->next = malloc(sizeof(linkedList)); + lst->next->coord = x + 16*y ; + lst->next->flag = flag ; + lst->next->next = NULL ; + } else { + linked_add(lst->next, x, y, flag); + } +} + +void linked_removeCoord(linkedList* lst, int x, int y) { + if(lst != NULL) { + if(lst->coord == x + 16*y) { + linkedList* temp = lst->next ; + free(lst) ; + lst = temp ; + } else { + linked_removeCoord(lst->next, x, y); + } + } +} + +void linked_removeFlag(linkedList* lst, char* flag) { + if(lst != NULL) { + if(lst->flag == flag) { + linkedList* temp = lst->next ; + free(lst) ; + lst = temp ; + } else { + linked_removeFlag(lst->next, flag); + } + } +} + +void linked_change(linkedList* lst, int x, int y, char* flag) { + linked_removeCoord(lst, x, y); + linked_add(lst, x, y, flag); +} + +bool linked_mem(linkedList* lst, int x, int y, char** flag) { + if(lst == NULL) { + return false; + } + //printf("Searching for (%d, %d) [%d] ; have [%d]\n", x, y, x + 16*y, lst->coord); + if(lst->coord == x + 16*y) { + *flag = lst->flag; + return true ; + } + return linked_mem(lst->next, x, y, flag); +} + +linkedList* linked_copy(linkedList* src) { + linkedList* new = malloc(sizeof(linkedList)) ; + new->flag = "E" ; + new->coord = 0 ; + new->next = NULL ; + + //printf("in\n"); + linkedList* curSrc = src->next ; + //printf("out\n"); + + while(curSrc != NULL) { + //printf("cp\n"); + linked_add(new, curSrc->coord%8, curSrc->coord/16, curSrc->flag); + curSrc = curSrc->next; + } + + return new ; +} + +void linkedPrint(linkedList* lst) { + if(lst != NULL) { + printf("[(%d, %d), %s] ", lst->coord%8, lst->coord/16, lst->flag); + linkedPrint(lst->next); + } +} + // ------------------------------------------------------------------------------------------------ // void import_digits(SDL_Renderer* renderer) { diff --git a/src/base.h b/src/base.h index c693eb7..7235e8e 100644 --- a/src/base.h +++ b/src/base.h @@ -47,6 +47,22 @@ void append(array* arr, int elt); void pop(array* arr, int elt); +bool str_equal(char* s1, char* s2); + +void linked_add(linkedList* lst, int x, int y, char* flag); + +void linked_removeCoord(linkedList* lst, int x, int y); + +void linked_removeFlag(linkedList* lst, char* flag); + +void linked_change(linkedList* lst, int x, int y, char* flag); + +bool linked_mem(linkedList* lst, int x, int y, char** flag); + +linkedList* linked_copy(linkedList* src); + +void linkedPrint(linkedList* lst); + void import_digits(SDL_Renderer* renderer); void import_letters(SDL_Renderer* renderer); diff --git a/src/display.c b/src/display.c index 8b8fc32..19daf13 100644 --- a/src/display.c +++ b/src/display.c @@ -136,6 +136,22 @@ void drawStringToRenderer(SDL_Renderer* renderer, imgs data, char* s, int X, int } } +void linked_draw(SDL_Renderer* renderer, linkedList* lst, int chx, int chy, int xmin, int xmax, int ymin, int ymax) { + if(lst != NULL) { + int cux = 50*(8*chx + lst->coord/16); + int cuy = 50*(8*chy + lst->coord%8); + int cux2 = 50*(8*chx + lst->coord/16+1); + int cuy2 = 50*(8*chy + lst->coord%8+1); + int nxmin = to_int((to_double(cux) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ; + int nymin = to_int((to_double(cuy) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ; + int nxmin2 = to_int((to_double(cux2) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ; + int nymin2 = to_int((to_double(cuy2) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ; + placeRectToRenderer(renderer, nxmin, nymin, nxmin2 - nxmin, nymin2 - nymin, 32+96*(str_equal(lst->flag, "spinCC")), 255, 32+96*(str_equal(lst->flag, "spinCW")), SDL_ALPHA_OPAQUE/2); + + linked_draw(renderer, lst->next, chx, chy, xmin, xmax, ymin, ymax); + } +} + void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, int ymin, int ymax) { if(ch->draw_id != draw_par) { ch->draw_id = draw_par ; @@ -155,6 +171,7 @@ void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, cur = cur / 2 ; } } + linked_draw(renderer, ch->chdata.meta->next, ch->chx, ch->chy, xmin, xmax, ymin, ymax); } } // branchless goes brrr diff --git a/src/display.h b/src/display.h index 12da5c4..dad2607 100644 --- a/src/display.h +++ b/src/display.h @@ -21,6 +21,8 @@ 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 linked_draw(SDL_Renderer* renderer, linkedList* lst, int chx, int chy, int xmin, int xmax, int ymin, int ymax); + 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 distx, int disty); diff --git a/src/generation.c b/src/generation.c index 822313b..4330a4b 100644 --- a/src/generation.c +++ b/src/generation.c @@ -47,6 +47,8 @@ imgs letters ; template full ; template empty ; +linkedList* endLst ; + // yes Valentin I learned to use .h the intended way xD // ------------------------------------------------------------------------ // @@ -61,6 +63,7 @@ template copy(template src) { new.eastsig = src.eastsig; new.westsig = src.westsig; new.checkCompat = src.checkCompat ; + new.meta = linked_copy(src.meta); new.lines = malloc(sizeof(uint8_t)*8); for(int i = 0; i < 8; i++) { new.lines[i] = src.lines[i]; @@ -108,7 +111,16 @@ void print_template(int config_id) { printf("\n"); } -void rotateTemplateClockWise(int config_id) { +void rotateLinkedListCounterClockWise(linkedList* lst) { + if(lst != NULL) { + uint8_t newc = (lst->coord/16) + 16 * (7- (lst->coord%8)); + //printf("(%d, %d) -> (%d, %d)\n", lst->coord%8, lst->coord/16, newc%8, newc/16); + lst->coord = newc ; + rotateLinkedListCounterClockWise(lst->next); + } +} + +void rotateTemplateCounterClockWise(int config_id) { // 1st line become last column ... last line become 1st column uint8_t* new = malloc(sizeof(uint8_t)*8); @@ -128,9 +140,37 @@ void rotateTemplateClockWise(int config_id) { } }; - if(config_id >= 9 ) { - //print_template(config_id); + rotateLinkedListCounterClockWise(configs[config_id].meta); + + free(new); +} + +void rotateChunkCounterClockWise(int chx, int chy) { + chunk* ch = gridGet(map, chx, chy); + if(ch == NULL) { + fprintf(stderr, "ERROR : cannot rotate non-existing chunk\n"); + exit(1); } + // 1st line become last column ... last line become 1st column + uint8_t* new = malloc(sizeof(uint8_t)*8); + + ch->chdata.westsig = ch->chdata.lines[7]; + ch->chdata.eastsig = ch->chdata.lines[0]; + + for(int i = 0; i < 8; i++) { + new[i] = ch->chdata.lines[i]; + ch->chdata.lines[i] = 0; + }; + for(int i = 0; i < 8; i++) { + uint8_t rem = new[i]; + for(int j = 0; j < 8; j++) { + ch->chdata.lines[j] *= 2 ; + ch->chdata.lines[j] += rem%2 ; + rem = rem / 2 ; + } + }; + + rotateLinkedListCounterClockWise(ch->chdata.meta); free(new); } @@ -180,7 +220,7 @@ bool is_compat_with_spins(int cx, int cy, int 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)) { return true ; } else { - rotateTemplateClockWise(idx); + rotateTemplateCounterClockWise(idx); } }; return false; @@ -190,7 +230,7 @@ bool is_compat_with_spins_uno(int cx, int cy, int 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)) { return true ; } else { - rotateTemplateClockWise(idx); + rotateTemplateCounterClockWise(idx); return false; } } @@ -209,7 +249,7 @@ void generate_chunk_all(int cx, int cy) { if(is_compat_with_spins_uno(cx, cy, idx)) { i -= 1; if(i != 0) { - rotateTemplateClockWise(idx); + rotateTemplateCounterClockWise(idx); if(k == 3) { idx = (idx+1)%n_configs; k = 0 ; @@ -268,6 +308,11 @@ void initialize(SDL_Renderer* renderer) { full.westsig = 255 ; full.eastsig = 255 ; + full.meta = malloc(sizeof(linkedList)) ; + full.meta->flag = "E" ; + full.meta->coord = 0 ; + full.meta->next = NULL ; + full.checkCompat = false ; for(int i = 0; i < 8; i++) { @@ -292,6 +337,16 @@ void initialize(SDL_Renderer* renderer) { empty.id = -1 ; + empty.meta = malloc(sizeof(linkedList)) ; + empty.meta->flag = "E" ; + empty.meta->coord = 0 ; + empty.meta->next = NULL ; + + endLst = malloc(sizeof(linkedList)); + endLst->flag = "E"; + endLst->coord = 0 ; + endLst->next = NULL ; + generate_chunk(0, 0, 2); } @@ -310,15 +365,19 @@ void parse_one(FILE* ptr, FILE* ptr2, int index) { for(int j = 0; j < 8; j++) { int xres = get_integer_plus_align(ptr, ptr2); configs[index].lines[i] *= 2 ; - configs[index].lines[i] += xres ; + configs[index].lines[i] += (xres > 0) ; + + if(xres == 2) { + printf("[%d] SP+1 : %d, %d\n", index, i, 7-j); + linked_add(configs[index].meta, i, 7-j, "spinCC"); + } else if(xres == 3) { + printf("[%d] SP+1 : %d, %d\n", index, i, 7-j); + linked_add(configs[index].meta, i, 7-j, "spinCW"); + } if(j == 7) { - //configs[index].westsig *= 2; - //configs[index].westsig += xres; configs[index].westsig += pw(2, i) * xres ; } else if(j == 0) { - //configs[index].eastsig *= 2; - //configs[index].eastsig += xres; configs[index].eastsig += pw(2, i) * xres ; } } @@ -330,7 +389,9 @@ void parse_one(FILE* ptr, FILE* ptr2, int index) { printf("-----| Template %d (line %d) |-----\n", index, 9*index); print_template(index); printf("sigs : (%d, %d, %d, %d) (N, E, S, W)\n", configs[index].lines[0], configs[index].eastsig, configs[index].lines[7], configs[index].westsig); - printf("\n"); + printf("SP : "); + linkedPrint(configs[index].meta); + printf("\n-----------------------------------\n"); } void parse_configs(char* filename, int n_conf) { @@ -345,6 +406,12 @@ void parse_configs(char* filename, int n_conf) { configs[i].eastsig = 0 ; configs[i].westsig = 0 ; configs[i].checkCompat = doCheck ; + + configs[i].meta = malloc(sizeof(linkedList)) ; + configs[i].meta->flag = "E" ; + configs[i].meta->coord = 0 ; + configs[i].meta->next = NULL ; + configs[i].lines = malloc(sizeof(uint8_t)*8); for(int j = 0; j < 8; j++) { configs[i].lines[j] = 0; diff --git a/src/generation.h b/src/generation.h index 3e0bcb6..3b2a97d 100644 --- a/src/generation.h +++ b/src/generation.h @@ -9,7 +9,9 @@ void generate_chunk_raw(int x, int y, template tpl); void print_template(int config_id); -void rotateTemplateClockWise(int config_id); +void rotateTemplateCounterClockWise(int config_id); + +void rotateChunkCounterClockWise(int chx, int chy); void signature(template t); diff --git a/src/hash.h b/src/hash.h index 910202d..a65f79b 100644 --- a/src/hash.h +++ b/src/hash.h @@ -4,6 +4,14 @@ #define GRID_H #include +typedef enum special {ROT_CC, ROT_CW} special ; + +typedef struct linkedList { + uint8_t coord ; // coord%8 = x ; coord/16 = y + char* flag ; + struct linkedList* next ; +} linkedList ; + typedef struct template { uint8_t id ; uint8_t* lines ; // len = 8 @@ -12,6 +20,8 @@ typedef struct template { uint8_t eastsig ; uint8_t westsig ; + + linkedList* meta ; } template ; typedef struct chunk { diff --git a/src/move.c b/src/move.c index b956f2e..bb87546 100644 --- a/src/move.c +++ b/src/move.c @@ -19,17 +19,61 @@ #include "move.h" double speed = 0.5 ; -int precision = 12 ; +int precision = 8 ; double εx = 0.0; double εy = 0.0; +bool useSpecialTiles(int chx, int chy, int x, int y) { + chunk* ch = gridGet(map, chx, chy); + if(ch == NULL) { + fprintf(stderr, "ERROR : action performed in unloaded chunk\n"); + exit(1); + } + //linkedPrint(ch->chdata.meta->next); + //printf("\n"); + char* flag ; + if(linked_mem(ch->chdata.meta->next, y, x, &flag)) { + //printf("Triggered\n"); + if(str_equal(flag, "spinCC")) { + rotateChunkCounterClockWise(chx, chy); + double plx = (double)(player_x + εx) ; + double ply = (double)(player_y + εy) ; + + double npx = 7.99999999 - ply ; + double npy = plx ; + //printf("(%lf, %lf) -> (%lf, %lf)\n", plx, ply, npx, npy); + player_x = (int)npx ; + εx = (double)(npx - (int)npx) ; + + player_y = (int)npy ; + εy = (double)(npy - (int)npy) ; + } else if(str_equal(flag, "spinCW")) { + for(int k = 0; k < 3; k++) { + rotateChunkCounterClockWise(chx, chy); + double plx = (double)(player_x + εx) ; + double ply = (double)(player_y + εy) ; + + double npx = 7.99999999 - ply ; + double npy = plx ; + //printf("(%lf, %lf) -> (%lf, %lf)\n", plx, ply, npx, npy); + player_x = (int)npx ; + εx = (double)(npx - (int)npx) ; + + player_y = (int)npy ; + εy = (double)(npy - (int)npy) ; + } + } + } + return true ; +} + bool checkCollision() { return (unpack_coord(gridGet(map, player_cx, player_cy)->chdata.lines, player_x, player_y)); } bool checkCollision2(int cx, int cy, int x, int y) { - return (unpack_coord(gridGet(map, cx, cy)->chdata.lines, x, y)); + return (unpack_coord(gridGet(map, cx, cy)->chdata.lines, x, y) && useSpecialTiles(cx, cy, x, y)); } void normalize(int* ch_coord, int* coord, double* ε) { @@ -50,35 +94,6 @@ void normalize(int* ch_coord, int* coord, double* ε) { } } -bool checkCollisionSquare(double square_size) { - double εxmin = εx - square_size; - double εxmax = εx + square_size; - double εymin = εy - square_size; - double εymax = εy + square_size; - - int xmin = player_x ; - int xmax = player_x ; - int ymin = player_y ; - int ymax = player_y ; - - int cxmin = player_cx ; - int cxmax = player_cx ; - int cymin = player_cy ; - int cymax = player_cy ; - - normalize(&cxmin, &xmin, &εxmin); - normalize(&cxmax, &xmax, &εxmax); - normalize(&cymin, &ymin, &εymin); - normalize(&cymax, &ymax, &εymax); - - return ( - checkCollision2(cxmin, cymin, xmin, ymin) || - checkCollision2(cxmin, cymax, xmin, ymax) || - checkCollision2(cxmax, cymin, xmax, ymin) || - checkCollision2(cxmax, cymax, xmax, ymax) - ); -} - void increment_x(double dx) { εx = εx + dx ; if(εx >= 1.0) { @@ -117,10 +132,39 @@ void increment_y(double dy) { } } +bool checkCollisionSquare(double square_size) { + double εxmin = εx - square_size; + double εxmax = εx + square_size; + double εymin = εy - square_size; + double εymax = εy + square_size; + + int xmin = player_x ; + int xmax = player_x ; + int ymin = player_y ; + int ymax = player_y ; + + int cxmin = player_cx ; + int cxmax = player_cx ; + int cymin = player_cy ; + int cymax = player_cy ; + + normalize(&cxmin, &xmin, &εxmin); + normalize(&cxmax, &xmax, &εxmax); + normalize(&cymin, &ymin, &εymin); + normalize(&cymax, &ymax, &εymax); + + return ( + checkCollision2(cxmin, cymin, xmin, ymin) || + checkCollision2(cxmin, cymax, xmin, ymax) || + checkCollision2(cxmax, cymin, xmax, ymin) || + checkCollision2(cxmax, cymax, xmax, ymax) + ); +} + bool moveRequest(double dx, double dy) { increment_x(dx); increment_y(dy); - if(checkCollisionSquare(0.15)) { + if(checkCollisionSquare(0.1)) { increment_x(-dx); increment_y(-dy); return false; @@ -181,7 +225,9 @@ void moveFunctionMaster(SDL_Renderer* renderer) { drawNumberToRenderer(renderer, digits, player_cx, 10, 10, 50, 70, 0); drawNumberToRenderer(renderer, digits, player_cy, 10, 80, 50, 70, 0); drawNumberToRenderer(renderer, digits, player_x, __width__ / 3, 10, 50, 70, 0); + drawCharToRenderer(renderer, letters, 'x', __width__ / 3 -20, 10, 50, 70); drawNumberToRenderer(renderer, digits, player_y, __width__ / 3, 80, 50, 70, 0); + drawCharToRenderer(renderer, letters, 'y', __width__ / 3 -20, 80, 50, 70); drawNumberToRenderer(renderer, digits, to_int(εx*100), 2 * __width__ / 3, 10, 50, 70, 0); drawNumberToRenderer(renderer, digits, to_int(εy*100), 2 * __width__ / 3, 80, 50, 70, 0); updateRenderer(renderer); diff --git a/src/move.h b/src/move.h index 0887dcd..1422171 100644 --- a/src/move.h +++ b/src/move.h @@ -1,18 +1,20 @@ #ifndef BACK_MOVE_H #define BACK_MOVE_H +bool useSpecialTiles(int chx, int chy, int x, int y); + bool checkCollision(); bool checkCollision2(int cx, int cy, int x, int y); void normalize(int* ch_coord, int* coord, double* ε); -bool checkCollisionSquare(double square_size); - void increment_x(double dx); void increment_y(double dy); +bool checkCollisionSquare(double square_size); + bool moveRequest(double dx, double dy); void moveControl(bool* halt); diff --git a/src/structure.h b/src/structure.h index 05bfae3..481cef9 100644 --- a/src/structure.h +++ b/src/structure.h @@ -17,6 +17,8 @@ extern Grid map ; extern bool doCheck ; +extern linkedList* endLst ; + extern int emptyChance ; extern int sizeIncreaseChance ; diff --git a/templates_lv1.txt b/templates_lv1.txt index 58cb933..5d3834b 100644 --- a/templates_lv1.txt +++ b/templates_lv1.txt @@ -91,8 +91,8 @@ 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 -0 0 0 1 1 1 0 0 -0 0 1 1 1 0 0 0 +0 0 0 1 1 2 0 0 +0 0 3 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 @@ -100,8 +100,8 @@ 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 -0 0 0 1 1 1 0 0 -0 0 1 1 1 0 0 0 +0 0 0 1 1 2 0 0 +0 0 3 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 @@ -109,8 +109,8 @@ 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 -0 0 0 1 1 1 0 1 -0 0 1 1 1 0 0 1 +0 0 0 1 1 2 0 1 +0 0 3 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1