Yay, I've got some more stuff working!
- Paths no longer allow diagonal traffic between two rooms - well, unless you set it to, but that's another story.
- I've created some new rooms to use in the test, to demonstrate that yes, it allows arbitrary rooms. In fact, it allows user-specified arbitrary rooms, assuming they follow a certain interface I have yet to finalise.
- Rooms can limit the points at which paths can enter them. Notice that those cross rooms only ever have paths connecting to the ends of the cross?
There are still some issues remaining, which is why this isn't a release:
- It's still damn slow. This is unlikely to be completely fixed - I'm experimenting with Theodis' PriorityQueue library to speed up the pathfinding, but we'll see how much of an effect it has on the overall product. It'll also be set to run in the background, but it is still NOT
something that should be running when you've got lots of users running around expecting not to be massively lagged. Use of this library will likely be limited to single-player games that can afford some waiting time, and games that implement sophisticated systems to generate and cache maps when not much is happening.
- There's not really an interface yet. The object used to generate maps can't yet flag error conditions, users can't yet set all the parameters without having intimate knowledge of the implementation, I haven't written a spec for the rooms that get placed, and no information about the generated map is available. I intend to fix all of those.
- There aren't any helpfiles. I'm doing it /right/ this time, so this will be fixed before release.
For the adventurous, curious, and suicidal, here i the code in its current state: