rhelmot / CelesteRandomizer

Celeste mod to produce randomized maps from existing level data
MIT License
35 stars 14 forks source link

Support for custom config groups #92

Closed bigkahuna443 closed 4 years ago

bigkahuna443 commented 4 years ago

This PR adds support for grouping maps by custom groups with a CustomGroup tag in the config. The name of the tag will then appear in the level select instead of the usual "Map A", "Map B", etc. This was done by organizing levels with a LevelSet class that keeps track of groups and their keys as well as ungrouped keys instead of the previous flat list of area keys.

The main use case this enables are maps like the Spring 2020 Collab where a large number of maps are organized into a few groups (93 -> 5). This could also be tweaked a bit to allow categories like "All C-sides" if there's demand for it.

Currently custom groups display before ungrouped maps within a levelset -- having a mixed order would probably require having a metadata YAML file to group things together.

I'm pretty new to OSS contributions and mixing with other people's code so let me know if there's anything you want me to change or tweak!

bigkahuna443 commented 4 years ago

Forgot to mention -- I tested various combinations of group ordering with vanilla + custom maps and everything seems to work. Toggling/resetting maps works as expected.

rhelmot commented 4 years ago

Solid work. I don't know what use cases we'll see for this in the future other than collab maps but we'll see what the future holds.