void j1Map::Draw() { if(map_loaded == false) return; p2List_item<MapLayer*>* item = data.layers.start; for(; item != NULL; item = item->next) { MapLayer* layer = item->data; if(layer->properties.Get("Nodraw") != 0) continue; for(int y = 0; y < data.height; ++y) { for(int x = 0; x < data.width; ++x) { int tile_id = layer->Get(x, y); if(tile_id > 0) { TileSet* tileset = GetTilesetFromTileId(tile_id); SDL_Rect r = tileset->GetTileRect(tile_id); iPoint pos = MapToWorld(x, y); App->render->Blit(tileset->texture, pos.x, pos.y, &r); } } } } }
void j1Map::Draw() { if(map_loaded == false) return; //STL CHANGE list<MapLayer*>::iterator item = data.layers.begin(); for(; item != data.layers.end(); ++item) { MapLayer* layer = *item; if(layer->properties.Get("Nodraw") != 0) continue; for(int y = 0; y < data.height; ++y) { for(int x = 0; x < data.width; ++x) { int tile_id = layer->Get(x, y); if(tile_id > 0) { TileSet* tileset = GetTilesetFromTileId(tile_id); SDL_Rect r = tileset->GetTileRect(tile_id); iPoint pos = MapToWorld(x, y); App->render->Blit(tileset->texture, pos.x, pos.y, &r); } } } } }
void j1Map::Draw() { if(map_loaded == false) return; //STL CHANGE //NOTE: well //Camera Culling //---------------------- SDL_Rect cam = App->render->camera; //---------------------- list<MapLayer*>::iterator item = data.layers.begin(); for(; item != data.layers.end(); ++item) { MapLayer* layer = *item; //NOTE: when drawing navigation map, framerate drops to the half if (!App->debug) if(layer->properties.Get("Nodraw") != 0) continue; for(int y = 0; y < data.height; ++y) { for(int x = 0; x < data.width; ++x) { int tile_id = layer->Get(x, y); if(tile_id > 0) { TileSet* tileset = GetTilesetFromTileId(tile_id); SDL_Rect r = tileset->GetTileRect(tile_id); iPoint pos = MapToWorld(x, y); //NOTE: Maybe this has to be implemented on Render.cpp //NOTE: changing the offset of the tiles because Ric cheated with the original, think about make it general for any map //NOTE: because of test sake //---------------------- if (layer->name == "Background") App->render->Blit(tileset->texture, pos.x - data.tile_width / 2 + tileset->offset_x, pos.y, &r); else if (layer->name == "Navigation") App->render->Blit(tileset->texture, pos.x - data.tile_width / 2 , pos.y, &r); //---------------------- } } } } }
bool j1Map::CreateWalkabilityMap(int& width, int& height, uchar** buffer) const { //STL CHANGE bool ret = false; list<MapLayer*>::const_iterator item; item = data.layers.begin(); for(item = data.layers.begin(); item != data.layers.end(); item++) { MapLayer* layer = *item; if(layer->properties.Get("Navigation", 0) == 0) continue; uchar* map = new uchar[layer->width*layer->height]; memset(map, 1, layer->width*layer->height); for(int y = 0; y < data.height; ++y) { for(int x = 0; x < data.width; ++x) { int i = (y*layer->width) + x; int tile_id = layer->Get(x, y); TileSet* tileset = (tile_id > 0) ? GetTilesetFromTileId(tile_id) : NULL; if(tileset != NULL) { map[i] = (tile_id - tileset->firstgid) > 0 ? 0 : 1; /*TileType* ts = tileset->GetTileType(tile_id); if(ts != NULL) { map[i] = ts->properties.Get("walkable", 1); }*/ } } } *buffer = map; width = data.width; height = data.height; ret = true; break; } return ret; }
void j1Map::Draw() { if(map_loaded == false) return; // TODO 4: Make sure we draw all the layers and not just the first one p2List_item<MapLayer*>* layer = data.layers.start; while (layer) { //This makes appear the Navigation Layer if (layer->data->name == "Meta" && App->input->GetKey(SDL_SCANCODE_I) == KEY_DOWN) { if (layer->data->properties.GetPropertyValue("Draw") == 0) layer->data->properties.SetPropertyValue("Draw", 1); else layer->data->properties.SetPropertyValue("Draw", 0); } //------------------------------------ if (layer->data->properties.GetPropertyValue("Draw")) { for (int y = 0; y < data.height; ++y) { for (int x = 0; x < data.width; ++x) { int tile_id = layer->data->Get(x, y); if (tile_id > 0) { TileSet* tileset = GetTilesetFromTileId(tile_id); if (tileset != NULL) { SDL_Rect r = tileset->GetTileRect(tile_id); iPoint pos = MapToWorld(x, y); App->render->Blit(tileset->texture, pos.x + tileset->offset_x, pos.y + tileset->offset_y, &r); } } } } } layer = layer->next; } }