diff options
| author | Philip <philip@philip-linuxlaptop.(none)> | 2010-11-19 23:01:56 (GMT) |
|---|---|---|
| committer | Philip <philip@philip-linuxlaptop.(none)> | 2010-11-19 23:01:56 (GMT) |
| commit | c1182db42d609a181128b818da28d323c39445fc (patch) | |
| tree | 78d15c7307271034e00f0902904bc555b9ff5799 /src/graphics.c | |
| parent | 435f71c7814cf9d4c55168852caf21ac80674490 (diff) | |
| download | powder-c1182db42d609a181128b818da28d323c39445fc.zip powder-c1182db42d609a181128b818da28d323c39445fc.tar.gz | |
Fixed SWCH for real. Fix repeating spark while creating it. Adjustable x and y for brushes.
Diffstat (limited to 'src/graphics.c')
| -rw-r--r-- | src/graphics.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/graphics.c b/src/graphics.c index ee89625..99e691e 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -2838,25 +2838,33 @@ corrupt: return 1; } -void render_cursor(pixel *vid, int x, int y, int t, int r) +void render_cursor(pixel *vid, int x, int y, int t, float rx, float ry) { int i,j,c; if(t<PT_NUM||t==SPC_AIR||t==SPC_HEAT||t==SPC_COOL||t==SPC_VACUUM) { - if(r<=0) + if(rx<=0) + xor_pixel(x, y, vid); + else if(ry<=0) + xor_pixel(x, y, vid); + if(rx+ry<=0) xor_pixel(x, y, vid); else if(CURRENT_BRUSH==SQUARE_BRUSH) - for(j=-r; j<=r; j++) + { + for(j=0; j<=ry; j++) + for(i=0; i<=rx; i++) + if(i*j<=ry*rx && ((i+1)>rx || (j+1)>ry)) { - xor_pixel(x+r, y+j, vid); - xor_pixel(x-r, y+j, vid); - if(abs(j)<r) xor_pixel(x+j, y-r, vid); - if(abs(j)<r) xor_pixel(x+j, y+r, vid); + xor_pixel(x+i, y+j, vid); + xor_pixel(x-i, y-j, vid); + if(i&&j)xor_pixel(x+i, y-j, vid); + if(i&&j)xor_pixel(x-i, y+j, vid); } + } else if(CURRENT_BRUSH==CIRCLE_BRUSH) - for(j=0; j<=r; j++) - for(i=0; i<=r; i++) - if(i*i+j*j<=r*r && ((i+1)*(i+1)+j*j>r*r || i*i+(j+1)*(j+1)>r*r)) + for(j=0; j<=ry; j++) + for(i=0; i<=rx; i++) + if((i*i)/(rx*rx)+(j*j)/(ry*rx)<=1 && (((i+1)*(i+1))/(rx*rx)+(j*j)/(ry*rx)>1 || ((i*i)/(rx*rx)+((j+1)*(j+1))/(ry*ry)>1))) { xor_pixel(x+i, y+j, vid); if(j) xor_pixel(x+i, y-j, vid); @@ -2867,7 +2875,7 @@ void render_cursor(pixel *vid, int x, int y, int t, int r) else { int tc; - c = (r/CELL) * CELL; + c = (rx/CELL) * CELL; x = (x/CELL) * CELL; y = (y/CELL) * CELL; |
