some fixes to fillRect
This commit is contained in:
parent
0a61e13d9d
commit
ac059b3f74
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
14
src/base.c
14
src/base.c
|
@ -56,6 +56,20 @@ int max(int a, int b) {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double min_db(double a, double b) {
|
||||||
|
if(a > b) {
|
||||||
|
return b;
|
||||||
|
};
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
double max_db(double a, double b) {
|
||||||
|
if(a < b) {
|
||||||
|
return b;
|
||||||
|
};
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
int sign(int n) {
|
int sign(int n) {
|
||||||
if(n < 0) {
|
if(n < 0) {
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
|
@ -11,6 +11,10 @@ int min(int a, int b);
|
||||||
|
|
||||||
int max(int a, int b);
|
int max(int a, int b);
|
||||||
|
|
||||||
|
double min_db(double a, double b);
|
||||||
|
|
||||||
|
double max_db(double a, double b);
|
||||||
|
|
||||||
int sign(int n);
|
int sign(int n);
|
||||||
|
|
||||||
double absf(double n);
|
double absf(double n);
|
||||||
|
|
|
@ -168,6 +168,8 @@ bool isPtInPoly(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4,
|
||||||
return (sign(v1) == sign(v2) && sign(v2) == sign(v3) && sign(v3) == sign(v4));
|
return (sign(v1) == sign(v2) && sign(v2) == sign(v3) && sign(v3) == sign(v4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int total ;
|
||||||
|
|
||||||
void fillQuadPoly(SDL_Renderer* renderer, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
|
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 ymin = min(min(y1, y2), min(y3, y4));
|
||||||
int ymax = max(max(y1, y2), max(y3, y4));
|
int ymax = max(max(y1, y2), max(y3, y4));
|
||||||
|
@ -180,6 +182,15 @@ void fillQuadPoly(SDL_Renderer* renderer, int x1, int y1, int x2, int y2, int x3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/*double step = max_db(distance_pt(x1, y1, x2, y2), distance_pt(x3, y3, x4, y4));
|
||||||
|
double theta = 0.0 ;
|
||||||
|
while(theta <= 1.0) {
|
||||||
|
total += 1 ;
|
||||||
|
drawLineWithThicc(renderer, 2, convex_seg(x1, x2, theta), convex_seg(x4, x3, theta), convex_seg(y1, y2, theta), convex_seg(y4, y3, theta), 255, 192, 255, SDL_ALPHA_OPAQUE);
|
||||||
|
theta += 1.0 / step;
|
||||||
|
}*/
|
||||||
|
/*total += (ymax-ymin)*(xmax-xmin) ;
|
||||||
|
printf("T = %d\n", total);*/
|
||||||
drawLineWithThicc(renderer, 2, x1, x2, y1, y2, 32, 32, 32, SDL_ALPHA_OPAQUE);
|
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, 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, x3, x4, y3, y4, 32, 32, 32, SDL_ALPHA_OPAQUE);
|
||||||
|
@ -250,7 +261,6 @@ void drawHashToRenderer(SDL_Renderer* renderer, int chx, int chy, int xmin, int
|
||||||
fprintf(stderr, "NO (%d, %d)\n", chx, chy);
|
fprintf(stderr, "NO (%d, %d)\n", chx, chy);
|
||||||
exit(1);
|
exit(1);
|
||||||
};
|
};
|
||||||
drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true);
|
|
||||||
|
|
||||||
if(distx != render_distance -1 && !gridMem(map, chx+1, chy)) {
|
if(distx != render_distance -1 && !gridMem(map, chx+1, chy)) {
|
||||||
generate_chunk_all(chx+1, chy);
|
generate_chunk_all(chx+1, chy);
|
||||||
|
@ -287,7 +297,7 @@ void drawMapToRendererV2(SDL_Renderer* renderer, int xmin, int xmax, int ymin, i
|
||||||
|
|
||||||
chunk* todraw = gridGet(map, 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, true);
|
||||||
drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, false);
|
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);
|
placeRectToRenderer(renderer, __width__ /2 - 5*zoom/100, __height__ /2 - 5*zoom/100, 10*zoom/100, 10*zoom/100, 255, 255, 32, SDL_ALPHA_OPAQUE);
|
||||||
|
|
|
@ -24,7 +24,7 @@ template* configs ;
|
||||||
array** matches ;
|
array** matches ;
|
||||||
int n_configs = 18;
|
int n_configs = 18;
|
||||||
|
|
||||||
int render_distance = 2 ;
|
int render_distance = 4 ;
|
||||||
|
|
||||||
int player_x = 4;
|
int player_x = 4;
|
||||||
int player_y = 4;
|
int player_y = 4;
|
||||||
|
@ -42,6 +42,7 @@ imgs digits ;
|
||||||
imgs letters ;
|
imgs letters ;
|
||||||
|
|
||||||
template full ;
|
template full ;
|
||||||
|
template empty ;
|
||||||
|
|
||||||
int* sorted_x ;
|
int* sorted_x ;
|
||||||
int* sorted_y ;
|
int* sorted_y ;
|
||||||
|
@ -170,17 +171,6 @@ void signature(template t) {
|
||||||
printf("[WEST] %d\n\n", t.westsig);
|
printf("[WEST] %d\n\n", t.westsig);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_compat_with_spins(int cx, int cy, int idx) {
|
|
||||||
for(int k = 0; k < 4; k++) {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_compat_with_spins_uno(int cx, int cy, int idx) {
|
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)) {
|
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 ;
|
return true ;
|
||||||
|
@ -237,11 +227,21 @@ void initialize(SDL_Renderer* renderer) {
|
||||||
import_digits(renderer);
|
import_digits(renderer);
|
||||||
|
|
||||||
full.lines = malloc(sizeof(uint8_t)*8);
|
full.lines = malloc(sizeof(uint8_t)*8);
|
||||||
|
full.eastsig = 255 ;
|
||||||
|
full.westsig = 255 ;
|
||||||
for(int i = 0; i < 8; i++) {
|
for(int i = 0; i < 8; i++) {
|
||||||
full.lines[i] = 255 ;
|
full.lines[i] = 255 ;
|
||||||
};
|
};
|
||||||
full.id = -1 ;
|
full.id = -1 ;
|
||||||
|
|
||||||
|
empty.lines = malloc(sizeof(uint8_t)*8);
|
||||||
|
empty.eastsig = 0 ;
|
||||||
|
empty.westsig = 0 ;
|
||||||
|
for(int i = 0; i < 8; i++) {
|
||||||
|
empty.lines[i] = 0 ;
|
||||||
|
};
|
||||||
|
empty.id = -2 ;
|
||||||
|
|
||||||
int xys = pw(2*render_distance+1, 2);
|
int xys = pw(2*render_distance+1, 2);
|
||||||
sorted_x = malloc(sizeof(int)*xys);
|
sorted_x = malloc(sizeof(int)*xys);
|
||||||
sorted_y = malloc(sizeof(int)*xys);
|
sorted_y = malloc(sizeof(int)*xys);
|
||||||
|
@ -284,6 +284,7 @@ void destroy() {
|
||||||
free_digits(letters);
|
free_digits(letters);
|
||||||
|
|
||||||
free(full.lines);
|
free(full.lines);
|
||||||
|
free(empty.lines);
|
||||||
|
|
||||||
free(sorted_x);
|
free(sorted_x);
|
||||||
free(sorted_y);
|
free(sorted_y);
|
||||||
|
|
|
@ -176,8 +176,8 @@ void moveFunctionMaster(SDL_Renderer* renderer) {
|
||||||
while(!halt) {
|
while(!halt) {
|
||||||
moveControl(&halt);
|
moveControl(&halt);
|
||||||
resetRenderer(renderer);
|
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)));
|
//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_cx, 10, 10, 50, 70, 0);
|
||||||
drawNumberToRenderer(renderer, digits, player_cy, 10, 80, 50, 70, 0);
|
drawNumberToRenderer(renderer, digits, player_cy, 10, 80, 50, 70, 0);
|
||||||
drawNumberToRenderer(renderer, digits, player_x, __width__ / 3, 10, 50, 70, 0);
|
drawNumberToRenderer(renderer, digits, player_x, __width__ / 3, 10, 50, 70, 0);
|
||||||
|
@ -185,7 +185,8 @@ void moveFunctionMaster(SDL_Renderer* renderer) {
|
||||||
drawNumberToRenderer(renderer, digits, to_int(εx*100), 2 * __width__ / 3, 10, 50, 70, 0);
|
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);
|
drawNumberToRenderer(renderer, digits, to_int(εy*100), 2 * __width__ / 3, 80, 50, 70, 0);
|
||||||
updateRenderer(renderer);
|
updateRenderer(renderer);
|
||||||
|
//exit(1);
|
||||||
draw_par += 1 ;
|
draw_par += 1 ;
|
||||||
usleep(20000);
|
//usleep(20000);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -47,6 +47,8 @@ extern imgs letters ;
|
||||||
|
|
||||||
extern template full ;
|
extern template full ;
|
||||||
|
|
||||||
|
extern template empty ;
|
||||||
|
|
||||||
extern int* sorted_x ;
|
extern int* sorted_x ;
|
||||||
extern int* sorted_y ;
|
extern int* sorted_y ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue