#ifndef _AS_GA_ARENA #define _AS_GA_ARENA const AS_MAX_MAPS = 2; const AS_MAP_LEVELS = 4;//4;//5; const AS_MAP_ROWS = 9;//9;//5; const AS_MAP_COLUMNS = 11;//11;//5; const AS_MAP_LEVEL_OFFSET = 10; const AS_MAP_ROOM_LENGTH = 2000; const AS_MAP_UP = 0; const AS_MAP_DOWN = 1; const AS_MAP_LEFT = 2; const AS_MAP_RIGHT = 3; const AS_MAX_SEARCH = 4; // ground search const AS_MAX_REPLICATE = 3; const AS_MAX_VISIBLE_BLOCKS = 25;// a design constraint const AS_MAP_SEARCH_MAIN_LOOP = 1; const AS_MAP_SEARCH_FIRST_ADJACENT = 2; const AS_MAP_SEARCH_NO_RECURSION = 3; const AS_MAP_STAIRS_LEFTTORIGHT = 1; const AS_MAP_STAIRS_RIGHTTOLEFT = 2; const AS_MAP_STAIRS_UPTODOWN = 3; const AS_MAP_STAIRS_DOWNTOUP = 4; const AS_MAX_LINKS = 100; struct AsMapArrayElement { // Make it fit into 2 ints //char adjacentLevelNumber[4]; char adjacentBlock[4]; char isRoom; char stairInfo; char available1; char available2; }; struct AsMapLink { char x; char y; char z; char direction; }; struct AsVisibleBlock { char level; char row; char column; char replicate; }; class AsArenaBuilder { AsMapArrayElement mapArray[AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; int totalLinks; int vertices; int panels; public: int visualMap[AS_MAX_REPLICATE][AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; int visualX[AS_MAX_REPLICATE][AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; int visualY[AS_MAX_REPLICATE][AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; int visualZ[AS_MAX_REPLICATE][AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; int visualRotation[AS_MAX_REPLICATE][AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; int panelCount[AS_MAP_LEVELS][AS_MAP_ROWS][AS_MAP_COLUMNS]; AsMapLink links[AS_MAX_LINKS]; int visibleBlocks; AsVisibleBlock visibleBlock[AS_MAX_VISIBLE_BLOCKS]; int levelsInMap[AS_MAX_MAPS]; AsArenaBuilder(); #ifdef _AS_VERSION_PC void ReadMap(char *filename); void ReadMap2(char *filename); void ReadBinaryMap(); #else void ReadBinaryMap(void *lModelAddress,int mapNumber); #endif void CountItems2(); void CountItems(); int GetRooms(int level,int row,int column); int GetRooms2(int level,int row,int column); int Panels() {return panels;} int Vertices() {return vertices;} int GetRotation(int direction, int newDirection); int ConvertDirection(int oldDirection,int rotation); void CalculateVisualMap(int X, int Y, int Z, int aroundY, int rotation); void GroundSearch(int baseY,int level,int row,int column, int direction, int length, int recurse, int depth); void GroundSearch2(int baseX,int baseY,int baseZ,int level,int row,int column, int direction, // int length, int type,int oldDirection,int originalDirection,int rotation); int length, int type,int oldDirection,int rotation); AsMapArrayElement *GetMapArray(int level, int row, int column) {return &(mapArray[level][row][column]);} }; #endif