Delete signs when cutting; change sign location check when saving

Save signs within the original box that was drawn by the user, not
within the box that has been expanded to match the wall grid
This commit is contained in:
jacksonmj 2012-04-29 00:11:54 +01:00
parent 5d5b8143a4
commit ade3fd9568
2 changed files with 14 additions and 6 deletions

View File

@ -2794,6 +2794,7 @@ void clear_area(int area_x, int area_y, int area_w, int area_h)
{
int cx = 0;
int cy = 0;
int i;
for (cy=0; cy<area_h; cy++)
{
for (cx=0; cx<area_w; cx++)
@ -2802,6 +2803,13 @@ void clear_area(int area_x, int area_y, int area_w, int area_h)
delete_part(cx+area_x, cy+area_y, 0);
}
}
for (i=0; i<MAXSIGNS; i++)
{
if (signs[i].x>=area_x && signs[i].x<area_x+area_w && signs[i].y>=area_y && signs[i].y<area_y+area_h)
{
signs[i].text[0] = 0;
}
}
}
void create_box(int x1, int y1, int x2, int y2, int c, int flags)

View File

@ -707,7 +707,7 @@ void *build_save_OPS(int *size, int orig_x0, int orig_y0, int orig_w, int orig_h
signsCount = 0;
for(i = 0; i < MAXSIGNS; i++)
{
if(signs[i].text[0] && signs[i].x>=fullX && signs[i].x<=fullX+fullW && signs[i].y>=fullY && signs[i].y<=fullY+fullH)
if(signs[i].text[0] && signs[i].x>=orig_x0 && signs[i].x<=orig_x0+orig_w && signs[i].y>=orig_y0 && signs[i].y<=orig_y0+orig_h)
{
signsCount++;
}
@ -717,7 +717,7 @@ void *build_save_OPS(int *size, int orig_x0, int orig_y0, int orig_w, int orig_h
bson_append_start_array(&b, "signs");
for(i = 0; i < MAXSIGNS; i++)
{
if(signs[i].text[0] && signs[i].x>=fullX && signs[i].x<=fullX+fullW && signs[i].y>=fullY && signs[i].y<=fullY+fullH)
if(signs[i].text[0] && signs[i].x>=orig_x0 && signs[i].x<=orig_x0+orig_w && signs[i].y>=orig_y0 && signs[i].y<=orig_y0+orig_h)
{
bson_append_start_object(&b, "sign");
bson_append_string(&b, "text", signs[i].text);
@ -1642,14 +1642,14 @@ void *build_save_PSv(int *size, int orig_x0, int orig_y0, int orig_w, int orig_h
j = 0;
for (i=0; i<MAXSIGNS; i++)
if (signs[i].text[0] &&
signs[i].x>=x0 && signs[i].x<x0+w &&
signs[i].y>=y0 && signs[i].y<y0+h)
signs[i].x>=orig_x0 && signs[i].x<orig_x0+orig_w &&
signs[i].y>=orig_y0 && signs[i].y<orig_y0+orig_h)
j++;
d[p++] = j;
for (i=0; i<MAXSIGNS; i++)
if (signs[i].text[0] &&
signs[i].x>=x0 && signs[i].x<x0+w &&
signs[i].y>=y0 && signs[i].y<y0+h)
signs[i].x>=orig_x0 && signs[i].x<orig_x0+orig_w &&
signs[i].y>=orig_y0 && signs[i].y<orig_y0+orig_h)
{
d[p++] = (signs[i].x-x0);
d[p++] = (signs[i].x-x0)>>8;