summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilip <philip@philip-linuxlaptop.(none)>2010-10-28 23:31:06 (GMT)
committer Philip <philip@philip-linuxlaptop.(none)>2010-10-28 23:31:06 (GMT)
commitbb3b1a52ac2e5ad935640558f312c767a8ad9f15 (patch)
tree2f663dfa8e4aa3201abae1c07a32e4d661c0482b /src
parentbff5961d602531b224821da54a874a09f1dba317 (diff)
downloadpowder-bb3b1a52ac2e5ad935640558f312c767a8ad9f15.zip
powder-bb3b1a52ac2e5ad935640558f312c767a8ad9f15.tar.gz
added specific element eraser again for my own uses sinces everyone else thinks its useless. alt-click to pick and then alt-click in the game to erase the picked element. you could then have right and left click be two different elements and alt-click on the eraser to keep two elements selected and an easy to use eraser as well
Diffstat (limited to 'src')
-rw-r--r--src/interface.c43
-rw-r--r--src/powder.c23
2 files changed, 60 insertions, 6 deletions
diff --git a/src/interface.c b/src/interface.c
index 4ab7bf4..2c66645 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -1484,6 +1484,15 @@ void menu_ui_v3(pixel *vid_buf, int i, int *sl, int *sr, int b, int bq, int mx,
drawrect(vid_buf, x+30, y-1, 29, 17, 255, 0, 0, 255);
h = n;
}
+ if(!bq && mx>=x+32 && mx<x+58 && my>=y && my< y+15&&(sdl_mod & (KMOD_LALT)))
+ {
+ drawrect(vid_buf, x+30, y-1, 29, 17, 0, 255, 255, 255);
+ h = n;
+ }
+ else if(n==SLALT)
+ {
+ drawrect(vid_buf, x+30, y-1, 29, 17, 0, 255, 255, 255);
+ }
else if(n==*sl)
{
drawrect(vid_buf, x+30, y-1, 29, 17, 255, 0, 0, 255);
@@ -1509,6 +1518,15 @@ void menu_ui_v3(pixel *vid_buf, int i, int *sl, int *sr, int b, int bq, int mx,
drawrect(vid_buf, x+30, y-1, 29, 17, 255, 0, 0, 255);
h = n;
}
+ if(!bq && mx>=x+32 && mx<x+58 && my>=y && my< y+15&&(sdl_mod & (KMOD_LALT)))
+ {
+ drawrect(vid_buf, x+30, y-1, 29, 17, 0, 255, 255, 255);
+ h = n;
+ }
+ else if(n==SLALT)
+ {
+ drawrect(vid_buf, x+30, y-1, 29, 17, 0, 255, 255, 255);
+ }
else if(n==*sl)
{
drawrect(vid_buf, x+30, y-1, 29, 17, 255, 0, 0, 255);
@@ -1537,6 +1555,15 @@ void menu_ui_v3(pixel *vid_buf, int i, int *sl, int *sr, int b, int bq, int mx,
drawrect(vid_buf, x+30, y-1, 29, 17, 255, 0, 0, 255);
h = n;
}
+ if(!bq && mx>=x+32 && mx<x+58 && my>=y && my< y+15&&(sdl_mod & (KMOD_LALT)))
+ {
+ drawrect(vid_buf, x+30, y-1, 29, 17, 0, 255, 255, 255);
+ h = n;
+ }
+ else if(n==SLALT)
+ {
+ drawrect(vid_buf, x+30, y-1, 29, 17, 0, 255, 255, 255);
+ }
else if(n==*sl)
{
drawrect(vid_buf, x+30, y-1, 29, 17, 255, 0, 0, 255);
@@ -1564,11 +1591,23 @@ void menu_ui_v3(pixel *vid_buf, int i, int *sl, int *sr, int b, int bq, int mx,
if(b==1&&h!=-1)
{
- *sl = h;
+ if(sdl_mod & (KMOD_LALT))
+ {
+ SLALT = h;
+ }
+ else{
+ *sl = h;
+ }
}
if(b==4&&h!=-1)
{
- *sr = h;
+ if(sdl_mod & (KMOD_LALT))
+ {
+ SLALT = h;
+ }
+ else{
+ *sr = h;
+ }
}
}
diff --git a/src/powder.c b/src/powder.c
index fc645a5..5260663 100644
--- a/src/powder.c
+++ b/src/powder.c
@@ -663,9 +663,13 @@ inline void delete_part(int x, int y)
i = pmap[y][x];
if(!i || (i>>8)>=NPART)
return;
-
- kill_part(i>>8);
- pmap[y][x] = 0; // just in case
+ if((parts[i>>8].type==SLALT)||SLALT==-1||SLALT==0)
+ {
+ kill_part(i>>8);
+ pmap[y][x] = 0;
+ }
+ else
+ return;
}
#ifdef WIN32
@@ -3580,7 +3584,7 @@ int flood_parts(int x, int y, int c, int cm, int bm)
int create_parts(int x, int y, int r, int c)
{
- int i, j, f = 0, u, v, oy, ox, b = 0, dw = 0; //n;
+ int i, j, f = 0, u, v, oy, ox, b = 0, dw = 0, stemp = 0; //n;
if(c == 125)
{
@@ -3691,6 +3695,14 @@ int create_parts(int x, int y, int r, int c)
}
return 1;
}
+ if(sdl_mod & (KMOD_LALT))
+ {
+ for(j=-r; j<=r; j++)
+ for(i=-r; i<=r; i++)
+ if(i*i+j*j<=r*r)
+ delete_part(x+i, y+j);
+ return 1;
+ }
if(c == SPC_AIR || c == SPC_HEAT || c == SPC_COOL || c == SPC_VACUUM)
{
for(j=-r; j<=r; j++)
@@ -3702,10 +3714,13 @@ int create_parts(int x, int y, int r, int c)
if(c == 0)
{
+ stemp = SLALT;
+ SLALT = -1;
for(j=-r; j<=r; j++)
for(i=-r; i<=r; i++)
if(i*i+j*j<=r*r)
delete_part(x+i, y+j);
+ SLALT = stemp;
return 1;
}