correct bug #924189 [crash] Big map
This commit is contained in:
parent
44594ab415
commit
205bc03fc3
2 changed files with 15 additions and 15 deletions
src
|
@ -197,9 +197,9 @@ global void ViewportSetViewpoint(Viewport* vp, int x, int y, int offsetx, int of
|
|||
if (x < 0) {
|
||||
vp->MapX = 0;
|
||||
vp->OffsetX = 0;
|
||||
} else if (x > TheMap.Width - map_width) {
|
||||
vp->MapX = (TheMap.Width * TileSizeX - (vp->EndX - vp->X)) / TileSizeX;
|
||||
vp->OffsetX = (TheMap.Width * TileSizeX - (vp->EndX - vp->X)) % TileSizeX;
|
||||
} else if (x >= TheMap.Width - map_width + 1) {
|
||||
vp->MapX = TheMap.Width - vp->MapWidth + 1;
|
||||
vp->OffsetX = 0;
|
||||
} else {
|
||||
vp->MapX = x;
|
||||
if (vp->OffsetX < 0) {
|
||||
|
@ -211,14 +211,14 @@ global void ViewportSetViewpoint(Viewport* vp, int x, int y, int offsetx, int of
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
DebugCheck(vp->OffsetX < 0 || vp->OffsetX >= TileSizeX);
|
||||
map_height = vp->MapHeight;
|
||||
if (y < 0) {
|
||||
vp->MapY = 0;
|
||||
vp->OffsetY = 0;
|
||||
} else if (y > TheMap.Height - map_height) {
|
||||
vp->MapY = (TheMap.Height * TileSizeY - (vp->EndY - vp->Y)) / TileSizeY;
|
||||
vp->OffsetY = (TheMap.Height * TileSizeY - (vp->EndY - vp->Y)) % TileSizeY;
|
||||
} else if (y >= TheMap.Height - map_height + 1) {
|
||||
vp->MapY = TheMap.Height - vp->MapHeight + 1;
|
||||
vp->OffsetY = 0;
|
||||
} else {
|
||||
vp->MapY = y;
|
||||
if (vp->OffsetY < 0) {
|
||||
|
@ -230,7 +230,7 @@ global void ViewportSetViewpoint(Viewport* vp, int x, int y, int offsetx, int of
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
DebugCheck(vp->OffsetY < 0 || vp->OffsetY >= TileSizeY);
|
||||
MarkDrawEntireMap();
|
||||
MustRedraw |= RedrawMinimap | RedrawMinimapCursor;
|
||||
}
|
||||
|
|
|
@ -156,10 +156,11 @@ local void MoveMapViewPointDown(int step)
|
|||
++vp->MapY;
|
||||
}
|
||||
// If bottom is > Last map top, make it equal
|
||||
if (vp->MapY * TileSizeY + vp->OffsetY + (vp->EndY - vp->Y + 1) > TheMap.Height * TileSizeY) {
|
||||
vp->MapY = (TheMap.Height * TileSizeY - (vp->EndY - vp->Y + 1)) / TileSizeY;
|
||||
vp->OffsetY = (TheMap.Height * TileSizeY - (vp->EndY - vp->Y + 1)) % TileSizeY;
|
||||
if (vp->MapY + vp->MapHeight - 1 >= TheMap.Height) {
|
||||
vp->MapY = TheMap.Height - vp->MapHeight + 1;
|
||||
vp->OffsetY = 0;
|
||||
}
|
||||
vp->OffsetY = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -177,11 +178,10 @@ local void MoveMapViewPointRight(int step)
|
|||
vp->OffsetX -= TileSizeX;
|
||||
++vp->MapX;
|
||||
}
|
||||
|
||||
// If right is > Last map top, make it equal
|
||||
if (vp->MapX * TileSizeX + vp->OffsetX + (vp->EndX - vp->X + 1) > TheMap.Width * TileSizeX) {
|
||||
vp->MapX = (TheMap.Width * TileSizeX - (vp->EndX - vp->X + 1)) / TileSizeX;
|
||||
vp->OffsetX = (TheMap.Width * TileSizeX - (vp->EndX - vp->X + 1)) % TileSizeX;
|
||||
if (vp->MapX + vp->MapWidth - 1> TheMap.Width) {
|
||||
vp->MapX = TheMap.Width - vp->MapWidth + 1;
|
||||
vp->OffsetX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue