--- deliantra/server/include/map.h 2007/01/01 12:28:47 1.46 +++ deliantra/server/include/map.h 2007/01/10 01:16:54 1.50 @@ -1,6 +1,7 @@ /* CrossFire, A Multiplayer game for X-windows + Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team Copyright (C) 2002-2005 Mark Wedel & Crossfire Development Team Copyright (C) 1992 Frank Tore Johansen @@ -56,10 +57,12 @@ #define MAP_OVERLAY 0x10 /* Values for in_memory below. Should probably be an enumerations */ -#define MAP_IN_MEMORY 1 -#define MAP_SWAPPED 2 -#define MAP_LOADING 3 -#define MAP_SAVING 4 +enum { + MAP_IN_MEMORY, + MAP_SWAPPED, + MAP_LOADING, + MAP_SAVING, +}; /* GET_MAP_FLAGS really shouldn't be used very often - get_map_flags should * really be used, as it is multi tile aware. However, there are some cases @@ -325,29 +328,26 @@ MTH void touch () { last_access = runtime; } -// static maptile *find_map (const char *path, maptile *origin);//PERL -// -// // load a map relative to this one -// maptile *find_map (const char *path) -// { -// return find_map (path, this); -// } -// -// // customise this map for the given player -// // might return this or a completely new map -// maptile *customise_for (object *op); -// -// void do_force_map_sync ();//PERL -// -// // make sure the map is loaded -// MTH void force_map_sync () -// { -// if (in_memory != MAP_IN_MEMORY) -// do_force_map_sync (); -// } + // find the map that is at coordinate x|y relative to this map + // TODO: need a better way than passing by reference + // TODO: make perl interface + maptile *xy_find (sint16 &x, sint16 &y); + + // like xy_find, but also loads the map + maptile *xy_load (sint16 &x, sint16 &y); + + void do_load_sync ();//PERL + + // make sure the map is loaded + MTH void load_sync () + { + if (!spaces) + do_load_sync (); + } - static maptile *load_map_sync (const char *path, maptile *original = 0);//PERL - static void emergency_save ();//PERL + static maptile *find_sync (const char *path, maptile *original = 0);//PERL + // async prefetch + static maptile *find_async (const char *path, maptile *original = 0);//PERL mapspace const &at (uint32 x, uint32 y) const { return spaces [x * height + y]; } mapspace &at (uint32 x, uint32 y) { return spaces [x * height + y]; }