void map_flare_add(int index, int player, unsigned int duration, unsigned int radius) { int w=map->layer[map->layers-2].tilemap->w; int h=map->layer[map->layers-2].tilemap->h; int tile_w=map->layer[map->layers-2].tile_w; int tile_h=map->layer[map->layers-2].tile_h; int x=index%w; int y=index/w; struct MAP_FLARE_LIST **l; for(l=&map_flares; *l; l=&((*l)->next)); *l=malloc(sizeof(struct MAP_FLARE_LIST)); (*l)->circle[0]=d_render_circle_new(16, 1); d_render_circle_move((*l)->circle[0], x*tile_w+tile_w/2, y*tile_h+tile_h/2, radius/4); (*l)->circle[1]=d_render_circle_new(16, 1); d_render_circle_move((*l)->circle[1], x*tile_w+tile_w/2, y*tile_h+tile_h/2, radius/2); (*l)->circle[2]=d_render_circle_new(24, 1); d_render_circle_move((*l)->circle[2], x*tile_w+tile_w/2, y*tile_h+tile_h/2, 3*radius/4); (*l)->circle[3]=d_render_circle_new(24, 1); d_render_circle_move((*l)->circle[3], x*tile_w+tile_w/2, y*tile_h+tile_h/2, radius); (*l)->minimap_circle=d_render_circle_new(6, 1); d_render_circle_move((*l)->minimap_circle, game_sidebar_minimap->x+(x*(game_sidebar_minimap->w))/(w), game_sidebar_minimap->y+(y*(game_sidebar_minimap->h))/(h), 3); (*l)->index=0; (*l)->player=player; (*l)->duration=duration; (*l)->created=d_time_get(); (*l)->next=NULL; }
void map_select_building(int index) { map_selected.index=index; int selected_building=(map->layer[map->layers-2].tilemap->data[index]&0xFFFF); map_selected.owner=selected_building/tilesx-1; map_selected.building=selected_building%tilesx+1; if(map_selected.owner<0||map_selected.owner>players-1) { map_selected.building=0; map_selected.index=-1; map_selected.owner=-1; } if(map_selected.building&&building[map_selected.building].range) { map_selected.circle=d_render_circle_new(32, 1); int w=map->layer[map->layers-2].tilemap->w; //int h=map->layer[map->layers-2].tilemap->h; int tile_w=map->layer[map->layers-2].tile_w; int tile_h=map->layer[map->layers-2].tile_h; int x=index%w; int y=index/w; d_render_circle_move(map_selected.circle, x*tile_w+tile_w/2, y*tile_h+tile_h/2, building[map_selected.building].range*tile_w); } else map_selected.circle=d_render_circle_free(map_selected.circle); game_update_building_status(); }
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; }