ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/map.c
(Generate patch)

Comparing deliantra/server/common/map.c (file contents):
Revision 1.4 by elmex, Wed Feb 22 18:53:48 2006 UTC vs.
Revision 1.5 by root, Wed Feb 22 19:08:43 2006 UTC

1/* 1/*
2 * static char *rcsid_map_c = 2 * static char *rcsid_map_c =
3 * "$Id: map.c,v 1.4 2006/02/22 18:53:48 elmex Exp $"; 3 * "$Id: map.c,v 1.5 2006/02/22 19:08:43 root Exp $";
4 */ 4 */
5 5
6/* 6/*
7 CrossFire, A Multiplayer game for X-windows 7 CrossFire, A Multiplayer game for X-windows
8 8
2037 */ 2037 */
2038 2038
2039 return m; 2039 return m;
2040} 2040}
2041 2041
2042// return wether map2 is adjacent to map1 and store their distance
2043// in dx/dy if yes.
2044static int adjacent_map (mapstruct *map1, mapstruct *map2, int *dx, int *dy)
2045{
2046 if (!map1 || !map2)
2047 return 0;
2048
2049 else if (map1 == map2)
2050 *dx = *dy = 0;
2051
2052 else if (map1->tile_map[0] == map2) // up
2053 (*dx = 0), (*dy = -MAP_HEIGHT (map2));
2054 else if (map1->tile_map[1] == map2) // right
2055 (*dx = MAP_WIDTH (map2)), (*dy = 0);
2056 else if (map1->tile_map[2] == map2) // down
2057 (*dx = 0), (*dy = MAP_HEIGHT (map2));
2058 else if (map1->tile_map[3] == map2) // left
2059 (*dx = -MAP_WIDTH (map2)), (*dy = 0);
2060
2061 else if (map1->tile_map[0] && map1->tile_map[0]->tile_map[1] == map2) // up right
2062 (*dx = MAP_WIDTH (map2)), (*dy = -MAP_HEIGHT (map1->tile_map[0]));
2063 else if (map1->tile_map[0] && map1->tile_map[0]->tile_map[3] == map2) // up left
2064 (*dx = -MAP_WIDTH (map2)), (*dy = -MAP_HEIGHT (map1->tile_map[0]));
2065 else if (map1->tile_map[1] && map1->tile_map[1]->tile_map[0] == map2) // right up
2066 (*dx = MAP_HEIGHT (map1->tile_map[1])), (*dy = -MAP_WIDTH (map2));
2067 else if (map1->tile_map[1] && map1->tile_map[1]->tile_map[2] == map2) // right down
2068 (*dx = MAP_HEIGHT (map1->tile_map[1])), (*dy = MAP_WIDTH (map2));
2069 else if (map1->tile_map[2] && map1->tile_map[2]->tile_map[1] == map2) // down right
2070 (*dx = MAP_WIDTH (map2)), (*dy = MAP_HEIGHT (map1->tile_map[2]));
2071 else if (map1->tile_map[2] && map1->tile_map[2]->tile_map[3] == map2) // down left
2072 (*dx = -MAP_WIDTH (map2)), (*dy = MAP_HEIGHT (map1->tile_map[2]));
2073 else if (map1->tile_map[3] && map1->tile_map[3]->tile_map[0] == map2) // left up
2074 (*dx = -MAP_HEIGHT (map1->tile_map[3])), (*dy = -MAP_WIDTH (map2));
2075 else if (map1->tile_map[3] && map1->tile_map[3]->tile_map[2] == map2) // left down
2076 (*dx = MAP_HEIGHT (map1->tile_map[3])), (*dy = MAP_WIDTH (map2));
2077
2078 else // not "adjacent" enough
2079 return 0;
2080
2081 return 1;
2082}
2083
2084/** 2042/**
2085 * Return whether map2 is adjacent to map1. If so, store the distance from 2043 * Return whether map2 is adjacent to map1. If so, store the distance from
2086 * map1 to map2 in dx/dy. 2044 * map1 to map2 in dx/dy.
2087 */ 2045 */
2088static int adjacent_map(const mapstruct *map1, const mapstruct *map2, int *dx, int *dy) { 2046static int adjacent_map(const mapstruct *map1, const mapstruct *map2, int *dx, int *dy) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines