implemented A*, overhauled tilemaps (again)