From 1e452a27de8de22d933f5b37c407aa3980948a66 Mon Sep 17 00:00:00 2001 From: ultramage Date: Wed, 26 Dec 2007 17:18:57 +0000 Subject: Moved distance-related functions to path.c/h git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11981 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/map.c | 46 ---------------------------------------------- src/map/map.h | 11 ----------- src/map/mob.c | 1 + src/map/path.c | 43 +++++++++++++++++++++++++++++++++++++++++++ src/map/path.h | 12 ++++++++++++ src/map/pc.c | 1 + src/map/pet.c | 1 + src/map/script.c | 3 ++- src/map/status.c | 3 ++- src/map/trade.c | 1 + src/map/vending.c | 1 + 11 files changed, 64 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/map/map.c b/src/map/map.c index c4a0847b6..59eef42cc 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -177,52 +177,6 @@ int map_getusers(void) return map_users; } -//Distance functions, taken from http://www.flipcode.com/articles/article_fastdistance.shtml -int check_distance(int dx, int dy, int distance) -{ -#ifdef CIRCULAR_AREA - //In this case, we just do a square comparison. Add 1 tile grace for diagonal range checks. - return (dx*dx + dy*dy <= distance*distance + (dx&&dy?1:0)); -#else - if (dx < 0) dx = -dx; - if (dy < 0) dy = -dy; - return ((dx> 8 ); -#else - if (dx < 0) dx = -dx; - if (dy < 0) dy = -dy; - return (dxx - (bl2)->x, (bl1)->y - (bl2)->y, distance) -#define check_distance_blxy(bl, x1, y1, distance) check_distance((bl)->x-(x1), (bl)->y-(y1), distance) -#define check_distance_xy(x0, y0, x1, y1, distance) check_distance((x0)-(x1), (y0)-(y1), distance) -int check_distance(int dx, int dy, int distance); - -#define distance_bl(bl1, bl2) distance((bl1)->x - (bl2)->x, (bl1)->y - (bl2)->y) -#define distance_blxy(bl, x1, y1) distance((bl)->x-(x1), (bl)->y-(y1)) -#define distance_xy(x0, y0, x1, y1) distance((x0)-(x1), (y0)-(y1)) -unsigned int distance(int dx, int dy); - int cleanup_sub(struct block_list *bl, va_list ap); void map_helpscreen(int flag); // [Valaris] diff --git a/src/map/mob.c b/src/map/mob.c index d5105597f..3e3e7719d 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -12,6 +12,7 @@ #include "../common/utils.h" #include "map.h" +#include "path.h" #include "clif.h" #include "intif.h" #include "pc.h" diff --git a/src/map/path.c b/src/map/path.c index 52dcd0ac8..549144d7b 100644 --- a/src/map/path.c +++ b/src/map/path.c @@ -453,3 +453,46 @@ bool path_search(struct walkpath_data *wpd,int m,int x0,int y0,int x1,int y1,int return true; } + + +//Distance functions, taken from http://www.flipcode.com/articles/article_fastdistance.shtml +int check_distance(int dx, int dy, int distance) +{ +#ifdef CIRCULAR_AREA + //In this case, we just do a square comparison. Add 1 tile grace for diagonal range checks. + return (dx*dx + dy*dy <= distance*distance + (dx&&dy?1:0)); +#else + if (dx < 0) dx = -dx; + if (dy < 0) dy = -dy; + return ((dx> 8 ); +#else + if (dx < 0) dx = -dx; + if (dy < 0) dy = -dy; + return (dxx - (bl2)->x, (bl1)->y - (bl2)->y, distance) +#define check_distance_blxy(bl, x1, y1, distance) check_distance((bl)->x-(x1), (bl)->y-(y1), distance) +#define check_distance_xy(x0, y0, x1, y1, distance) check_distance((x0)-(x1), (y0)-(y1), distance) + +unsigned int distance(int dx, int dy); +#define distance_bl(bl1, bl2) distance((bl1)->x - (bl2)->x, (bl1)->y - (bl2)->y) +#define distance_blxy(bl, x1, y1) distance((bl)->x-(x1), (bl)->y-(y1)) +#define distance_xy(x0, y0, x1, y1) distance((x0)-(x1), (y0)-(y1)) + #endif /* _PATH_H_ */ diff --git a/src/map/pc.c b/src/map/pc.c index 9caff12db..959503654 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -20,6 +20,7 @@ #include "itemdb.h" #include "log.h" #include "map.h" +#include "path.h" #include "mercenary.h" // merc_is_hom_active() #include "mob.h" // MAX_MOB_RACE_DB #include "npc.h" // fake_nd diff --git a/src/map/pet.c b/src/map/pet.c index e52753085..a792924f5 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -13,6 +13,7 @@ #include "pc.h" #include "status.h" #include "map.h" +#include "path.h" #include "intif.h" #include "clif.h" #include "chrif.h" diff --git a/src/map/script.c b/src/map/script.c index 249d4c321..b0621aa40 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -17,6 +17,7 @@ #include "../common/utils.h" #include "map.h" +#include "path.h" #include "clif.h" #include "chrif.h" #include "itemdb.h" @@ -11594,7 +11595,7 @@ BUILDIN_FUNC(distance) x1 = script_getnum(st,4); y1 = script_getnum(st,5); - script_pushint(st,distance(x0-x1, y0-y1)); + script_pushint(st,distance_xy(x0,y0,x1,y1)); return 0; } diff --git a/src/map/status.c b/src/map/status.c index 4d36ddec3..611f7e02e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -9,8 +9,9 @@ #include "../common/utils.h" #include "../common/ers.h" -#include "pc.h" #include "map.h" +#include "path.h" +#include "pc.h" #include "pet.h" #include "npc.h" #include "mob.h" diff --git a/src/map/trade.c b/src/map/trade.c index fcb116d06..fa092c49c 100644 --- a/src/map/trade.c +++ b/src/map/trade.c @@ -5,6 +5,7 @@ #include "clif.h" #include "itemdb.h" #include "map.h" +#include "path.h" #include "trade.h" #include "pc.h" #include "npc.h" diff --git a/src/map/vending.c b/src/map/vending.c index 4e4a9b729..dd0f7ad76 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -8,6 +8,7 @@ #include "itemdb.h" #include "atcommand.h" #include "map.h" +#include "path.h" #include "chrif.h" #include "vending.h" #include "pc.h" -- cgit v1.2.3-60-g2f50