More work on Tileson integration
This commit is contained in:
parent
bbab18d361
commit
b15316c40e
@ -42,37 +42,65 @@ public:
|
|||||||
SDL_DestroyTexture(texture);
|
SDL_DestroyTexture(texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
TileMapComponent(/*tileson::Tileson loadedMap,*/ int gScale, int offsetX, int offsetY)
|
TileMapComponent(std::string mapPath, int gScale, int offsetX, int offsetY)
|
||||||
{
|
{
|
||||||
// ***********************************************************************************
|
// ***********************************************************************************
|
||||||
// TILESON ~~~~~~~~~~~
|
// TILESON ~~~~~~~~~~~
|
||||||
|
|
||||||
tson::Tileson t;
|
tson::Tileson t;
|
||||||
std::unique_ptr<tson::Map> map = t.parse(fs::path("../../assets/maps/testmap.json"));
|
const std::filesystem::path jsonPath = std::filesystem::u8path(mapPath);
|
||||||
|
std::unique_ptr<tson::Map> map = t.parse(jsonPath);
|
||||||
|
|
||||||
if(map->getStatus() == tson::ParseStatus::OK)
|
std::cout << jsonPath << std::endl;
|
||||||
{
|
if(map->getStatus() == tson::ParseStatus::OK)
|
||||||
printf("Parsed the map file okay.");
|
{
|
||||||
//Gets the layer called "Object Layer" from the "ultimate_demo.json map
|
printf("Tileson successfully parsed the tilemap\n");
|
||||||
tson::Layer *objectLayer = map->getLayer("Object Layer"); //This is an Object Layer
|
std::cout << map->getStatusMessage() << std::endl;
|
||||||
|
//Gets the layer called "Object Layer" from the "ultimate_demo.json map
|
||||||
|
//tson::Layer *tileLayer = map->getLayer("Tile Layer 1"); //This is an Object Layer
|
||||||
|
|
||||||
|
//Example from a Tile Layer
|
||||||
|
//I know for a fact that this is a Tile Layer, but you can check it this way to be sure.
|
||||||
|
//if(tileLayer->getType() == tson::LayerType::TileLayer)
|
||||||
|
//{
|
||||||
|
//pos = position in tile units
|
||||||
|
// printf("Tileson found layer of tiles");
|
||||||
|
// for(auto &[pos, tileObject] : tileLayer->getTileObjects()) //Loops through absolutely all existing tileObjects
|
||||||
|
// {
|
||||||
|
// tson::Tileset *tileset = tileObject.getTile()->getTileset();
|
||||||
|
// tson::Rect drawingRect = tileObject.getDrawingRect();
|
||||||
|
// tson::Vector2f position = tileObject.getPosition();
|
||||||
|
// //printf("X: %f, Y: %f\n",position.x,position.y);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
}
|
|
||||||
// *******************************************************************************************
|
// *******************************************************************************************
|
||||||
/*map = loadedMap;
|
//map = loadedMap;
|
||||||
std::string texturePath = "assets/textures/tiles/" + loadedMap.tilesetCollection[0].name + ".png";
|
tson::Tileset *tileset = map->getTileset("br-tiles");
|
||||||
Game::assets->AddTexture(map.tilesetCollection[0].name, texturePath.c_str());
|
std::cout << "Image Path: " << tileset->getImage() << std::endl;
|
||||||
setTex(map.tilesetCollection[0].name);
|
|
||||||
|
//tson::Tile *tile = tileset->getTile(1);
|
||||||
|
//std::string myTexPath = tile->getImage();
|
||||||
|
//tson::Layer *tileLayer = map->getLayer("Tile Layer 1"); //This is an Object Layer
|
||||||
|
//std::cout << "\nTexturePath: \n" << myTexPath << "\n" << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
//std::string texturePath = "assets/textures/tiles/" + loadedMap.tilesetCollection[0].name + ".png";
|
||||||
|
//Game::assets->AddTexture(map.tilesetCollection[0].name, texturePath.c_str());
|
||||||
|
//setTex(map.tilesetCollection[0].name);
|
||||||
globalScale = gScale;
|
globalScale = gScale;
|
||||||
|
|
||||||
colliders.resize(map.height, std::vector<int>(map.width, 0));
|
//colliders.resize(map.height, std::vector<int>(map.width, 0));
|
||||||
tilesWide = map.width;
|
tilesWide = map->getSize().x;
|
||||||
tilesHigh = map.height;
|
//printf("tilesWide: %d\n",tilesWide);
|
||||||
tileWidth = map.tileWidth;
|
tilesHigh = map->getSize().y;
|
||||||
|
//printf("tilesHigh: %d\n",tilesHigh);
|
||||||
|
tileWidth = map->getTileSize().x;
|
||||||
|
//printf("tileSizeWidth: %d\n",tileWidth);
|
||||||
|
|
||||||
// =========== Setup Tile Set ===========
|
// =========== Setup Tile Set ===========
|
||||||
tileSetTotal = map.tilesetCollection[0].colCount*map.tilesetCollection[0].rowCount;*/
|
//tileSetTotal = map.tilesetCollection[0].colCount*map.tilesetCollection[0].rowCount;
|
||||||
tileSet.resize(tileSetTotal);
|
//tileSet.resize(tileSetTotal);
|
||||||
/*
|
/*
|
||||||
for (int r=0;r<map.tilesetCollection[0].rowCount;r++){
|
for (int r=0;r<map.tilesetCollection[0].rowCount;r++){
|
||||||
for (int c=0;c<map.tilesetCollection[0].colCount;c++){
|
for (int c=0;c<map.tilesetCollection[0].colCount;c++){
|
||||||
@ -104,7 +132,13 @@ if(map->getStatus() == tson::ParseStatus::OK)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
destRect.w = destRect.h = map.tileWidth * gScale;
|
destRect.w = destRect.h = map.tileWidth * gScale;
|
||||||
*/}
|
*/
|
||||||
|
} else {
|
||||||
|
printf("Failed to load Tileson map\n");
|
||||||
|
std::cout << map->getStatusMessage();
|
||||||
|
//printf(map->getStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void update() override
|
void update() override
|
||||||
{
|
{
|
||||||
|
@ -243,48 +243,49 @@ void Game::init(const char *title, int width, int height, bool fullscreen, int g
|
|||||||
player.addComponent<KeyboardController>();
|
player.addComponent<KeyboardController>();
|
||||||
player.addGroup(groupPlayers);
|
player.addGroup(groupPlayers);
|
||||||
|
|
||||||
gameScene.addComponent<TileMapComponent>(/*map,*/gScale,player.getComponent<TransformComponent>().position.x+player.getComponent<TransformComponent>().width/2,player.getComponent<TransformComponent>().position.y+player.getComponent<TransformComponent>().height/2); //150,100
|
gameScene.addComponent<TileMapComponent>("assets/maps/testmap.json",gScale,player.getComponent<TransformComponent>().position.x+player.getComponent<TransformComponent>().width/2,player.getComponent<TransformComponent>().position.y+player.getComponent<TransformComponent>().height/2); //150,100
|
||||||
gameScene.addGroup(groupMap);
|
gameScene.addGroup(groupMap);
|
||||||
|
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
// Tileson tryout
|
// Tileson tryout
|
||||||
printf("\nTrying out Tileson, does it work?\n");
|
// printf("\nTrying out Tileson, does it work?\n");
|
||||||
|
// //
|
||||||
|
// //
|
||||||
|
// tson::Map myMap;
|
||||||
|
// //std::string jsonStr = "assets/maps/testmap.json";
|
||||||
|
// const char * jsonStr = "assets/maps/testmap.json";
|
||||||
|
// const std::filesystem::path jsonPath = std::filesystem::u8path(jsonStr);
|
||||||
|
// std::unique_ptr<tson::Map> map = t.parse(jsonPath);
|
||||||
|
// //myMap.parse("./assets/maps/testmap.json");
|
||||||
|
// // std::unique_ptr<tson::Map> map = t.parse(tson_files::_ULTIMATE_TEST_JSON, tson_files::_ULTIMATE_TEST_JSON_SIZE);
|
||||||
|
// std::cout << jsonPath << std::endl;
|
||||||
|
// if(map->getStatus() == tson::ParseStatus::OK)
|
||||||
|
// {
|
||||||
|
// printf("Tileson successfully parsed the tilemap\n");
|
||||||
|
// std::cout << map->getStatusMessage();
|
||||||
|
// //Gets the layer called "Object Layer" from the "ultimate_demo.json map
|
||||||
|
// tson::Layer *tileLayer = map->getLayer("Tile Layer 1"); //This is an Object Layer
|
||||||
//
|
//
|
||||||
|
// //Example from a Tile Layer
|
||||||
|
// //I know for a fact that this is a Tile Layer, but you can check it this way to be sure.
|
||||||
|
// if(tileLayer->getType() == tson::LayerType::TileLayer)
|
||||||
|
// {
|
||||||
|
// //pos = position in tile units
|
||||||
|
// printf("Tileson found layer of tiles");
|
||||||
|
// for(auto &[pos, tileObject] : tileLayer->getTileObjects()) //Loops through absolutely all existing tileObjects
|
||||||
|
// {
|
||||||
|
// tson::Tileset *tileset = tileObject.getTile()->getTileset();
|
||||||
|
// tson::Rect drawingRect = tileObject.getDrawingRect();
|
||||||
|
// tson::Vector2f position = tileObject.getPosition();
|
||||||
|
// printf("X: %f, Y: %f\n",position.x,position.y);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
//
|
//
|
||||||
tson::Map myMap;
|
// } else {
|
||||||
//std::string jsonStr = "assets/maps/testmap.json";
|
// printf("Failed to load Tileson map\n");
|
||||||
const char * jsonStr = "assets/maps/testmap.json";
|
// std::cout << map->getStatusMessage();
|
||||||
const std::filesystem::path jsonPath = std::filesystem::u8path(jsonStr);
|
// //printf(map->getStatus());
|
||||||
std::unique_ptr<tson::Map> map = t.parse(jsonPath);
|
// }
|
||||||
//myMap.parse("./assets/maps/testmap.json");
|
|
||||||
// std::unique_ptr<tson::Map> map = t.parse(tson_files::_ULTIMATE_TEST_JSON, tson_files::_ULTIMATE_TEST_JSON_SIZE);
|
|
||||||
std::cout << jsonPath << std::endl;
|
|
||||||
if(map->getStatus() == tson::ParseStatus::OK)
|
|
||||||
{
|
|
||||||
printf("Tileson successfully parsed the tilemap\n");
|
|
||||||
std::cout << map->getStatusMessage();
|
|
||||||
//Gets the layer called "Object Layer" from the "ultimate_demo.json map
|
|
||||||
//tson::Layer *tileLayer = map->getLayer("Tile Layer 1"); //This is an Object Layer
|
|
||||||
|
|
||||||
//Example from a Tile Layer
|
|
||||||
//I know for a fact that this is a Tile Layer, but you can check it this way to be sure.
|
|
||||||
// if(tileLayer->getType() == tson::LayerType::TileLayer)
|
|
||||||
// {
|
|
||||||
// //pos = position in tile units
|
|
||||||
// printf("Tileson found layer of tiles");
|
|
||||||
// /*for(auto &[pos, tileObject] : tileLayer->getTileObjects()) //Loops through absolutely all existing tileObjects
|
|
||||||
// {
|
|
||||||
// tson::Tileset *tileset = tileObject.getTile()->getTileset();
|
|
||||||
// tson::Rect drawingRect = tileObject.getDrawingRect();
|
|
||||||
// tson::Vector2f position = tileObject.getPosition();
|
|
||||||
// }*/
|
|
||||||
// }
|
|
||||||
|
|
||||||
} else {
|
|
||||||
printf("Failed to load Tileson map\n");
|
|
||||||
std::cout << map->getStatusMessage();
|
|
||||||
//printf(map->getStatus());
|
|
||||||
}
|
|
||||||
|
|
||||||
playerPosition = Vector2D().Zero();
|
playerPosition = Vector2D().Zero();
|
||||||
pVel = Vector2D().Zero();
|
pVel = Vector2D().Zero();
|
||||||
|
Loading…
Reference in New Issue
Block a user