So because of the refactoring that you started, it's starting to expose patterns in both those functions and related functions.
I am an asshole and using List<Hex>
as a stand in for HashSet<HexTile>
because my fingers are lazy
One thing i noticed: A lot of the stuff in this reserves behavior looks like:
(List<Hex> starts) => List<Hex> dests