void map_flare_draw() { struct MAP_FLARE_LIST **ll, *l; int j=0; for(ll=&map_flares; *ll; ll=&((*ll)->next), j++) { l=*ll; if(d_time_get()>l->created+l->duration) { *ll=l->next; int i; for(i=0; i<4; i++) d_render_circle_free(l->circle[i]); d_render_circle_free(l->minimap_circle); free(l); if(*ll) continue; else break; } d_render_tint(player_color[l->player].r, player_color[l->player].g, player_color[l->player].b, 255); d_render_circle_draw(l->circle[l->index/10]); l->index++; if(l->index>=40) l->index=0; } }
void map_minimap_render(UI_WIDGET *widget) { //override for imagebox render, to render viewport border on minimap ui_imageview_render(widget); unsigned char r, g, b, a; d_render_tint_get(&r, &g, &b, &a); d_render_tint(255, 255, 255, 255); d_render_line_draw(minimap_viewport, 4); struct MAP_FLARE_LIST *l; for(l=map_flares; l; l=l->next) if(l->index>=20) { d_render_tint(player_color[l->player].r, player_color[l->player].g, player_color[l->player].b, 255); d_render_circle_draw(l->minimap_circle); } d_render_tint(r, g, b, a); }
int main(int argc, char **argv) { int i, j; struct GRAPH *g, *tree=NULL; struct VERTEX *v; struct POINT p; DARNIT_KEYS keys; srand(time(NULL)); d_init("Graphs", "uppg8", NULL); for(i=0; i<256; i++) { circle[i]=d_render_circle_new(32, 1); line[i]=d_render_line_new(1, 1); } for(j=0; j<4; j++) for(i=0; i<7; i++) { p.x=i*100+50;//(rand()%80)*10; p.y=j*100+50;//(rand()%48)*10; v=graph_add_vertex(&graph, p); for(g=graph; g; g=g->next) if(!(rand()%6)) graph_add_edge(v, g->vertex, rand()%100, DIRECTION_DOUBLE); } tree=graph_prim(graph); draw_graph(graph); for(g=graph;;) { keys=d_keys_get(); if(keys.start) { g=g==graph?tree:graph; draw_graph(g); } d_keys_set(keys); d_render_begin(); d_render_tint(0xFF, 0xFF, 0xFF, 0xFF); for(i=0; i<vertices; i++) d_render_circle_draw(circle[i]); for(i=0; i<edges; i++) { d_render_tint(length[i], 0x7F, 0x0, 0xFF); d_render_line_draw(line[i], 1); } d_render_end(); d_loop(); } d_quit(); return 0; }
void map_draw(int draw_powergrid) { int i; for(i=0; i<map->layers-2; i++) d_tilemap_draw(map->layer[i].tilemap); if(config.alpha) d_render_blend_enable(); d_tilemap_draw(map->layer[map->layers-2].tilemap); d_render_blend_disable(); //d_tilemap_draw(map->layer[map->layers-1].tilemap); d_render_offset(map->cam_x, map->cam_y); if(config.grid) { d_render_tint(18, 18, 18, 255); for(i=0; i<map_grid_chunks; i++) if(map_grid_chunk[i].lines&&map_grid_chunk[i].x+map_grid_chunk[i].w>map->cam_x&&map_grid_chunk[i].x<map->cam_x+platform.screen_w-sidebar_width&&map_grid_chunk[i].y+map_grid_chunk[i].h>map->cam_y&&map_grid_chunk[i].y<map->cam_y+platform.screen_h) d_render_line_draw(map_grid_chunk[i].lines, map_grid_chunk[i].size); d_render_tint(255, 255, 255, 255); } d_tilemap_draw(map->layer[map->layers-1].tilemap); if(powergrid&&(draw_powergrid||config.powergrid)) d_render_line_draw(powergrid, powergrid_lines); map_flare_draw(); if(map_selected.index>-1&&map_selected.building) { int x=map->layer[map->layers-2].tile_w*(map_selected.index%map->layer[map->layers-2].tilemap->w); int y=map->layer[map->layers-2].tile_h*(map_selected.index/map->layer[map->layers-2].tilemap->w); d_render_tint(player_color[map_selected.owner].r, player_color[map_selected.owner].g, player_color[map_selected.owner].b, 255); if(map_selected.circle) d_render_circle_draw(map_selected.circle); d_render_offset(map->cam_x-x, map->cam_y-y); d_render_line_draw(map_selected.border, 4); } d_render_tint(255, 255, 255, 255); d_render_offset(0, 0); }