summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacksonmj <jacksonmj@jacksonmj.none>2011-02-01 16:03:09 (GMT)
committer jacksonmj <jacksonmj@jacksonmj.none>2011-02-01 16:06:48 (GMT)
commit77bcac1a5628aecdf8e4c1968106e3bed86890ab (patch)
tree6e55d756941374d89a1c87cf8193dfdf7a312629 /src
parentc78d4203eecb9cd90cf6dafc5aa61e6aa0adf09d (diff)
downloadpowder-77bcac1a5628aecdf8e4c1968106e3bed86890ab.zip
powder-77bcac1a5628aecdf8e4c1968106e3bed86890ab.tar.gz
Small fixes
Fix nearest_part distance calculation Rename air constants to avoid PLOSS clash with math.h Prevent crashes due to bad lava ctype.
Diffstat (limited to 'src')
-rw-r--r--src/air.c32
-rw-r--r--src/powder.c6
2 files changed, 19 insertions, 19 deletions
diff --git a/src/air.c b/src/air.c
index 33a4913..e9a8b9e 100644
--- a/src/air.c
+++ b/src/air.c
@@ -86,8 +86,8 @@ void update_air(void)
dp = 0.0f;
dp += vx[y][x-1] - vx[y][x];
dp += vy[y-1][x] - vy[y][x];
- pv[y][x] *= PLOSS;
- pv[y][x] += dp*TSTEPP;
+ pv[y][x] *= AIR_PLOSS;
+ pv[y][x] += dp*AIR_TSTEPP;
}
for (y=0; y<YRES/CELL-1; y++)
@@ -96,10 +96,10 @@ void update_air(void)
dx = dy = 0.0f;
dx += pv[y][x] - pv[y][x+1];
dy += pv[y][x] - pv[y+1][x];
- vx[y][x] *= VLOSS;
- vy[y][x] *= VLOSS;
- vx[y][x] += dx*TSTEPV;
- vy[y][x] += dy*TSTEPV;
+ vx[y][x] *= AIR_VLOSS;
+ vy[y][x] *= AIR_VLOSS;
+ vx[y][x] += dx*AIR_TSTEPV;
+ vy[y][x] += dy*AIR_TSTEPV;
if (bmap[y][x]==WL_WALL || bmap[y][x+1]==WL_WALL ||
bmap[y][x]==WL_WALLELEC || bmap[y][x+1]==WL_WALLELEC ||
(bmap[y][x]==WL_EWALL && !emap[y][x]) ||
@@ -148,20 +148,20 @@ void update_air(void)
if (i>=2 && i<XRES/CELL-3 &&
j>=2 && j<YRES/CELL-3)
{
- dx *= 1.0f - VADV;
- dy *= 1.0f - VADV;
+ dx *= 1.0f - AIR_VADV;
+ dy *= 1.0f - AIR_VADV;
- dx += VADV*(1.0f-tx)*(1.0f-ty)*vx[j][i];
- dy += VADV*(1.0f-tx)*(1.0f-ty)*vy[j][i];
+ dx += AIR_VADV*(1.0f-tx)*(1.0f-ty)*vx[j][i];
+ dy += AIR_VADV*(1.0f-tx)*(1.0f-ty)*vy[j][i];
- dx += VADV*tx*(1.0f-ty)*vx[j][i+1];
- dy += VADV*tx*(1.0f-ty)*vy[j][i+1];
+ dx += AIR_VADV*tx*(1.0f-ty)*vx[j][i+1];
+ dy += AIR_VADV*tx*(1.0f-ty)*vy[j][i+1];
- dx += VADV*(1.0f-tx)*ty*vx[j+1][i];
- dy += VADV*(1.0f-tx)*ty*vy[j+1][i];
+ dx += AIR_VADV*(1.0f-tx)*ty*vx[j+1][i];
+ dy += AIR_VADV*(1.0f-tx)*ty*vy[j+1][i];
- dx += VADV*tx*ty*vx[j+1][i+1];
- dy += VADV*tx*ty*vy[j+1][i+1];
+ dx += AIR_VADV*tx*ty*vx[j+1][i+1];
+ dy += AIR_VADV*tx*ty*vy[j+1][i+1];
}
if (bmap[y][x] == WL_FAN)
diff --git a/src/powder.c b/src/powder.c
index 493dec7..f8a5d3d 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -1113,7 +1113,7 @@ int nearest_part(int ci, int t)
{
if (parts[i].type==t&&!parts[i].life&&i!=ci)
{
- ndistance = abs((cx-parts[i].x)+(cy-parts[i].y));// Faster but less accurate Older: sqrt(pow(cx-parts[i].x, 2)+pow(cy-parts[i].y, 2));
+ ndistance = abs(cx-parts[i].x)+abs(cy-parts[i].y);// Faster but less accurate Older: sqrt(pow(cx-parts[i].x, 2)+pow(cy-parts[i].y, 2));
if (ndistance<distance)
{
distance = ndistance;
@@ -1290,9 +1290,9 @@ void update_particles_i(pixel *vid, int start, int inc)
}
if (ISGOL==1&&++CGOL>=GSPEED)//GSPEED is frames per generation
{
+ int createdsomething = 0;
CGOL=0;
ISGOL=0;
- int createdsomething = 0;
for (nx=CELL; nx<XRES-CELL; nx++)
for (ny=CELL; ny<YRES-CELL; ny++)
{
@@ -1553,7 +1553,7 @@ void update_particles_i(pixel *vid, int start, int inc)
else t = PT_DSTW;
}
else if (t==PT_LAVA) {
- if (parts[i].ctype&&parts[i].ctype!=PT_LAVA) {
+ if (parts[i].ctype && parts[i].ctype<PT_NUM && parts[i].ctype!=PT_LAVA) {
if (ptransitions[parts[i].ctype].tht==PT_LAVA&&pt>=ptransitions[parts[i].ctype].thv) s = 0;
else if (parts[i].ctype==PT_THRM&&pt>=ptransitions[PT_BMTL].thv) s = 0;
else if (pt>=973.0f) s = 0; // freezing point for lava with any other (not listed in ptransitions as turning into lava) ctype