Beispiel #1
0
void loadmap(Zone& area, Map& level, Player& player1, Surface& images)
{ 
    int mapnum, floornum;
    bool stairs;
    int playx,playy;
    //load world and set initial values the first time through
    if (player1.get_map() == -1) {
        
        srand(time(NULL));
        mapnum = area.get_id();          
        floornum = 0;  
        area.init();
        level = area.zones[mapnum].floors[floornum]; 
        playx = level.get_begin_x() * TILEW;
        playy = level.get_begin_y() * TILEH;      
        player1.put_stairs(1);          
    }    
    //load a new map if the player has changed maps midplay
    if (player1.get_map() >= 0) {
        mapnum = player1.get_destmap();
        floornum = player1.get_destfloor();
        if (floornum < 0) {
            floornum = 0;
            player1.put_stairs(1);   
            mapnum = area.get_id(); 
            playx = area.zones[player1.get_map()].get_x() * TILEW;
            playy = (area.zones[player1.get_map()].get_y() + 1) * TILEH;
        }        
        area.zones[player1.get_map()].floors[player1.get_floor()] = level; 
    }
    
    level = area.zones[mapnum].floors[floornum]; 
    level.set_rendered(0); //area is not yet rendered for graphics
    if (area.zones[mapnum].floors[floornum].get_type() == TOWN){
        playx = MAPW / 2 * TILEW;
        playy = (MAPH - 2) * TILEH;
    }
    if (area.zones[mapnum].floors[floornum].get_type() == DUNGEON){    
        stairs = player1.get_stairs();
        if (stairs == 0) {
            playx = level.get_end_x() * TILEW;
            playy = level.get_end_y() * TILEH;
        }
        if (stairs == 1) {
            playx = level.get_begin_x() * TILEW;
            playy = level.get_begin_y() * TILEH;
        }    
    }
    player1.put_coor(playx, playy);    
    player1.put_map(mapnum);
    player1.put_floor(floornum);
    
    
    //load appropriate spritesheet for this kind of level
    switch(level.get_type())
    {
        case DUNGEON:
            images.tilesheet = load_bitmaps("data/images/dungeon.jpg");
            break;
        case TOWN:
            images.tilesheet = load_bitmaps("data/images/town.jpg");
            break;
        case FOREST:
            images.tilesheet = load_bitmaps("data/images/forest.jpg");
            break;
    }    
};