Ejemplo n.º 1
0
static Route*
mouse2route(Mouse m)
{
	Point p, q;
	Route *r;

	p = subpt(m.xy, screen->r.min);
	p.x /= BoardX;
	p.y /= BoardY;

	q = subpt(p, level.glenda);
	// fprint(2, "x=%d y=%d\n", q.x, q.y);

	if (q.x == 0 && q.y ==  0)
		return nil;

	if (q.x == 0 || q.y ==  0) {
		if (q.x < 0)
			r = extend(nil, Left, -q.x, Pt(level.glenda.x, p.y));
		else if (q.x > 0)
			r = extend(nil, Right, q.x, Pt(level.glenda.x, p.y));
		else if (q.y < 0)
			r = extend(nil, Up, -q.y, level.glenda);
		else if (q.y > 0)
			r = extend(nil, Down, q.y, level.glenda);
		else
			r = nil;

		if (r != nil && isvalid(level.glenda, r, validpush))
			return r;
		freeroute(r);
	}

	return findroute(level.glenda, p);
}
Ejemplo n.º 2
0
void
stopanimation(Animation *a)
{
	if (a == nil)
		return;

	if (a->route != nil)
		freeroute(a->route);
	memset(a, 0, sizeof(Animation));
}