summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCracker64 <cracker642@gmail.com>2010-12-03 05:13:00 (GMT)
committer Cracker64 <cracker642@gmail.com>2010-12-03 05:13:00 (GMT)
commit01a2dcaf419b207702d959a5016107674c636325 (patch)
tree0d02d0dc687ca7442b5e6ed8c4e9ed91972e5743 /src
parent25ac5e7a660485ab4417c6b343f96fb03a930fb1 (diff)
downloadpowder-01a2dcaf419b207702d959a5016107674c636325.zip
powder-01a2dcaf419b207702d959a5016107674c636325.tar.gz
lots and lots of small changes/fixes. fixed typo for water movement, made parts_avg kinda better? electronics still work.
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c15
-rw-r--r--src/main.c4
-rw-r--r--src/powder.c205
3 files changed, 148 insertions, 76 deletions
diff --git a/src/graphics.c b/src/graphics.c
index 5561f04..ed1a4b3 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -2882,24 +2882,15 @@ corrupt:
return 1;
}
-void render_cursor(pixel *vid, int x, int y, int t, float rx, float ry)
+void render_cursor(pixel *vid, int x, int y, int t, int rx, int ry)
{
int i,j,c;
- float temprx, tempry;
if(t<PT_NUM||t==SPC_AIR||t==SPC_HEAT||t==SPC_COOL||t==SPC_VACUUM)
{
- tempry = ry;
- temprx = rx;
if(rx<=0)
- {
xor_pixel(x, y, vid);
- temprx = 1;
- }
else if(ry<=0)
- {
xor_pixel(x, y, vid);
- tempry = 1;
- }
if(rx+ry<=0)
xor_pixel(x, y, vid);
else if(CURRENT_BRUSH==SQUARE_BRUSH)
@@ -2917,7 +2908,7 @@ void render_cursor(pixel *vid, int x, int y, int t, float rx, float ry)
else if(CURRENT_BRUSH==CIRCLE_BRUSH)
for(j=0; j<=ry; j++)
for(i=0; i<=rx; i++)
- if((i*i)/(temprx*temprx)+(j*j)/(tempry*tempry)<=1 && (((i+1)*(i+1))/(temprx*temprx)+(j*j)/(tempry*tempry)>1 || ((i*i)/(temprx*temprx)+((j+1)*(j+1))/(tempry*tempry)>1)))
+ if((pow(i,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))<=1 && ((pow(i+1,2))/(pow(rx,2))+(pow(j,2))/(pow(ry,2))>1 || (pow(i,2))/(pow(rx,2))+(pow(j+1,2))/(pow(ry,2))>1))
{
xor_pixel(x+i, y+j, vid);
if(j) xor_pixel(x+i, y-j, vid);
@@ -2928,7 +2919,7 @@ void render_cursor(pixel *vid, int x, int y, int t, float rx, float ry)
else
{
int tc;
- c = ((int)rx/CELL) * CELL;
+ c = (rx/CELL) * CELL;
x = (x/CELL) * CELL;
y = (y/CELL) * CELL;
diff --git a/src/main.c b/src/main.c
index 63765f2..05e4bc1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1024,8 +1024,8 @@ int main(int argc, char *argv[])
int vs = 0;
#endif
int x, y, b = 0, sl=1, sr=0, su=0, c, lb = 0, lx = 0, ly = 0, lm = 0;//, tx, ty;
- int da = 0, db = 0, it = 2047, mx, my;
- float nfvx, nfvy, bsx = 2, bsy = 2;
+ int da = 0, db = 0, it = 2047, mx, my, bsx = 2, bsy = 2;
+ float nfvx, nfvy;
int load_mode=0, load_w=0, load_h=0, load_x=0, load_y=0, load_size=0;
void *load_data=NULL;
pixel *load_img=NULL;//, *fbi_img=NULL;
diff --git a/src/powder.c b/src/powder.c
index f61e1be..dbf05b0 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -822,20 +822,30 @@ void set_emap(int x, int y)
}
#if defined(WIN32) && !defined(__GNUC__)
-_inline int parts_avg(int ci, int ni)
+_inline int parts_avg(int ci, int ni,int t)//t is the particle you are looking for
#else
-inline int parts_avg(int ci, int ni)
+inline int parts_avg(int ci, int ni,int t)
#endif
{
- int pmr = pmap[(int)((parts[ci].y + parts[ni].y)/2)][(int)((parts[ci].x + parts[ni].x)/2)];
- if((pmr>>8) < NPART && (pmr>>8) >= 1)
- {
- return parts[pmr>>8].type;
- }
- else
- {
- return PT_NONE;
- }
+ if(t==PT_INSL)//to keep electronics working
+ {
+ int pmr = pmap[(int)((parts[ci].y + parts[ni].y)/2)][(int)((parts[ci].x + parts[ni].x)/2)];
+ if((pmr>>8) < NPART && pmr)
+ return parts[pmr>>8].type;
+ else
+ return PT_NONE;
+ }
+ else
+ {
+ int pmr2 = pmap[(int)((parts[ci].y + parts[ni].y)/2+0.5f)][(int)((parts[ci].x + parts[ni].x)/2+0.5f)];//seems to be more accurate.
+ if((pmr2>>8) < NPART && pmr2)
+ {
+ if(parts[pmr2>>8].type==t)
+ return t;
+ }
+ else
+ return PT_NONE;
+ }
}
@@ -970,6 +980,57 @@ void update_particles_i(pixel *vid, int start, int inc)
}
}
}
+ if(ISLOLZ==1)
+ {
+ ISLOLZ = 0;
+ for(ny=0;ny<YRES-4;ny++)
+ {
+ for(nx=0;nx<XRES-4;nx++)
+ {
+ r=pmap[ny][nx];
+ if((r>>8)>=NPART || !r)
+ {
+ continue;
+ }
+ else if((ny<9||nx<9||ny>YRES-7||nx>XRES-10)&&parts[r>>8].type==PT_LOLZ)
+ parts[r>>8].type = PT_NONE;
+ else if(parts[r>>8].type==PT_LOLZ)
+ {
+ lolz[nx/9][ny/9] = 1;
+ }
+
+ }
+ }
+ for(nx=9;nx<=XRES-18;nx++)
+ {
+ for(ny=9;ny<=YRES-7;ny++)
+ {
+ if(lolz[nx/9][ny/9]==1)
+ {
+ for(int nnx=0;nnx<9;nnx++)
+ for(int nny=0;nny<9;nny++)
+ {
+ if(ny+nny>0&&ny+nny<YRES&&nx+nnx>=0&&nx+nnx<XRES)
+ {
+ rt=pmap[ny+nny][nx+nnx];
+ if((rt>>8)>=NPART)
+ {
+ continue;
+ }
+ if(!rt&&lolzrule[nny][nnx]==1)
+ create_part(-1,nx+nnx,ny+nny,PT_LOLZ);
+ else if(!rt)
+ continue;
+ else if(parts[rt>>8].type==PT_LOLZ&&lolzrule[nny][nnx]==0)
+ parts[rt>>8].type=PT_NONE;
+
+ }
+ }
+ }
+ lolz[nx/9][ny/9]=0;
+ }
+ }
+ }
if(ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation
{
for(nx=4;nx<XRES-4;nx++)
@@ -1195,7 +1256,7 @@ void update_particles_i(pixel *vid, int start, int inc)
parts[i].life = rand()%80+300;
}
}
- if((t==PT_BCLN) && !parts[i].life)
+ else if((t==PT_BCLN) && !parts[i].life)
{
if(pv[y/CELL][x/CELL]>4.0f)
{
@@ -1352,7 +1413,7 @@ void update_particles_i(pixel *vid, int start, int inc)
if(t==PT_SPRK&&parts[i].ctype==PT_ETRD&&parts[i].life==1)
{
nearp = nearest_part(i, PT_ETRD);
- if(nearp!=-1&&parts_avg(i, nearp)!=PT_INSL)
+ if(nearp!=-1&&parts_avg(i, nearp, PT_INSL)!=PT_INSL)
{
create_line((int)parts[i].x, (int)parts[i].y, (int)parts[nearp].x, (int)parts[nearp].y, 0, 0, PT_PLSM);
t = parts[i].type = PT_ETRD;
@@ -1831,7 +1892,7 @@ void update_particles_i(pixel *vid, int start, int inc)
r = pmap[y+ny][x+nx];
if((r>>8)>=NPART || !r)
continue;
- if((r&0xFF)==PT_SPRK && parts[r>>8].ctype==PT_METL && parts_avg(i, r>>8)!=PT_INSL)
+ if((r&0xFF)==PT_SPRK && parts[r>>8].ctype==PT_METL && parts_avg(i, r>>8,PT_INSL)!=PT_INSL)
{
parts[i].temp = 473.0f;
}
@@ -1864,7 +1925,12 @@ void update_particles_i(pixel *vid, int start, int inc)
}
else if((r&0xFF)==PT_WOOD && (1>rand()%20) && abs(nx+ny)<=2 && VINE_MODE)
{
- create_part(-1,(x+nx)+(rand()%3)-1,(y+ny)+(rand()%3)-1,PT_VINE);
+ int nnx = rand()%3 -1;
+ int nny = rand()%3 -1;
+ if(x+nx+nnx>=0 && y+ny+nny>0 &&
+ x+nx+nnx<XRES && y+ny+nny<YRES && (nnx || nny))
+ if(create_part(-1,x+nx+nnx,y+ny+nny,PT_VINE))
+ parts[pmap[y+ny+nny][x+nx+nnx]>>8].temp = parts[i].temp;
}
//if(t==PT_SNOW && (r&0xFF)==PT_WATR && 15>(rand()%1000))
//t = parts[i].type = PT_WATR;
@@ -1900,6 +1966,7 @@ void update_particles_i(pixel *vid, int start, int inc)
else if(!r)
{
create_part(-1,x+nx,y+ny,PT_VINE);
+ parts[pmap[y+ny][x+nx]>>8].temp = parts[i].temp;
parts[i].type=PT_PLNT;
}
}
@@ -2064,10 +2131,13 @@ void update_particles_i(pixel *vid, int start, int inc)
parts[r>>8].type = PT_FIRE;
parts[r>>8].life = 4;
}
- else if(((r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PCLN && ptypes[parts[r>>8].type].hardness>(rand()%1000))&&parts[i].life>=50&&parts_avg(i,r>>8) != PT_GLAS)
+ else if(((r&0xFF)!=PT_CLNE && (r&0xFF)!=PT_PCLN && ptypes[parts[r>>8].type].hardness>(rand()%1000))&&parts[i].life>=50)
{
- parts[i].life--;
- parts[r>>8].type = PT_NONE;
+ if(parts_avg(i, r>>8,PT_GLAS)!= PT_GLAS)
+ {
+ parts[i].life--;
+ parts[r>>8].type = PT_NONE;
+ }
}
else if (parts[i].life==50)
{
@@ -2228,6 +2298,8 @@ void update_particles_i(pixel *vid, int start, int inc)
}
else if(t==PT_LOVE)
ISLOVE=1;
+ else if(t==PT_LOLZ)
+ ISLOLZ=1;
else if(t==PT_GRAV)
ISGRAV=1;
else if(t==PT_CRAC)
@@ -2477,7 +2549,7 @@ void update_particles_i(pixel *vid, int start, int inc)
parts[r>>8].vy = rand()%8-22;
parts[r>>8].vx = rand()%20-rand()%20;
parts[r>>8].life=rand()%15+25;
- parts[i].type=PT_NONE;
+ t=parts[i].type=PT_NONE;
}
}
if(parts[i].life>1)
@@ -2515,7 +2587,7 @@ void update_particles_i(pixel *vid, int start, int inc)
}
}
}
- parts[i].type=PT_NONE;
+ t=parts[i].type=PT_NONE;
}
}
else if(t==PT_LCRY)
@@ -2765,12 +2837,15 @@ void update_particles_i(pixel *vid, int start, int inc)
r = pmap[y+ny][x+nx];
if((r>>8)>=NPART || !r)
continue;
- if(parts[r>>8].type!=PT_PRTI && parts[r>>8].type!=PT_PRTO && (ptypes[parts[r>>8].type].falldown!= 0 || pstates[parts[r>>8].type].state == ST_GAS))
+ if(parts[r>>8].type==PT_SPRK || (parts[r>>8].type!=PT_PRTI && parts[r>>8].type!=PT_PRTO && (ptypes[parts[r>>8].type].falldown!= 0 || pstates[parts[r>>8].type].state == ST_GAS)))
for(int nnx=0;nnx<8;nnx++)
if(!portal[count-1][nnx])
{
portal[count-1][nnx] = parts[r>>8].type;
- parts[r>>8].type = PT_NONE;
+ if(parts[r>>8].type==PT_SPRK)
+ parts[r>>8].type = parts[r>>8].ctype;
+ else
+ parts[r>>8].type = PT_NONE;
break;
}
}
@@ -2796,7 +2871,20 @@ void update_particles_i(pixel *vid, int start, int inc)
randomness=1;
if(randomness>8)
randomness=8;
- if(portal[randomness-1][nnx])
+ if(portal[randomness-1][nnx]==PT_SPRK)//todo. make it look better
+ {
+ create_part(-1,x+1,y,portal[randomness-1][nnx]);
+ create_part(-1,x+1,y+1,portal[randomness-1][nnx]);
+ create_part(-1,x+1,y-1,portal[randomness-1][nnx]);
+ create_part(-1,x,y-1,portal[randomness-1][nnx]);
+ create_part(-1,x,y+1,portal[randomness-1][nnx]);
+ create_part(-1,x-1,y+1,portal[randomness-1][nnx]);
+ create_part(-1,x-1,y,portal[randomness-1][nnx]);
+ create_part(-1,x-1,y-1,portal[randomness-1][nnx]);
+ portal[randomness-1][nnx] = 0;
+ break;
+ }
+ else if(portal[randomness-1][nnx])
{
create_part(-1,x+nx,y+ny,portal[randomness-1][nnx]);
portal[randomness-1][nnx] = 0;
@@ -2925,7 +3013,7 @@ void update_particles_i(pixel *vid, int start, int inc)
for(int nnx=-1;nnx<2;nnx++)
for(int nny=-1;nny<2;nny++)
{
- if(parts[i].life==0)
+ if(7>rand()%200&&parts[i].life==0)
{
t = parts[i].type = PT_SHLD2;
parts[i].life = 7;
@@ -2933,7 +3021,7 @@ void update_particles_i(pixel *vid, int start, int inc)
else if(!pmap[y+ny+nny][x+nx+nnx])
{
create_part(-1,x+nx+nnx,y+ny+nny,PT_SHLD1);
- parts[pmap[y+ny+nny][x+nx+nnx]>>8].life=7;
+ //parts[pmap[y+ny+nny][x+nx+nnx]>>8].life=7;
}
}
else if(parts[r>>8].type==PT_SHLD3&&4>rand()%10)
@@ -3116,7 +3204,7 @@ void update_particles_i(pixel *vid, int start, int inc)
} else {
float newVel = parts[i].life/25;
parts[i].flags = parts[i].flags&0xFFFFFFFE;
- if((pmap[(int)(ly-newVel)][(int)lx]&0xFF)==PT_NONE) {
+ if((pmap[(int)(ly-newVel)][(int)lx]&0xFF)==PT_NONE && ly-newVel>0) {
parts[i].vy = -newVel;
ly-=newVel;
iy-=newVel;
@@ -3166,7 +3254,7 @@ void update_particles_i(pixel *vid, int start, int inc)
if((r>>8)>=NPART || !r)
continue;
rt = parts[r>>8].type;
- if(parts_avg(i,r>>8) != PT_INSL)
+ if(parts_avg(i,r>>8,PT_INSL) != PT_INSL)
{
if((rt==PT_METL||rt==PT_IRON||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN||rt==PT_NBLE)&&parts[r>>8].life==0 && abs(nx)+abs(ny) < 4)
{
@@ -3188,7 +3276,7 @@ void update_particles_i(pixel *vid, int start, int inc)
if((r>>8)>=NPART || !r)
continue;
rt = parts[r>>8].type;
- if(parts[r>>8].type == PT_SWCH&&parts_avg(i,r>>8)!=PT_INSL)
+ if(parts[r>>8].type == PT_SWCH&&parts_avg(i,r>>8,PT_INSL)!=PT_INSL)
{
if(parts[i].life==10&&parts[r>>8].life<10&&parts[r>>8].life>0)
{
@@ -3294,7 +3382,7 @@ void update_particles_i(pixel *vid, int start, int inc)
//If so turn the SPRK that covers the SWCH back into SWCH and turn it off
if(rt==PT_SPRK && parts[r>>8].ctype == PT_SWCH && t==PT_SPRK)
{
- pavg = parts_avg(r>>8, i);
+ pavg = parts_avg(r>>8, i,PT_INSL);
if(parts[i].ctype == PT_NSCN&&pavg != PT_INSL)
{
parts[r>>8].type = PT_SWCH;
@@ -3302,11 +3390,11 @@ void update_particles_i(pixel *vid, int start, int inc)
parts[r>>8].life = 9;
}
}
- pavg = parts_avg(i, r>>8);
+ pavg = parts_avg(i, r>>8,PT_INSL);
if(rt==PT_SWCH && t==PT_SPRK)
{
- pavg = parts_avg(r>>8, i);
- if(parts[i].ctype == PT_PSCN&&pavg != PT_INSL)
+ pavg = parts_avg(r>>8, i,PT_INSL);
+ if(parts[i].ctype == PT_PSCN&&pavg != PT_INSL && parts[r>>8].life<10)
parts[r>>8].life = 10;
if(parts[i].ctype == PT_NSCN&&pavg != PT_INSL)
parts[r>>8].life = 9;
@@ -3317,7 +3405,7 @@ void update_particles_i(pixel *vid, int start, int inc)
parts[r>>8].life = 4;
}
}
- pavg = parts_avg(i, r>>8);
+ pavg = parts_avg(i, r>>8,PT_INSL);
if(pavg != PT_INSL)
{
if(t==PT_SPRK && (rt==PT_METL||rt==PT_IRON||rt==PT_ETRD||rt==PT_BMTL||rt==PT_BRMT||rt==PT_LRBD||rt==PT_RBDM||rt==PT_PSCN||rt==PT_NSCN||rt==PT_NBLE) && parts[r>>8].life==0 &&
@@ -4033,7 +4121,7 @@ killed:
else
r = -1;
if(s)
- for(j=y+r; j>=0 && j<YRES && j>=y-rt && j<x+rt; j+=r)
+ for(j=y+r; j>=0 && j<YRES && j>=y-rt && j<y+rt; j+=r)
{
if(try_move(i, x, y, x, j))
{
@@ -4835,11 +4923,9 @@ int flood_parts(int x, int y, int c, int cm, int bm)
return 1;
}
-int create_parts(int x, int y, float rx, float ry, int c)
+int create_parts(int x, int y, int rx, int ry, int c)
{
- int i, j, f = 0, u, v, oy, ox, b = 0, dw = 0, stemp = 0;
- float tempry, temprx; //n;
-
+ int i, j, f = 0, u, v, oy, ox, b = 0, dw = 0, stemp = 0;//n;
int wall = c - 100;
for(int r=UI_ACTUALSTART;r<=UI_ACTUALSTART+UI_WALLCOUNT;r++)
@@ -4862,11 +4948,11 @@ int create_parts(int x, int y, float rx, float ry, int c)
}
if(dw==1)
{
- rx = (int)rx/CELL;
+ rx = rx/CELL;
x = x/CELL;
y = y/CELL;
- x -= (int)rx/2;
- y -= (int)rx/2;
+ x -= rx/2;
+ y -= rx/2;
for (ox=x; ox<=x+rx; ox++)
{
for (oy=y; oy<=y+rx; oy++)
@@ -4906,26 +4992,21 @@ int create_parts(int x, int y, float rx, float ry, int c)
}
return 1;
}
- temprx = rx;//fixes windows divided by 0 crashing
- tempry = ry;
- if(rx == 0) rx = 1;
-
- if(ry == 0) ry = 1;
if(((sdl_mod & (KMOD_LALT) && sdl_mod & (KMOD_SHIFT))|| sdl_mod & (KMOD_CAPS) )&& !REPLACE_MODE)
{
- for(j=-tempry; j<=tempry; j++)
- for(i=-temprx; i<=temprx; i++)
- if((CURRENT_BRUSH==CIRCLE_BRUSH && (i*i)/(rx*rx)+(j*j)/(ry*ry)<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ 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))
delete_part(x+i, y+j);
return 1;
}
if(c == SPC_AIR || c == SPC_HEAT || c == SPC_COOL || c == SPC_VACUUM)
{
- for(j=-tempry; j<=tempry; j++)
- for(i=-temprx; i<=temprx; i++)
- if((CURRENT_BRUSH==CIRCLE_BRUSH && (i*i)/(rx*rx)+(j*j)/(ry*ry)<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ 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))
create_part(-1, x+i, y+j, c);
return 1;
}
@@ -4934,18 +5015,18 @@ int create_parts(int x, int y, float rx, float ry, int c)
{
stemp = SLALT;
SLALT = 0;
- for(j=-tempry; j<=tempry; j++)
- for(i=-temprx; i<=temprx; i++)
- if((CURRENT_BRUSH==CIRCLE_BRUSH && (i*i)/(rx*rx)+(j*j)/(ry*ry)<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ 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))
delete_part(x+i, y+j);
SLALT = stemp;
return 1;
}
if(REPLACE_MODE)
{
- for(j=-tempry; j<=tempry; j++)
- for(i=-temprx; i<=temprx; i++)
- if((CURRENT_BRUSH==CIRCLE_BRUSH && (i*i)/(rx*rx)+(j*j)/(ry*ry)<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ 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))
{
if((pmap[y+j][x+i]&0xFF)!=SLALT&&SLALT!=0)
continue;
@@ -4959,15 +5040,15 @@ int create_parts(int x, int y, float rx, float ry, int c)
return 1;
}
- for(j=-tempry; j<=tempry; j++)
- for(i=-temprx; i<=temprx; i++)
- if((CURRENT_BRUSH==CIRCLE_BRUSH && (i*i)/(rx*rx)+(j*j)/(ry*ry)<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=ry*rx))
+ 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))
if(create_part(-1, x+i, y+j, c)==-1)
f = 1;
return !f;
}
-void create_line(int x1, int y1, int x2, int y2, float rx, float ry, int c)
+void create_line(int x1, int y1, int x2, int y2, int rx, int ry, int c)
{
int cp=abs(y2-y1)>abs(x2-x1), x, y, dx, dy, sy;
float e, de;