Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Isometric tile map structure


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 MustSeeMelons   Members   -  Reputation: 132

Like
1Likes
Like

Posted 27 September 2013 - 11:39 AM

HI!

 

Me and a few of my friends are making an isometric tile based RPG, and I have a question regarding the structure of the tile map - how to save it?

For now I am using a simple 2D vector of my Tile class, but I have a feeling that's not such a good idea, or is it?

 

I'm building a class so that I can store game levels and everything associated with the level (characters, items, tile textures etc.) and I'm having trouble with the scope of vectors push_back();

 

The class itself has the variable gameLevel, which is the 2D vector, containing the tiles. The class has a function, to read from a file all the necessary information regarding the level(which tile textures to load, how big the map is, and the tiles.. {1,1,1} {2,1,2}). Textures are loaded to a map, so that the Tiles can have their pointers to the texture (Is it OK?), then come the tile map, the code is as follows:

 

EDIT: Found the problem, it was a silly one, std::string::find() was returning a garbage value, because I was searching for the wrong delimiter, so embarrassing.

void GameLevel::CreateLevel(std::string dataFileName){
    std::ifstream levelData;
    int lineCounter=0;
    std::string line;
    std::string delim=" ";
    levelData.open(dataFileName.c_str());

    gameLevel=std::vector<std::vector<Tile> >(levelHeight);
    //std::vector<std::vector<int> > tempLevel=std::vector<std::vector<int> >(levelHeight);
    unsigned int row=0;

    while(!levelData.eof()){
        std::getline(levelData, line);
        if(lineCounter==0){
            int pos=line.find(delim);
            std::string temp=line.substr(pos+1, pos+1);
            TILE_WIDTH=atoi(temp.c_str());
        }
        else if(lineCounter==1){
            int pos=line.find(delim);
            std::string temp=line.substr(pos+1, pos+1);
            TILE_HEIGHT=atoi(temp.c_str());
        }
        else if(lineCounter==2){
            int pos=line.find(delim);
            std::string temp=line.substr(pos+1, pos+1);
            levelWidth=atoi(temp.c_str());
        }
        else if(lineCounter==3){
            int pos=line.find(delim);
            std::string temp=line.substr(pos+1, pos+1);
            levelHeight=atoi(temp.c_str());
        }
        else if(lineCounter>4){
            if(line.find(",")!=std::string::npos){
            int delimPos=0;
            std::string token;
            while((delimPos=line.find(delim))!=std::string::npos){
                token=line.substr(0,delimPos);
                tempLevel[row].push_back(atoi(token.c_str()));             NOT BEING SAVED!
                //tempLevel.at(row).push_back(2);
                line.erase(0,delimPos+delim.length());
            }
            row++;
            }
            else{
                int pos=line.find(".");
                std::string key=line.substr(0,pos);
                tileTextures.insert(std::pair<std::string, GameTexture>(key, GameTexture(*render, line)));
            }

        }
        lineCounter++;
    }

    std::cout<<"Tile count: "<<tileTextures.size()<<" "<<"Temp array size: "<<tempLevel.size()<<" "<<"Temp array first row size: "<<tempLevel.at(0).size()<<"\n";

    levelData.close();
}

tempLevel is just an 2D int vector to save the corresponding int's to textures. Any help would be very nice smile.png Any other topics or good reads would be appreciated too.

 

P.S. The screen of the current state - the ability to walk with a dude around.

 

shot.png


Edited by MustSeeMelons, 29 September 2013 - 04:21 AM.


Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS