Incorporate new Generation Steps from the Integration Library into GoRogue
The new Integration Library contains several fun new Generation Steps. These are purely GoRogue, and don't necessarily fit the bill for an integration lib, so some (all?) of them can be moved into GoRogue. The steps are as follows:
I think that there is a case that ALL of them should be incorporated, with changes to match consistency and style. At the very least, the composite generator should be brought in.
Here's my proposal:
ParallelogramGenerationStep moves almost as-is, except that it has constructor and fields similar to existing generation steps (and uses the same tags). Test it to make sure that the pattern rotates correctly.
BackroomsGenerationStep should change so that it takes the RNG from the constructor, and add matching wallfloor/tunnel tags and such to make them "safe". I should also try and fix the bug in the primitives library documented here. Then, I should try and make the algorithm produce rooms with single-width walls.
SpiralGenerationStep is almost perfect, but should be reduced for simplicity, made safe by using appropriate tags, allow for a parameter to set the point of origin, and the numbers perhaps tweaked slightly.
BrickWorkGenerationStep is a new generation step I haven't gotten around to writing yet, but it lays out rectangles in a brick-work pattern. should accept a custom angle of rotation and implement tag components safely, but does not need an RNG
CompositeGenerationStep should be split in two:
- CompositeGenerationStep - generalized, allowing users to set which steps they like for the composite generator, allowing users to set their own angle of rotation (with no rotation as a default), minimum dimension of the rooms, the RNG to use, so on. It then sections the map into a grid, and then performs the substep in a new generator on that region. This is how the current composite step works, except more customizable.
- A new Default Algorithm should be added,
CompositedMapSteps, that returns aCompositeGenerationStepthat is properly loaded with all the steps that GoRogue has to offer, and it connects all areas and so forth.
Doing this will solve this issue in the integration library by deleting those generation steps
Can you get a PR up with these, even if it's just a draft PR that copies them as-is, so that we can keep track of it exclusively here and remove them from the integration library?
We've left the Pr for too long and it got stale. The branch new-generation-steps still has some things we can look at, so maybe we'll keep it around for now
Recommend we keep the branch, and refactor it sometime down the line to bring it in line with newer concepts.
Looking at this, most of the changes to GoRogue since the PRs creation didn't affect the steps added directly. It would require some refactoring to line up with library standardization, but the branch is probably still roughly as valid as it was when it was created, just would need to have the changes yanked out and resubmitted as a PR.