diff --git a/.gitignore b/.gitignore index f885ed8..dab502f 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ Bin/Unuk Bin/*.dll Save/save* Save/save_* +Data/Media/Maps/save* +Data/Media/Maps/save_* *.swp *.o *.exe diff --git a/Data/Media/Maps/map b/Data/Media/Maps/map deleted file mode 100644 index d837347..0000000 --- a/Data/Media/Maps/map +++ /dev/null @@ -1,3916 +0,0 @@ - - - - grass - false - - null - false - - 100 - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - grass - false - - null - false - - 100 - - null - 0 - 0 - - - - diff --git a/src/Unuk/Game.cpp b/src/Unuk/Game.cpp index 7608626..958bfc6 100644 --- a/src/Unuk/Game.cpp +++ b/src/Unuk/Game.cpp @@ -21,7 +21,6 @@ Game::~Game(void) { void Game::New(const string& savegameIDArg) { _saveGameID = savegameIDArg; NewSavegame(savegameIDArg); - _map.Load("map"); int spawnX; int spawnY; @@ -317,6 +316,12 @@ void Game::NewSavegame(const string savegameIDArg) { doc.LinkEndChild(saveElement); doc.SaveFile(saveFilename.c_str()); + + stringstream mapPath; + mapPath << "Data/Media/Maps/" << _saveGameID; + + _map.New(); + _map.Save(_saveGameID); } void Game::LoadSavegame(const string savegameIDArg) { @@ -386,16 +391,12 @@ void Game::LoadSavegame(const string savegameIDArg) { // _player->SetHealthLiteral(playerHealth); - - // - Parse the map file. - dataElem = dataElem->NextSiblingElement("map"); - assert(dataElem != NULL); - _map.Load(dataElem->GetText()); - // } // // + + _map.Load(_saveGameID); } void Game::SaveSavegame(void) { @@ -448,20 +449,17 @@ void Game::SaveSavegame(void) { TiXmlText* healthText = new TiXmlText(healthString.str().c_str()); healthElement->LinkEndChild(healthText); - TiXmlElement* mapElement = new TiXmlElement("map"); - TiXmlText* mapText = new TiXmlText("map"); //TODO: replace with actual map name. - mapElement->LinkEndChild(mapText); - saveElement->LinkEndChild(nameElement); //saveElement->LinkEndChild(xElement); //saveElement->LinkEndChild(yElement); saveElement->LinkEndChild(levelElement); saveElement->LinkEndChild(expElement); saveElement->LinkEndChild(healthElement); - saveElement->LinkEndChild(mapElement); doc.LinkEndChild(decl); doc.LinkEndChild(saveElement); doc.SaveFile(saveFilename.c_str()); + + _map.Save(_saveGameID); } diff --git a/src/libUnuk/Engine/WorldManager.cpp b/src/libUnuk/Engine/WorldManager.cpp index d4281a2..b4f7265 100644 --- a/src/libUnuk/Engine/WorldManager.cpp +++ b/src/libUnuk/Engine/WorldManager.cpp @@ -172,7 +172,7 @@ void WorldManager::OnPlayerAttack(Player* player) { delete npc; if(_npcs.empty()) { - _level->Load("map"); + _level->New(); int spawnX; int spawnY; diff --git a/src/libUnuk/LevelGen/LevelGen.cpp b/src/libUnuk/LevelGen/LevelGen.cpp index ad0a737..efce5f6 100644 --- a/src/libUnuk/LevelGen/LevelGen.cpp +++ b/src/libUnuk/LevelGen/LevelGen.cpp @@ -12,6 +12,36 @@ LevelGen::~LevelGen(void) { } +void LevelGen::New(void) { + Unload(); + + _world = WorldManager(this); + + levelWidth = TILE_ARRAY_SIZE; + levelHeight = TILE_ARRAY_SIZE; + + for(x = 0; x < levelWidth; x++) { + for(y = 0; y < levelHeight; y++) { + _tile[x][y].SetTileTextureName("grass"); + + stringstream tilePath; + tilePath << "../Data/Media/Images/Tiles/" << _tile[x][y].GetTileTextureName() << ".png"; + + _tile[x][y].SetTileTexture(_tileTextures.Add(tilePath.str())); + _tile[x][y].SetTileSolidity(false); + _tile[x][y].SetTileXY(x * TILE_WIDTH, y * TILE_HEIGHT); + _tile[x][y].SetEntitySolidity(false); + _tile[x][y].SetZLevel(100); + } + } + + levelWidth *= TILE_WIDTH; + levelHeight *= TILE_HEIGHT; + + // procedural generation + DoMagic(); +} + void LevelGen::Load(const string& filename) { Unload(); _currentMap = filename; @@ -55,6 +85,7 @@ void LevelGen::Load(const string& filename) { stringstream tilePath; tilePath << "../Data/Media/Images/Tiles/" << dataElem->GetText() << ".png"; _tile[x][y].SetTileTexture(_tileTextures.Add(tilePath.str())); + _tile[x][y].SetTileTextureName(dataElem->GetText()); // - Finished applying the texture, move to the next sibling. // - Check to see if the tile is solid or not. @@ -76,6 +107,7 @@ void LevelGen::Load(const string& filename) { stringstream entityPath; entityPath << "../Data/Media/Images/Entities/" << entityName << ".png"; _tile[x][y].SetEntityTexture(_entityTextures.AddAlpha(entityPath.str())); + _tile[x][y].SetEntityTextureName(entityName); _tile[x][y].SetEntityXY(_tile[x][y].GetTileX() + TILE_WIDTH / 2 - _tile[x][y].GetEntityWidth() / 2, _tile[x][y].GetTileY() + TILE_HEIGHT / 2 - _tile[x][y].GetEntityHeight() / 2); @@ -110,9 +142,68 @@ void LevelGen::Load(const string& filename) { // levelWidth = x * TILE_WIDTH; levelHeight = y * TILE_HEIGHT; + + _world = WorldManager(this); + + GenerateEnemies(); +} - // procedural generation - DoMagic(); +void LevelGen::Save(const string& filename){ + TiXmlDocument doc; + + TiXmlElement* rootElem = new TiXmlElement("map"); + + int levelWidthTiles = levelWidth / TILE_WIDTH; + int levelHeightTiles = levelHeight / TILE_HEIGHT; + + for(y = 0; y < levelHeightTiles; y++) { + TiXmlElement* lineElem = new TiXmlElement("line"); + + for(x = 0; x < levelWidthTiles; x++) { + TiXmlElement* tileElem = new TiXmlElement("tile"); + + TiXmlElement* tileTextureElem = new TiXmlElement("tileTexture"); + TiXmlText* tileTextureText = new TiXmlText(_tile[x][y].GetTileTextureName()); + tileTextureElem->LinkEndChild(tileTextureText); + + TiXmlElement* solidTileElem = new TiXmlElement("solidTile"); + TiXmlText* solidTileText = new TiXmlText(_tile[x][y].GetTileSolidity() ? "true" : "false"); + solidTileElem->LinkEndChild(solidTileText); + + string entityTextureName = _tile[x][y].GetEntityTextureName(); + + TiXmlElement* entityTextureElem = new TiXmlElement("entityTexture"); + TiXmlText* entityTextureText = new TiXmlText(entityTextureName.empty() ? "null" : entityTextureName); + entityTextureElem->LinkEndChild(entityTextureText); + + TiXmlElement* solidEntityElem = new TiXmlElement("solidEntity"); + TiXmlText* solidEntityText = new TiXmlText(_tile[x][y].GetEntitySolitity() ? "true" : "false"); + solidEntityElem->LinkEndChild(solidEntityText); + + stringstream zLevelStr; + zLevelStr << _tile[x][y].GetZLevel(); + + TiXmlElement* zLevelElem = new TiXmlElement("zLevel"); + TiXmlText* zLevelText = new TiXmlText(zLevelStr.str()); + zLevelElem->LinkEndChild(zLevelText); + + tileElem->LinkEndChild(tileTextureElem); + tileElem->LinkEndChild(solidTileElem); + tileElem->LinkEndChild(entityTextureElem); + tileElem->LinkEndChild(solidEntityElem); + tileElem->LinkEndChild(zLevelElem); + + lineElem->LinkEndChild(tileElem); + } + + rootElem->LinkEndChild(lineElem); + } + + _currentMap = filename; + string fullMapPath = "../Data/Media/Maps/" + filename; + + doc.LinkEndChild(rootElem); + doc.SaveFile(fullMapPath); } void LevelGen::Update(void) { @@ -170,11 +261,14 @@ void LevelGen::Unload(void) { } void LevelGen::DoMagic(void) { - GenerateEntities("tree", 25); - GenerateEntities("hedge", 15); - GenerateEntities("barrel", 40); - MakeWalkingPaths(); - GenerateEnemies(); + GenerateEntities("tree", 25); + GenerateEntities("hedge", 15); + GenerateEntities("barrel", 40); + GenerateEntities("closedChest", 100); + GenerateEntities("closedChestMetal", 150); + GenerateEntities("closedChestMetal2", 250); + MakeWalkingPaths(); + GenerateEnemies(); } void LevelGen::GenerateEntities(const string& name, int frequency) { @@ -185,7 +279,8 @@ void LevelGen::GenerateEntities(const string& name, int frequency) { for(int y = 0; y < BOUNDARIES_Y; y++) { nextEntityGen--; if(!_tile[x][y].GetTileSolidity() && !_tile[x][y].GetEntitySolitity() && nextEntityGen <= 0) { - _tile[x][y].SetEntityTexture(_entityTextures.AddAlpha(filename)); + _tile[x][y].SetEntityTextureName(name); + _tile[x][y].SetEntityTexture(_entityTextures.AddAlpha(filename)); _tile[x][y].SetEntityXY(_tile[x][y].GetTileX() + TILE_WIDTH / 2 - _tile[x][y].GetEntityWidth() / 2, _tile[x][y].GetTileY() + TILE_HEIGHT / 2 - _tile[x][y].GetEntityHeight() / 2); diff --git a/src/libUnuk/LevelGen/LevelGen.h b/src/libUnuk/LevelGen/LevelGen.h index f414d0a..f083a4e 100644 --- a/src/libUnuk/LevelGen/LevelGen.h +++ b/src/libUnuk/LevelGen/LevelGen.h @@ -24,7 +24,9 @@ public: LevelGen(void); ~LevelGen(void); + void New(void); void Load(const string& filename); + void Save(const string& filename); void Update(void); void Render(void); diff --git a/src/libUnuk/LevelGen/MapElement.cpp b/src/libUnuk/LevelGen/MapElement.cpp index 102327a..d2b5572 100644 --- a/src/libUnuk/LevelGen/MapElement.cpp +++ b/src/libUnuk/LevelGen/MapElement.cpp @@ -37,3 +37,6 @@ int MapElement::GetX(void) { return x; } int MapElement::GetY(void) { return y; } int MapElement::GetWidth(void) { return _texture->w; } int MapElement::GetHeight(void) { return _texture->h; } + +void MapElement::SetTextureName(string name) { _textureName = name; } +string MapElement::GetTextureName(void) { return _textureName; } diff --git a/src/libUnuk/LevelGen/MapElement.h b/src/libUnuk/LevelGen/MapElement.h index 4d681cf..2805629 100644 --- a/src/libUnuk/LevelGen/MapElement.h +++ b/src/libUnuk/LevelGen/MapElement.h @@ -25,9 +25,13 @@ public: int GetY(void); int GetWidth(void); int GetHeight(void); + + void SetTextureName(string path); + string GetTextureName(void); protected: SDL_Surface* _texture; + string _textureName; bool _solid; diff --git a/src/libUnuk/LevelGen/MapTile.h b/src/libUnuk/LevelGen/MapTile.h index 70bf6a6..f7e2e55 100644 --- a/src/libUnuk/LevelGen/MapTile.h +++ b/src/libUnuk/LevelGen/MapTile.h @@ -18,6 +18,8 @@ public: // Tile Mutators. SDL_Surface* SetTileTexture(SDL_Surface* arg) { _tile.SetTexture(arg); return NULL; } + void SetTileTextureName(string path) { _tile.SetTextureName(path); } + string GetTileTextureName(void) { return _tile.GetTextureName(); } void SetTileSolidity(bool arg) { _tile.SetSolidity(arg); } bool GetTileSolidity(void) { return _tile.GetSolidity(); } // Well, it kinda helps if I lay the @@ -26,9 +28,11 @@ public: void SetTileXY(int xArg, int yArg) { _tile.SetXY(xArg, yArg); } int GetTileX(void) { return _tile.GetX(); } int GetTileY(void) { return _tile.GetY(); } + // Entity Mutators. void SetEntityTexture(SDL_Surface* arg) { _entity.SetTexture(arg); } + void SetEntityTextureName(string path) { _entity.SetTextureName(path); } void SetEntityXY(int xArg, int yArg) { _entity.SetXY(xArg, yArg); } void SetEntitySolidity(bool arg) { _entity.SetSolidity(arg); } bool GetEntitySolitity(void) { return _entity.GetSolidity(); } @@ -38,6 +42,7 @@ public: int GetEntityY(void) { return _entity.GetY(); } int GetEntityWidth(void) { return _entity.GetWidth(); } int GetEntityHeight(void) { return _entity.GetHeight(); } + string GetEntityTextureName(void) { return _entity.GetTextureName(); } // ZLevel Mutators. void SetZLevel(int arg) { _zLevel = arg; }