This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
else if(roomOrientation == RoomOrientation::staggered) { | |
if(!staggeredIsoMapUtil) { | |
errStream << "Error loading tiles for staggered iso map, staggered map details incomplete." << std::endl; | |
return false; | |
} | |
if(staggeredIsoMapUtil->staggerAxis == "x") { | |
tile->set_x(currX * mapTileWidth / 2); | |
if((currX%2 == 0 && staggeredIsoMapUtil->staggerIndex == "odd") || |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
else if(orientation == "staggered") { | |
roomOrientation = RoomOrientation::staggered; | |
staggeredIsoMapUtil = std::make_unique<StaggerUtil>(); | |
staggeredIsoMapUtil->staggerAxis = resNode->room().staggeraxis(); | |
staggeredIsoMapUtil->staggerIndex = resNode->room().staggerindex(); | |
if(staggeredIsoMapUtil->staggerAxis == "x") { | |
resNode->mutable_room()->set_width(nHoriTiles * tileWidthPixels / 2); | |
resNode->mutable_room()->set_height(nVertTiles * tileHeightPixels); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
else if(roomOrientation == RoomOrientation::isometric) { | |
int xStart = ((layerWidth * mapTileWidth) / 2) /*Mid x coordinate of the room in pixels*/ | |
- (mapTileWidth / 2) /*Reposition by an offset of half of tileWidth*/ | |
- (currY * (mapTileWidth / 2)); /*Reposition x coordinate depending on the row index or currY*/ | |
int x = xStart + (currX * mapTileWidth / 2); | |
int y = (currY * mapTileHeight / 2) + (currX * mapTileHeight / 2); | |
tile->set_x(x); | |
tile->set_y(y); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct StaggerUtil { | |
/** | |
* @brief Specifies the alignment of hex tiles, can be either "x" or "y" | |
*/ | |
std::string staggerAxis; | |
/** | |
* @brief Specifies index(among each pair of neighbouring indices) to be shifted to create hex map, | |
* can be either "even" or "odd" | |
*/ | |
std::string staggerIndex; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if(hexMapUtil) { | |
if(hexMapUtil->staggerAxis == "x") { | |
tile->set_x(currX * (tileWidth - (hexMapUtil->hexSideLength/2))); | |
if((currX%2 == 0 && hexMapUtil->staggerIndex == "odd") || (currX%2 != 0 && hexMapUtil->staggerIndex == "even")) | |
tile->set_y(currY*tileHeight); | |
else | |
tile->set_y(currY*tileHeight + hexMapUtil->hexSideLength); | |
} | |
else { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
unsigned int nHoriTiles = resNode->room().width(); | |
unsigned int nVertTiles = resNode->room().height(); | |
unsigned int tileWidthPixels = resNode->room().hsnap(); | |
unsigned int tileHeightPixels = resNode->room().vsnap(); | |
if(resNode->mutable_room()->orientation() == "hexagonal") { | |
hexMapUtil = std::make_unique<HexMapUtil>(); | |
hexMapUtil->hexSideLength = resNode->room().hexsidelength(); | |
hexMapUtil->staggerAxis = resNode->room().staggeraxis(); | |
hexMapUtil->staggerIndex = resNode->room().staggerindex(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct HexMapUtil { | |
unsigned int hexSideLength; | |
string staggerAxis; | |
string staggerIndex; | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
std::unique_ptr<char[]> Decoder::decompress(size_t &length, size_t off) { | |
std::unique_ptr<char[]> src = read(length, off); | |
z_stream zs = {}; // zero-initialize | |
// using inflateInit2 with windowBits(2nd argument) set to MAX_WBITS | 32, triggers header detection to properly | |
// decompress both zlib and gzip streams | |
if (inflateInit2(&zs, MAX_WBITS | 32) != Z_OK) { | |
errStream << "Failed to initialize zlib inflate" << std::endl; | |
return nullptr; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bool LoadBase64ZstdLayerData(const std::string &decodedStr, const size_t &expectedSize, buffers::TreeNode *resNode, | |
const int& tileWidth, const int& tileHeight, const int& layerWidth, const int& layerHeight) { | |
std::vector<unsigned char> outTileData; | |
outTileData.resize(expectedSize); | |
// decompress zstd compressed data | |
size_t const outSize = ZSTD_decompress(outTileData.data(), outTileData.size(), | |
decodedStr.data(), decodedStr.size()); | |
if(ZSTD_isError(outSize)) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
find_library(LIB_ZSTD NAMES zstd) | |
target_link_libraries(${LIB_EGM} PRIVATE ${LIB_ZSTD}) |
NewerOlder