From 0a61e13d9db21b57ae45277dd885e4f015289039 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Wed, 28 Aug 2024 11:23:32 +0200 Subject: [PATCH] added top-down view (laggy) --- .vscode/settings.json | 3 +- bin/back | Bin 102168 -> 110336 bytes src/base.c | 7 +++ src/base.h | 2 + src/display.c | 110 +++++++++++++++++++++++++++++++++++++++--- src/display.h | 18 ++++++- src/generation.c | 49 ++++++++++++++++++- src/move.c | 5 +- src/structure.h | 3 ++ 9 files changed, 183 insertions(+), 14 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3d80f2c..5f41ea9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,6 +8,7 @@ "base.h": "c", "limits": "c", "move.h": "c", - "stdbool.h": "c" + "stdbool.h": "c", + "sdl2_gfxprimitives.h": "c" } } \ No newline at end of file diff --git a/bin/back b/bin/back index 594527e33be893dbfa235f5deb412eadba3e1e7f..871299594a6b9e19169e60ce7f9cfbcb2e2e4497 100755 GIT binary patch literal 110336 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

qd#x-XSNdQ1I&-~LG~EZ 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 z 0.0f) { return n; diff --git a/src/base.h b/src/base.h index c693eb7..408a197 100644 --- a/src/base.h +++ b/src/base.h @@ -11,6 +11,8 @@ int min(int a, int b); int max(int a, int b); +int sign(int n); + double absf(double n); int convex_seg(int x1, int x2, double theta); diff --git a/src/display.c b/src/display.c index ff17c0c..04a37ad 100644 --- a/src/display.c +++ b/src/display.c @@ -136,8 +136,58 @@ void drawStringToRenderer(SDL_Renderer* renderer, imgs data, char* s, int X, int } } -void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, int ymin, int ymax) { - if(ch->draw_id != draw_par) { +void rescale(int* xm, int* xM, int* ym, int* yM, double scale) { + *xm = (int)((*xm - __width__/2) * scale + __width__/2) ; + *xM = (int)((*xM - __width__/2) * scale + __width__/2) ; + *ym = (int)((*ym - __height__/2) * scale + __height__/2) ; + *yM = (int)((*yM - __height__/2) * scale + __height__/2) ; +} + +bool isOnLeft(chunk* ch, int x, int y) { + return (x == 0 || unpack_coord(ch->chdata.lines, x-1, y)); +} + +bool isOnRight(chunk* ch, int x, int y) { + return (x == 7 || unpack_coord(ch->chdata.lines, x+1, y)); +} + +bool isOnTop(chunk* ch, int x, int y) { + return (y == 0 || unpack_coord(ch->chdata.lines, x, y-1)); +} + +bool isOnBottom(chunk* ch, int x, int y) { + return (y == 7 || unpack_coord(ch->chdata.lines, x, y+1)); +} + +bool isPtInPoly(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int xp, int yp) { + // (x2 - x1) * (yp - y1) - (xp - x1) * (y2 - y1) ; + int v1 = (x2 - x1) * (yp - y1) - (xp - x1) * (y2 - y1) ; + int v2 = (x3 - x2) * (yp - y2) - (xp - x2) * (y3 - y2) ; + int v3 = (x4 - x3) * (yp - y3) - (xp - x3) * (y4 - y3) ; + int v4 = (x1 - x4) * (yp - y4) - (xp - x4) * (y1 - y4) ; + return (sign(v1) == sign(v2) && sign(v2) == sign(v3) && sign(v3) == sign(v4)); +} + +void fillQuadPoly(SDL_Renderer* renderer, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + int ymin = min(min(y1, y2), min(y3, y4)); + int ymax = max(max(y1, y2), max(y3, y4)); + int xmin = min(min(x1, x2), min(x3, x4)); + int xmax = max(max(x1, x2), max(x3, x4)); + for(int h = ymin; h <= ymax; h++) { + for(int w = xmin; w <= xmax; w++) { + if(isPtInPoly(x1, y1, x2, y2, x3, y3, x4, y4, w, h)) { + SDL_RenderDrawPoint(renderer, w, h); + } + } + }; + drawLineWithThicc(renderer, 2, x1, x2, y1, y2, 32, 32, 32, SDL_ALPHA_OPAQUE); + drawLineWithThicc(renderer, 2, x2, x3, y2, y3, 32, 32, 32, SDL_ALPHA_OPAQUE); + drawLineWithThicc(renderer, 2, x3, x4, y3, y4, 32, 32, 32, SDL_ALPHA_OPAQUE); + drawLineWithThicc(renderer, 2, x4, x1, y4, y1, 32, 32, 32, SDL_ALPHA_OPAQUE); +} + +void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, int ymin, int ymax, bool period) { + if(ch->draw_id != draw_par || !period) { ch->draw_id = draw_par ; for(int i = 0; i < 8; i++) { uint8_t cur = ch->chdata.lines[i] ; @@ -150,12 +200,40 @@ void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, if(cur%2 == 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)) ; - if(abs(ch->chx + ch->chy)%2 == 0) { - placeRectToRenderer(renderer, nxmin, nymin, nxmin2 - nxmin, nymin2 - nymin, 255, 192, 192, SDL_ALPHA_OPAQUE); + int nxmax = to_int((to_double(cux2) - to_double(xmin)) * to_double(__width__)) / (to_double(xmax) - to_double(xmin)) ; + int nymax = to_int((to_double(cuy2) - to_double(ymin)) * to_double(__height__)) / (to_double(ymax) - to_double(ymin)) ; + + uint8_t R = 255 - 63 * ((abs(ch->chx) + abs(ch->chy))%2 == 0) ; + uint8_t G = 255 ; + uint8_t B = 255 - 63 * ((abs(ch->chx) + abs(ch->chy))%2 == 1) ; + + int sxmin = nxmin ; + int sxmax = nxmax ; + int symin = nymin ; + int symax = nymax ; + + rescale(&nxmin, &nxmax, &nymin, &nymax, 1.5); + if(period) { + if(!isOnLeft(ch, i, j) && (8*ch->chy + i) >= (8*player_cy + player_y)) { // North + SDL_SetRenderDrawColor(renderer, R/2, G/2, B/2, SDL_ALPHA_OPAQUE); + fillQuadPoly(renderer, nxmin, nymin, sxmin, symin, sxmax, symin, nxmax, nymin); + } + if(!isOnBottom(ch, i, j) && (8*ch->chx + j) <= (8*player_cx + player_x)) { // West + SDL_SetRenderDrawColor(renderer, R/2, G/2, B/2, SDL_ALPHA_OPAQUE); + fillQuadPoly(renderer, nxmax, nymax, sxmax, symax, sxmax, symin, nxmax, nymin); + } + if(!isOnRight(ch, i, j) && (8*ch->chy + i) <= (8*player_cy + player_y)) { // South + SDL_SetRenderDrawColor(renderer, R/2, G/2, B/2, SDL_ALPHA_OPAQUE); + fillQuadPoly(renderer, nxmax, nymax, sxmax, symax, sxmin, symax, nxmin, nymax); + } + if(!isOnTop(ch, i, j) && (8*ch->chx + j) >= (8*player_cx + player_x)) { // East + SDL_SetRenderDrawColor(renderer, R/2, G/2, B/2, SDL_ALPHA_OPAQUE); + fillQuadPoly(renderer, nxmin, nymin, sxmin, symin, sxmin, symax, nxmin, nymax); + } } else { - placeRectToRenderer(renderer, nxmin, nymin, nxmin2 - nxmin, nymin2 - nymin, 192, 192, 255, SDL_ALPHA_OPAQUE); + SDL_SetRenderDrawColor(renderer, R, G, B, SDL_ALPHA_OPAQUE); + placeRectToRenderer(renderer, nxmin, nymin, nxmax - nxmin, nymax - nymin, 32, 32, 32, SDL_ALPHA_OPAQUE); + placeRectToRenderer(renderer, nxmin+1, nymin+1, nxmax - nxmin -2, nymax - nymin -2, R, G, B, SDL_ALPHA_OPAQUE); } }; cur = cur / 2 ; @@ -172,7 +250,7 @@ void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int fprintf(stderr, "NO (%d, %d)\n", chx, chy); exit(1); }; - drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax); + drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true); if(distx != render_distance -1 && !gridMem(map, chx+1, chy)) { generate_chunk_all(chx+1, chy); @@ -191,10 +269,26 @@ void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int drawHashToRenderer(renderer, chx-1, chy, xmin, xmax, ymin, ymax, distx+1, disty); drawHashToRenderer(renderer, chx, chy+1, xmin, xmax, ymin, ymax, distx, disty+1); drawHashToRenderer(renderer, chx, chy-1, xmin, xmax, ymin, ymax, distx, disty+1); + + drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, false); } } void drawMapToRenderer(SDL_Renderer* renderer, int xmin, int xmax, int ymin, int ymax) { drawHashToRenderer(renderer, player_cx, player_cy, xmin, xmax, ymin, ymax, 0, 0); placeRectToRenderer(renderer, __width__ /2 - 5*zoom/100, __height__ /2 - 5*zoom/100, 10*zoom/100, 10*zoom/100, 255, 255, 32, SDL_ALPHA_OPAQUE); +} + +void drawMapToRendererV2(SDL_Renderer* renderer, int xmin, int xmax, int ymin, int ymax) { + for(int i = 0; i < (2*render_distance+1)*(2*render_distance+1); i++) { + if(!gridMem(map, player_cx+sorted_x[i], player_cy + sorted_y[i])) { + generate_chunk_all(player_cx+sorted_x[i], player_cy + sorted_y[i]); + } + + chunk* todraw = gridGet(map, player_cx+sorted_x[i], player_cy + sorted_y[i]) ; + + //drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true); + drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, false); + } + placeRectToRenderer(renderer, __width__ /2 - 5*zoom/100, __height__ /2 - 5*zoom/100, 10*zoom/100, 10*zoom/100, 255, 255, 32, SDL_ALPHA_OPAQUE); } \ No newline at end of file diff --git a/src/display.h b/src/display.h index 12da5c4..60a4f08 100644 --- a/src/display.h +++ b/src/display.h @@ -21,10 +21,26 @@ 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); +void rescale(int* xm, int* xM, int* ym, int* yM, double scale); + +bool isOnLeft(chunk* ch, int x, int y); + +bool isOnRight(chunk* ch, int x, int y); + +bool isOnTop(chunk* ch, int x, int y); + +bool isOnBottom(chunk* ch, int x, int y); + +bool isPtInPoly(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int xp, int yp); + +void fillQuadPoly(SDL_Renderer* renderer, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); + +void drawChunkToRenderer(SDL_Renderer* renderer, chunk* ch, int xmin, int xmax, int ymin, int ymax, bool period); void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int xmax, int ymin, int ymax, int distx, int disty); void drawMapToRenderer(SDL_Renderer* renderer, int xmin, int xmax, int ymin, int ymax); +void drawMapToRendererV2(SDL_Renderer* renderer, int xmin, int xmax, int ymin, int ymax); + #endif \ No newline at end of file diff --git a/src/generation.c b/src/generation.c index dd7ba3c..4cc6097 100644 --- a/src/generation.c +++ b/src/generation.c @@ -24,7 +24,7 @@ template* configs ; array** matches ; int n_configs = 18; -int render_distance = 4 ; +int render_distance = 2 ; int player_x = 4; int player_y = 4; @@ -43,12 +43,15 @@ imgs letters ; template full ; +int* sorted_x ; +int* sorted_y ; + // yes Valentin I learned to use .h the intended way xD // ------------------------------------------------------------------------ // bool unpack_coord(uint8_t* lines, int cx, int cy) { - return (bool)((lines[cy]/pw(2, cx))%2); + return (bool)((lines[cx]/pw(2, cy))%2); } template copy(template src) { @@ -91,6 +94,13 @@ void print_template(int config_id) { printf("(%d)\n", configs[config_id].lines[i]); }; printf("\n"); + for(int i = 0; i < 8; i++) { + for(int j = 0; j < 8; j++) { + printf("%d ", unpack_coord(configs[config_id].lines, i, j)); + }; + printf("\n"); + }; + printf("\n"); } void rotateTemplateClockWise(int config_id) { @@ -232,6 +242,38 @@ void initialize(SDL_Renderer* renderer) { }; full.id = -1 ; + int xys = pw(2*render_distance+1, 2); + sorted_x = malloc(sizeof(int)*xys); + sorted_y = malloc(sizeof(int)*xys); + + int i = 0 ; + for(int w = -render_distance; w <= render_distance; w++) { + for(int h = -render_distance; h <= render_distance; h++) { + sorted_x[i] = w ; + sorted_y[i] = h ; + i += 1; + } + } + + for(int k = 0; k < xys-1; k++) { + for(int l = 0; l < xys-1; l++) { + if(abs(sorted_x[l]) + abs(sorted_y[l]) < abs(sorted_x[1+l]) + abs(sorted_y[1+l])) { + int tpx = sorted_x[l]; + int tpy = sorted_y[l]; + + sorted_x[l] = sorted_x[l+1]; + sorted_y[l] = sorted_y[l+1]; + + sorted_x[l+1] = tpx; + sorted_y[l+1] = tpy ; + } + } + } + + for(int k = 0; k < xys; k++) { + printf("[%d, %d] -> (%d)\n", sorted_x[k], sorted_y[k], abs(sorted_x[k]) + abs(sorted_y[k])); + } + generate_chunk(0, 0, 2); } @@ -242,6 +284,9 @@ void destroy() { free_digits(letters); free(full.lines); + + free(sorted_x); + free(sorted_y); } void parse_one(FILE* ptr, FILE* ptr2, int index) { diff --git a/src/move.c b/src/move.c index 4133680..fe24c66 100644 --- a/src/move.c +++ b/src/move.c @@ -29,7 +29,7 @@ bool checkCollision() { } 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, y, x)); } void normalize(int* ch_coord, int* coord, double* ε) { @@ -176,7 +176,8 @@ void moveFunctionMaster(SDL_Renderer* renderer) { while(!halt) { moveControl(&halt); resetRenderer(renderer); - drawMapToRenderer(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy))); + //drawMapToRenderer(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy))); + drawMapToRendererV2(renderer, -300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), 300 * 250/zoom + to_int(50 * (8*player_cx + player_x + εx)), -300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy)), 300 * 250/zoom + to_int(50 * (8*player_cy + player_y + εy))); 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); diff --git a/src/structure.h b/src/structure.h index b33afd8..22708ef 100644 --- a/src/structure.h +++ b/src/structure.h @@ -47,4 +47,7 @@ extern imgs letters ; extern template full ; +extern int* sorted_x ; +extern int* sorted_y ; + #endif \ No newline at end of file