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;
|
||||
}
|
||||
|
||||
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) {
|
||||
if(n < 0) {
|
||||
return (-1);
|
||||
|
|
|
@ -11,6 +11,10 @@ int min(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);
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
static int total ;
|
||||
|
||||
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));
|
||||
|
@ -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, x2, x3, y2, y3, 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);
|
||||
exit(1);
|
||||
};
|
||||
drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true);
|
||||
|
||||
if(distx != render_distance -1 && !gridMem(map, 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]) ;
|
||||
|
||||
//drawChunkToRenderer(renderer, todraw, xmin, xmax, ymin, ymax, true);
|
||||
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);
|
||||
|
|
|
@ -24,7 +24,7 @@ template* configs ;
|
|||
array** matches ;
|
||||
int n_configs = 18;
|
||||
|
||||
int render_distance = 2 ;
|
||||
int render_distance = 4 ;
|
||||
|
||||
int player_x = 4;
|
||||
int player_y = 4;
|
||||
|
@ -42,6 +42,7 @@ imgs digits ;
|
|||
imgs letters ;
|
||||
|
||||
template full ;
|
||||
template empty ;
|
||||
|
||||
int* sorted_x ;
|
||||
int* sorted_y ;
|
||||
|
@ -170,17 +171,6 @@ void signature(template t) {
|
|||
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) {
|
||||
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 ;
|
||||
|
@ -237,11 +227,21 @@ void initialize(SDL_Renderer* renderer) {
|
|||
import_digits(renderer);
|
||||
|
||||
full.lines = malloc(sizeof(uint8_t)*8);
|
||||
full.eastsig = 255 ;
|
||||
full.westsig = 255 ;
|
||||
for(int i = 0; i < 8; i++) {
|
||||
full.lines[i] = 255 ;
|
||||
};
|
||||
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);
|
||||
sorted_x = malloc(sizeof(int)*xys);
|
||||
sorted_y = malloc(sizeof(int)*xys);
|
||||
|
@ -284,6 +284,7 @@ void destroy() {
|
|||
free_digits(letters);
|
||||
|
||||
free(full.lines);
|
||||
free(empty.lines);
|
||||
|
||||
free(sorted_x);
|
||||
free(sorted_y);
|
||||
|
|
|
@ -176,8 +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)));
|
||||
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)));
|
||||
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);
|
||||
|
@ -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(εy*100), 2 * __width__ / 3, 80, 50, 70, 0);
|
||||
updateRenderer(renderer);
|
||||
//exit(1);
|
||||
draw_par += 1 ;
|
||||
usleep(20000);
|
||||
//usleep(20000);
|
||||
}
|
||||
}
|
|
@ -47,6 +47,8 @@ extern imgs letters ;
|
|||
|
||||
extern template full ;
|
||||
|
||||
extern template empty ;
|
||||
|
||||
extern int* sorted_x ;
|
||||
extern int* sorted_y ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue