По поводу моего комментария про дублирование кода внутри switch - мне кажется, или код
```
switch (last_direction) {
	case Up: {
		mouse_direction = Direction.Left;
	}
	break;
	case Down: {
		mouse_direction = Direction.Right;
	}
	break;
	case Left: {
		mouse_direction = Direction.Down;
	}
	break;
	case Right: {
		mouse_direction = Direction.Up;
	}
	break;
```
 Повторяется трижды в этом файле?