const std::vector<Lines<float> > Algorithms::twoDToIsoVector(const std::vector<Lines<float> > linesNormalized){ std::vector<Lines<float> > linesNormalizedIso; for(std::vector<Lines<float> >::const_iterator it = linesNormalized.begin(); it != linesNormalized.end(); ++it) { Lines<float> lineNormalizedIso = twoDToIso(*it); linesNormalizedIso.push_back(lineNormalizedIso); } return linesNormalizedIso; }
void drawTileFromGridPoint(SDL_Renderer* ren, Point *p, SDL_Rect *clip) { p->x *= GRID_TILE_SIZE; p->y *= GRID_TILE_SIZE; //printf("(%d,%d) -> ", p.x, p.y); twoDToIso(p); //printf("(%d,%d)\n", p.x, p.y); p->x += screen_x; p->y += screen_y; renderTextureClip(sheet, ren, (p->x - ((clip->w)>>1)), (p->y - clip->h), clip); }
void draw_city(SDL_Renderer* ren) { Point p; int x,y; SDL_Rect *clip; for(x=1; x<MAP_SIZE_X; x++) { bool drew_in_this_x = false; for(y=1;y<MAP_SIZE_Y; y++) { p.x = x*GRID_TILE_SIZE; p.y = y*GRID_TILE_SIZE; twoDToIso(&p); p.x += screen_x; p.y += screen_y; clip = getTileClip(map_value[x][y]); if(p.x < -clip->w) { break; } else if( p.y > (window_size_y + clip->h) ) { break; } drew_in_this_x = true; drawTile(ren, &p, clip); draw_animation_tile(ren, x, y); } if(!drew_in_this_x && p.y > (window_size_y + clip->h)) { break; } } p.x = down_point.x*GRID_TILE_SIZE; p.y = down_point.y*GRID_TILE_SIZE; //printf("(%d,%d) -> ", p.x, p.y); twoDToIso(&p); //printf("(%d,%d)\n", p.x, p.y); p.x += screen_x; p.y += screen_y; drawTile(ren, &p, getTileClip(TILE_HIGHLIGHT_BLUE)); p.x = up_point.x*GRID_TILE_SIZE; p.y = up_point.y*GRID_TILE_SIZE; //printf("(%d,%d) -> ", p.x, p.y); twoDToIso(&p); //printf("(%d,%d)\n", p.x, p.y); p.x += screen_x; p.y += screen_y; drawTile(ren, &p, getTileClip(TILE_HIGHLIGHT_BLUE)); if(ready_to_place) { Point p2; switch(getMode()) { case MODE_BUILD_ROAD: p = plan_down; p2 = plan_down; draw_highlight(ren, &plan_down); plan_down = p2; while(p.x != plan_up.x) { if(p.x < plan_up.x) { p.x += 1; } else { p.x -=1; } p2 = p; draw_highlight(ren, &p); p = p2; } while(p.y != plan_up.y) { if(p.y < plan_up.y) { p.y += 1; } else { p.y -=1; } p2 = p; draw_highlight(ren, &p); p = p2; } break; case MODE_BUILD_RESIDENTIAL_1: case MODE_BUILD_RESIDENTIAL_2: case MODE_BUILD_RESIDENTIAL_3: case MODE_BUILD_DESTROY: case MODE_BUILD_LANDFILL: case MODE_BUILD_RETAIL: case MODE_BUILD_POWER_SOLAR: case MODE_BUILD_POWER_WIND: ; //p = plan_down; //p2 = plan_down; //drawTileFromGridPoint(ren, &plan_down, getTileClip(TILE_HIGHLIGHT_GREEN)); //plan_down = p2; int x, y; for(x = MIN(plan_down.x, plan_up.x); x<=MAX(plan_down.x, plan_up.x); x++) { for(y = MIN(plan_down.y, plan_up.y); y<=MAX(plan_down.y, plan_up.y); y++) { p.x = x; p.y = y; draw_highlight(ren, &p); } } break; case MODE_BUILD_HOSPITAL: case MODE_BUILD_POLICE: ; p.x = plan_up.x; p.y = plan_up.y; draw_highlight(ren, &p); break; case MODE_BUILD_POWER_GAS: case MODE_BUILD_POWER_NUCLEAR: case MODE_BUILD_SCHOOL: case MODE_BUILD_PARK: ; p.x = plan_up.x; p.y = plan_up.y; draw_highlight(ren, &p); p.x = plan_up.x+1; p.y = plan_up.y; draw_highlight(ren, &p); p.x = plan_up.x; p.y = plan_up.y+1; draw_highlight(ren, &p); p.x = plan_up.x+1; p.y = plan_up.y+1; draw_highlight(ren, &p); break; case MODE_BUILD_STADIUM: ; int x1, y1; for(x1 = 0; x1<4; x1++) { for(y1 = 0; y1<4; y1++) { p.x = plan_up.x+x1; p.y = plan_up.y+y1; draw_highlight(ren, &p); } } break; default: break; } } draw_animation_overlay(ren); }