예제 #1
0
unordered_set<pos_t> scanner::getCircle(const pos_t &center, unsigned int radius) {
	unordered_set<pos_t> result;
	if(r!=radius)
		update_circle(radius);
	for(auto i:circle)
		result.insert(center+i);
	return move(result);
}
예제 #2
0
static gint
timeout_callback (gpointer data)
{
	double dt;
	int i;
	dt = (double)UPDATE_FREQ / 1000.0;
	for (i = 0; i < NUM_CIRCLES; ++i) {
		update_circle(circles + i, dt);
	}
	GtkWidget *darea = (GtkWidget*)data;
	gtk_widget_queue_draw (darea);
	return TRUE;
}
예제 #3
0
list<pos_t> scanner::scanlistThroughWalls(pos_t center, const pixelshade_map &scanmap, unsigned int radius)
{
	list<pos_t> cups;
	if(r!=radius)
			update_circle(radius);
	for(auto i:circle) {
		try {
			if( WSPACE_IS_CUP(scanmap.const_coordVal(center+i))) {
				cups.push_back(center+i);
			}
		} catch (const std::out_of_range& oor) {(void)oor;}
	}
	return move(cups);
}
예제 #4
0
size_t scanner::scan(pos_t center, const pixelshade_map &scanmap, unsigned int radius)
{
		size_t number_of_cups = 0;
		if(r!=radius)
				update_circle(radius);
		for(auto i:circle) {
				try {
						if( WSPACE_IS_CUP(scanmap.const_coordVal(center+i))) {
								++number_of_cups;
						}
				} catch (const std::out_of_range& oor) {(void)oor;}
		}
		return number_of_cups;
}
예제 #5
0
list<pos_t> scanner::scanlistAroundWalls(pos_t center, const pixelshade_map &scanmap, unsigned int radius)
{
	list<pos_t> cups;
	if(r!=radius)
			update_circle(radius);

	list<pos_t> reachables = scanmap.getReachables(getCircle(center),center);

	for(auto i:reachables) {
		try {
			if( WSPACE_IS_CUP(scanmap.const_coordVal(i))) {
				cups.push_back(i);
			}
		} catch (const std::out_of_range& oor) {(void)oor;}
	}
	return move(cups);
}
예제 #6
0
scanner::scanner(unsigned int radius)
{
	update_circle(radius);
}