summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/monstuff.cc8
-rw-r--r--crawl-ref/source/stuff.cc26
-rw-r--r--crawl-ref/source/stuff.h4
3 files changed, 30 insertions, 8 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 007f5dfb3f..b64cf0de77 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -4602,9 +4602,9 @@ static void _handle_movement(monsters *monster)
// Bounds check: don't let fleeing monsters try to run off the map.
const coord_def s = monster->target + mmov;
- if (s.x < 0 || s.x >= GXM)
+ if (!map_bounds_x(s.x))
mmov.x = 0;
- if (s.y < 0 || s.y >= GYM)
+ if (!map_bounds_y(s.y))
mmov.y = 0;
// Now quit if we can't move.
@@ -7147,9 +7147,9 @@ static void _handle_monster_move(int i, monsters *monster)
// Bounds check: don't let confused monsters try to run
// off the map.
const coord_def s = monster->pos() + mmov;
- if (s.x < 0 || s.x >= GXM)
+ if (!map_bounds_x(s.x))
mmov.x = 0;
- if (s.y < 0 || s.y >= GYM)
+ if (!map_bounds_y(s.y))
mmov.y = 0;
if (!monster->can_pass_through(monster->pos() + mmov))
diff --git a/crawl-ref/source/stuff.cc b/crawl-ref/source/stuff.cc
index 0d6368fb83..d724ca5730 100644
--- a/crawl-ref/source/stuff.cc
+++ b/crawl-ref/source/stuff.cc
@@ -1243,11 +1243,30 @@ bool player_can_hear(const coord_def& p)
return (!silenced(p) && !silenced(you.pos()));
}
+bool in_bounds_x(int x)
+{
+ return (x > X_BOUND_1 && x < X_BOUND_2);
+}
+
+bool in_bounds_y(int y)
+{
+ return (y > Y_BOUND_1 && y < Y_BOUND_2);
+}
+
// Returns true if inside the area the player can move and dig (ie exclusive).
bool in_bounds(int x, int y)
{
- return (x > X_BOUND_1 && x < X_BOUND_2
- && y > Y_BOUND_1 && y < Y_BOUND_2);
+ return (in_bounds_x(x) && in_bounds_y(y));
+}
+
+bool map_bounds_x(int x)
+{
+ return (x >= X_BOUND_1 && x <= X_BOUND_2);
+}
+
+bool map_bounds_y(int y)
+{
+ return (y >= Y_BOUND_1 && y <= Y_BOUND_2);
}
// Returns true if inside the area the player can map (ie inclusive).
@@ -1255,8 +1274,7 @@ bool in_bounds(int x, int y)
// ring of rock to frame the level.
bool map_bounds(int x, int y)
{
- return (x >= X_BOUND_1 && x <= X_BOUND_2
- && y >= Y_BOUND_1 && y <= Y_BOUND_2);
+ return (map_bounds_x(x) && map_bounds_y(y));
}
coord_def random_in_bounds()
diff --git a/crawl-ref/source/stuff.h b/crawl-ref/source/stuff.h
index 415feeaa2b..3e65492b17 100644
--- a/crawl-ref/source/stuff.h
+++ b/crawl-ref/source/stuff.h
@@ -152,7 +152,11 @@ int yesnoquit( const char* str, bool safe = true, int safeanswer = 0,
bool allow_all = false, bool clear_after = true,
char alt_yes = 'Y', char alt_yes2 = 'Y' );
+bool in_bounds_x(int x);
+bool in_bounds_y(int y);
bool in_bounds(int x, int y);
+bool map_bounds_x(int x);
+bool map_bounds_y(int y);
bool map_bounds(int x, int y);
coord_def random_in_bounds();