// Load new map bool j1Map::Load(const char* file_name) { bool ret = true; p2SString tmp("%s%s", folder.GetString(), file_name); pugi::xml_parse_result result = map_file.load_file(tmp.GetString()); if(result == NULL) { LOG("Could not load map xml file %s. pugi error: %s", file_name, result.description()); ret = false; } // Load general info ---------------------------------------------- if(ret == true) { ret = LoadMap(); } // Load all tilesets info ---------------------------------------------- pugi::xml_node tileset; for(tileset = map_file.child("map").child("tileset"); tileset && ret; tileset = tileset.next_sibling("tileset")) { TileSet* set = new TileSet(); if(ret == true) { ret = LoadTilesetDetails(tileset, set); } if(ret == true) { ret = LoadTilesetImage(tileset, set); } data.tilesets.add(set); } // Load layer info ---------------------------------------------- pugi::xml_node layer; for(layer = map_file.child("map").child("layer"); layer && ret; layer = layer.next_sibling("layer")) { MapLayer* lay = new MapLayer(); ret = LoadLayer(layer, lay); if(ret == true) data.layers.add(lay); } if(ret == true) { LOG("Successfully parsed map XML file: %s", file_name); LOG("width: %d height: %d", data.width, data.height); LOG("tile_width: %d tile_height: %d", data.tile_width, data.tile_height); p2List_item<TileSet*>* item = data.tilesets.start; while(item != NULL) { TileSet* s = item->data; LOG("Tileset ----"); LOG("name: %s firstgid: %d", s->name.GetString(), s->firstgid); LOG("tile width: %d tile height: %d", s->tile_width, s->tile_height); LOG("spacing: %d margin: %d", s->spacing, s->margin); item = item->next; } p2List_item<MapLayer*>* item_layer = data.layers.start; while(item_layer != NULL) { MapLayer* l = item_layer->data; LOG("Layer ----"); LOG("name: %s", l->name.GetString()); LOG("tile width: %d tile height: %d", l->width, l->height); item_layer = item_layer->next; } } map_loaded = ret; return ret; }
// Load new map bool j1Map::Load(const char* file_name) { bool ret = true; p2SString tmp("%s%s", folder.GetString(), file_name); char* buf; int size = App->fs->Load(tmp.GetString(), &buf); pugi::xml_parse_result result = map_file.load_buffer(buf, size); RELEASE(buf); if(result == NULL) { LOG("Could not load map xml file %s. pugi error: %s", file_name, result.description()); ret = false; } // Load general info ---------------------------------------------- if(ret == true) { ret = LoadMap(); } // Load all tilesets info ---------------------------------------------- pugi::xml_node tileset; for(tileset = map_file.child("map").child("tileset"); tileset && ret; tileset = tileset.next_sibling("tileset")) { TileSet* set = new TileSet(); if(ret == true) { ret = LoadTilesetDetails(tileset, set); } if(ret == true) { ret = LoadTilesetImage(tileset, set); } data.tilesets.add(set); } // TODO 4: Iterate all layers and load each of them if(ret == true) { LOG("Successfully parsed map XML file: %s", file_name); LOG("width: %d height: %d", data.width, data.height); LOG("tile_width: %d tile_height: %d", data.tile_width, data.tile_height); p2List_item<TileSet*>* item = data.tilesets.start; while(item != NULL) { TileSet* s = item->data; LOG("Tileset ----"); LOG("name: %s firstgid: %d", s->name.GetString(), s->firstgid); LOG("tile width: %d tile height: %d", s->tile_width, s->tile_height); LOG("spacing: %d margin: %d", s->spacing, s->margin); item = item->next; } /* Adapt this code with the names of your variables/structs p2List_item<MapLayer*>* item_layer = data.layers.start; while(item_layer != NULL) { MapLayer* l = item_layer->data; LOG("Layer ----"); LOG("name: %s", l->name.GetString()); LOG("tile width: %d tile height: %d", l->width, l->height); item_layer = item_layer->next; } */ } map_loaded = ret; return ret; }
// Load new map bool j1Map::Load(const char* file_name) { bool ret = true; p2SString tmp("%s%s", folder.GetString(), file_name); char* buf; int size = App->fs->Load(tmp.GetString(), &buf); pugi::xml_parse_result result = map_file.load_buffer(buf, size); RELEASE(buf); if(result == NULL) { LOG("Could not load map xml file %s. pugi error: %s", file_name, result.description()); ret = false; } // Load general info ---------------------------------------------- if(ret == true) { ret = LoadMap(); } // Load all tilesets info ---------------------------------------------- pugi::xml_node tileset; for(tileset = map_file.child("map").child("tileset"); tileset && ret; tileset = tileset.next_sibling("tileset")) { TileSet* set = new TileSet(); if(ret == true) { ret = LoadTilesetDetails(tileset, set); } if(ret == true) { ret = LoadTilesetImage(tileset, set); } //STL CHANGE data.tilesets.push_back(set); } // Load layer info ---------------------------------------------- pugi::xml_node layer; for(layer = map_file.child("map").child("layer"); layer && ret; layer = layer.next_sibling("layer")) { MapLayer* lay = new MapLayer(); ret = LoadLayer(layer, lay); //STL CHANGE if(ret == true) data.layers.push_back(lay); } if(ret == true) { LOG("Successfully parsed map XML file: %s", file_name); LOG("width: %d height: %d", data.width, data.height); LOG("tile_width: %d tile_height: %d", data.tile_width, data.tile_height); //STL CHANGE list<TileSet*>::iterator item = data.tilesets.begin(); while(item != data.tilesets.end()) { TileSet* s = *item; LOG("Tileset ----"); LOG("name: %s firstgid: %d", s->name.GetString(), s->firstgid); LOG("tile width: %d tile height: %d", s->tile_width, s->tile_height); LOG("spacing: %d margin: %d", s->spacing, s->margin); item++; } //STL CHANGE list<MapLayer*>::iterator item_layer = data.layers.begin(); while(item_layer != data.layers.end()) { MapLayer* l = *item_layer; LOG("Layer ----"); LOG("name: %s", l->name.GetString()); LOG("tile width: %d tile height: %d", l->width, l->height); item_layer++; } } map_loaded = ret; return ret; }