コード例 #1
0
ファイル: map.c プロジェクト: slaeshjag/Muon
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;
}
コード例 #2
0
ファイル: map.c プロジェクト: slaeshjag/Muon
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();
}
コード例 #3
0
ファイル: uppg8.c プロジェクト: h4xxel/algdat
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;
}