TerrainTile Level::convert_byte(int y, int x, unsigned char byte){ float sheet_width = 914.0f; float sheet_height = 936.0f; TerrainTile tile; //tile.exists = false; if (byte == (unsigned char)1){ //"stoneCenter.png" x="144" y="576" width="70" height="70" Sheetposition position = Sheetposition(144.0f, 576.0f, 70.0f, 70.0f, tilesize, sheet_width, sheet_height); tile = TerrainTile(x*tilesize + tilesize/2, y*tilesize +tilesize/2, tile_texture, position, program); tile.set_behaviors(true, true, true, true); tile.set_exists(true); tile.set_hitbox(tilesize, tilesize); } else if (byte == (unsigned char)2){ //"stoneMid.png" x="72" y="432" width="70" height="70" Sheetposition position = Sheetposition(72.0f, 432.0f, 70.0f, 70.0f, tilesize, sheet_width, sheet_height); tile = TerrainTile(x * tilesize + tilesize /2, y*tilesize + tilesize /2, tile_texture, position, program); tile.set_behaviors(true, true , true, true); tile.set_exists(true); tile.set_hitbox(tilesize, tilesize); } return tile; }
void TerrainGenerator::interpretMap(float *heightMap[]){ int TileSize = 4; int *interpretedData[129]; m_curMap.resize(129, std::vector<TerrainTile>(129, TerrainTile(NULL, 0, 0, Grass, 0, 0))); for (int i = 0; i < 129; i++){ interpretedData[i] = new int[129]; } std::ofstream mapFile; mapFile.open("terrainMap.txt"); for (int i = 0; i < 129; i++){ for (int j = 0; j < 129; j++){ if (heightMap[i][j] >= 70.0f){ interpretedData[i][j] = 3; m_curMap[i][j] = TerrainTile(NULL, i * TileSize, j * TileSize, Grass, TileSize, TileSize, true); } else if (heightMap[i][j] <= 60.0f){ interpretedData[i][j] = 1; m_curMap[i][j] = TerrainTile(NULL, i * TileSize, j * TileSize, Water, TileSize, TileSize, true); } else{ interpretedData[i][j] = 2; m_curMap[i][j] = TerrainTile(NULL, i * TileSize, j * TileSize, Dirt, TileSize, TileSize, true); } mapFile << interpretedData[i][j]; } mapFile << std::endl; } mapFile.close(); }
void DungeonGenerator::InitMap(Display &MainDisplay) { std::vector<std::vector<TerrainTile>> Layer; Layer.resize(cm_DungeonWidth, std::vector<TerrainTile>(cm_DungeonHeight, TerrainTile(NULL,0,0,Floor,0,0))); for (int x = 0; x < m_Dungeon.size(); x++) { for (int y = 0; y < m_Dungeon[0].size(); y++) { TILE CurTileType = Get_Tile(Vec2i(x, y)); if (CurTileType == Wall) { Layer[x][y] = TerrainTile(NULL, x * cm_TileSize, y * cm_TileSize, Wall, cm_TileSize, cm_TileSize, true); } else if (CurTileType == Floor) { //Layer[x][y] = TerrainTile(NULL, x * cm_TileSize, y * cm_TileSize, Floor, cm_TileSize, cm_TileSize, false); Layer[x][y] = TerrainTile(m_GroundImage, x * cm_TileSize, y * cm_TileSize, Floor, cm_TileSize, cm_TileSize, false); } else if (CurTileType == Door) { Layer[x][y] = TerrainTile(NULL, x * cm_TileSize, y * cm_TileSize, Door, cm_TileSize, cm_TileSize, false); } } } TerrainLayer *Temp = new TerrainLayer(Layer); Temp->CreateBitmap(MainDisplay); m_Map = new TerrainMap(Temp); }