OpenGTA/tools/mapinfo.cpp
Anonymous Maarten 78c27f03c8 2006-12-10
2015-12-03 01:37:02 +01:00

77 lines
2.0 KiB
C++

#include <cassert>
#include "opengta.h"
#include "navdata.h"
#include "log.h"
int main(int argc, char* argv[]) {
int x = 0;
int y = 0;
if (argc < 2) {
std::cerr << "USAGE: mapinfo map_filename [x y]" << std::endl;
return 1;
}
PHYSFS_init(argv[0]);
PHYSFS_addToSearchPath(PHYSFS_getBaseDir(), 1);
std::string map_filename(argv[1]);
OpenGTA::Map map(map_filename);
if (argc == 4) {
x = atoi(argv[2]);
y = atoi(argv[3]);
}
if (x < 0)
x = 0;
if (y < 0)
y = 0;
INFO << "Querying position: " << x << ", " << y << std::endl;
OpenGTA::NavData::Sector* sec = map.nav->getSectorAt(x, y);
INFO << "* " << sec->name << " *" << std::endl;
PHYSFS_uint16 num_blocks = map.getNumBlocksAt(x, y);
OpenGTA::Map::BlockInfo* bi = NULL;
INFO << num_blocks << " empty blocks" << std::endl;
for (int c=6-num_blocks; c >= 1; c--) {
std::cout << "block " << c << std::endl;
bi = map.getBlockAt(x, y, c);
assert(bi);
std::cout << "moves: "<< int(bi->upOk()) << ", " << int(bi->downOk()) << ", "
<< int(bi->leftOk()) << ", " << int(bi->rightOk()) << std::endl;
std::cout << "type: " << int(bi->blockType()) << " flat: " <<
int(bi->isFlat()) << " slope-type: " << int(bi->slopeType()) <<
" rot: " << int(bi->rotation()) << " remap idx: " <<
int(bi->remapIndex()) << std::endl;
std::cout << "textures: left " << int(bi->left) << " right " << int(bi->right) <<
" top " << int(bi->top) << " bottom " << int(bi->bottom) << " lid " << int(bi->lid)
<< " flip t-b: " << int(bi->flipTopBottom()) << " flip l-r: " <<
int(bi->flipLeftRight()) << std::endl;
int v_count = 0;
if (bi->lid)
v_count += 3*4;
if (bi->isFlat()) {
if (bi->top)
v_count += 3*4*2;
if (bi->left)
v_count += 3*4*2;
}
else {
if (bi->left)
v_count += 3*4;
if (bi->right)
v_count += 3*4;
if (bi->top)
v_count += 3*4;
if (bi->bottom)
v_count += 3*4;
}
}
PHYSFS_deinit();
return 0;
}