git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2559 c06c8d41-db1a-0410-9941-cceddc491573
AO3KHGKGSX2ZR24KJVIOTUY7EHYHMMI5W4HN3CAG4YGQHBOHLGDQC XJUQANMY7JJTA3KDICDXEOBE22YQTMZQSDPP4PFBTTGJJDK4X5KAC JT672SIJK4BOIUAGL2WQ6NR2NF4PSWP3BT6Q4HMNRF25UN6JQ2MAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC MSQI3TH6T62JAXQGLL52QZCWAMC372TGB6ZNNRDGUGMJKBNNV2VAC ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC 6QWZDCP5HGYLTJO3WWYJJGRRT7QFY6IG64TC7TUB553Z7GAA2HIQC WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC C22455VGUQOSUX2OORA32LROFQ7NNYDMD2ZDTTUZSAQLXK4AD6QAC NCDWWDJQLAU5ORSAQGZKJJ5E22VTDGGPJMVVBWQFHQ2B3U3UFHDQC KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC PISXY4NKSKL5KDJWAHD7CTXWTQDH3NFWQSFAHUAI3VVATWKXRODQC HZK3YN3SAISTDS5JI4COBYFG7YB4ABDVENXWZZEYLFA2LDI232VAC ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC CUNNC574MESEMTTONZ6YB6CJ2S5P6VA3V7Z3OODESWAK37GYOBPAC 56C44YMFHZ62GXAAOLYSLLGBVGRWXB53W2VI37Q26ZECEK2XG5SQC CREW3VTGN2BV622ZXHCPHUEZWBAGEQMNUELDLTHLEKG4VBXGMRPQC 4RFKVDJKTCRBZU6WPJ2E5OVI5IRPY3UTRPOBLC5QHY4CQJJTLZKQC IVVTHLTTLOP5TSULXJWUSSXHOKYWVU3OWKYVK45A7RIB6V34MYQAC KNBQ2Y4XXAJGSHC4FU2AHCRGLLHETYA2MU55TDSHV2TIMTOX3QZQC W5WCC5J7PL6IXZ5LPSUWGY3IVQBCTK3FKOD5ADYRWWH2N425NEAAC SCXU5KW3LWPSVVCOWSCZLDXHV7IUMCFTGIWZ2LFSBIUKAOBYHJBQC RXSPAKO7FZKRJMEBCQ4W32DLZZP7CJHJSHRUOQ2GE7I3QSM7KYOQC ZJU5Z2WDMI7HN4XJ3NVTVRHIZO2CGFUQ2FSKIRJVTQG47XHNCZFQC 3PY3L3A4QRW3Z5Y7SHO4TMVOOP2VNCO27X2MX4DTOP2SADLBQUOAC 7J3H7JY6AUO2UHNF6DAHDZI4O33JMTUUTYTPRM3CKNPUOF2RQOGAC ITUTGFJ56GR7FWMC5Y7XKUJJ4Z35I6BMOHCPCW3W5MKDQGVOGM4AC R5JKQLY5QE6UBG3RH3Y5ZRSX6H35CHYI2HYNDZF6ZHVRULUORXBQC void fit_region_into_map_bounds(coord_def &pos, const coord_def &size){ASSERT(size.x <= GXM && size.y <= GYM);if (pos.x < X_BOUND_1)pos.x = X_BOUND_1;if (pos.y < Y_BOUND_1)pos.y = Y_BOUND_1;if (pos.x + size.x - 1 > X_BOUND_2)pos.x = X_BOUND_2 - size.x + 1;if (pos.y + size.y - 1 > Y_BOUND_2)pos.y = Y_BOUND_2 - size.y + 1;}
coord_def where = def.float_place();// No further sanity checks.startx = where.x;starty = where.y;
if (map_bounds(place.pos)){start = place.pos - coord_def(width, height) / 2;fit_region_into_map_bounds(start, coord_def(width, height));}elsestart = def.float_place();
for (int y = place.y + place.height - 1; y >= place.y; --y)for (int x = place.x + place.width - 1; x >= place.x; --x)if (place.map.in_map(coord_def(x - place.x, y - place.y)))
for (int y = place.pos.y + place.size.y - 1; y >= place.pos.y; --y)for (int x = place.pos.x + place.size.x - 1; x >= place.pos.x; --x)if (place.map.in_map(coord_def(x - place.pos.x, y - place.pos.y)))
for (int y = place.y + place.height - 1; y >= place.y; --y)for (int x = place.x + place.width - 1; x >= place.x; --x)if (place.map.in_map(coord_def(x - place.x, y - place.y)))
for (int y = place.pos.y + place.size.y - 1; y >= place.pos.y; --y)for (int x = place.pos.x + place.size.x - 1; x >= place.pos.x; --x)if (place.map.in_map(coord_def(x - place.pos.x, y - place.pos.y)))
for (int y = place.y + 1; y < place.y + place.height - 1; ++y)for (int x = place.x + 1; x < place.x + place.width - 1; ++x)
for (int y = place.pos.y + 1; y < place.pos.y + place.size.y - 1; ++y)for (int x = place.pos.x + 1; x < place.pos.x + place.size.x - 1; ++x)
if (grid_needs_exit(place.x, y))possible_exits.push_back( coord_def(place.x, y) );if (grid_needs_exit(place.x + place.width - 1, y))possible_exits.push_back( coord_def(place.x + place.width - 1, y) );
if (grid_needs_exit(place.pos.x, y))possible_exits.push_back( coord_def(place.pos.x, y) );if (grid_needs_exit(place.pos.x + place.size.x - 1, y))possible_exits.push_back(coord_def(place.pos.x + place.size.x - 1, y) );
if (grid_needs_exit(x, place.y))possible_exits.push_back( coord_def(x, place.y) );if (grid_needs_exit(x, place.y + place.height - 1))
if (grid_needs_exit(x, place.pos.y))possible_exits.push_back( coord_def(x, place.pos.y) );if (grid_needs_exit(x, place.pos.y + place.size.y - 1))
const int v1x = place.x;const int v1y = place.y;const int v2x = place.x + place.width - 1;const int v2y = place.y + place.height - 1;
const int v1x = place.pos.x;const int v1y = place.pos.y;const int v2x = place.pos.x + place.size.x - 1;const int v2y = place.pos.y + place.size.y - 1;
if (dgn_place_map(map, false, true))
const map_def *toplace = map_by_index(map);coord_def where(-1, -1);if ((toplace->orient == MAP_FLOAT || toplace->orient == MAP_NONE)&& place_on_us){where = you.pos();}if (dgn_place_map(map, false, true, where))