summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon <simon@hardwired.org.uk>2010-12-24 18:13:13 (GMT)
committer Simon <simon@hardwired.org.uk>2010-12-24 18:13:13 (GMT)
commit16f7cdaef61dd7ff57a20e96984db91f04ec30b2 (patch)
tree4a82971efd3fa3d37891f833e2d4668de15ae987 /src
parentb86e6d96d0b82656a0244f5e2c59fe6ad3b48efd (diff)
parent41d9dca73fd5f29bfd30927ec5429d050718f68c (diff)
downloadpowder-16f7cdaef61dd7ff57a20e96984db91f04ec30b2.zip
powder-16f7cdaef61dd7ff57a20e96984db91f04ec30b2.tar.gz
Merge branch 'master' of git://github.com/cracker64/The-Powder-Toy
Diffstat (limited to 'src')
-rw-r--r--src/powder.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/powder.c b/src/powder.c
index 9272b90..b6e843f 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -5839,6 +5839,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
if(((sdl_mod & (KMOD_LALT) && sdl_mod & (KMOD_SHIFT))|| sdl_mod & (KMOD_CAPS) )&& !REPLACE_MODE)
{
+ if(rx==0&&ry==0)
+ {
+ delete_part(x, y);
+ }
+ else
for(j=-ry; j<=ry; j++)
for(i=-rx; i<=rx; i++)
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
@@ -5848,6 +5853,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
if(c == SPC_AIR || c == SPC_HEAT || c == SPC_COOL || c == SPC_VACUUM)
{
+ if(rx==0&&ry==0)
+ {
+ create_part(-2, x, y, c);
+ }
+ else
for(j=-ry; j<=ry; j++)
for(i=-rx; i<=rx; i++)
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
@@ -5862,6 +5872,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
{
stemp = SLALT;
SLALT = 0;
+ if(rx==0&&ry==0)
+ {
+ delete_part(x, y);
+ }
+ else
for(j=-ry; j<=ry; j++)
for(i=-rx; i<=rx; i++)
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
@@ -5871,6 +5886,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
}
if(REPLACE_MODE)
{
+ if(rx==0&&ry==0)
+ {
+ create_part(-2, x, y, c);
+ }
+ else
for(j=-ry; j<=ry; j++)
for(i=-rx; i<=rx; i++)
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
@@ -5887,6 +5907,11 @@ int create_parts(int x, int y, int rx, int ry, int c)
return 1;
}
+ if(rx==0&&ry==0)//workaround for 1pixel brush/floodfill crashing. todo: find a better fix later.
+ {
+ create_part(-2, x, y, c);
+ }
+ else
for(j=-ry; j<=ry; j++)
for(i=-rx; i<=rx; i++)
if((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))