Got the new neighbor checks implemented. Makes things much cleaner though I am not using the axial portion just yet. Just cleaning up and compartmentalizing some of the code was a huge improvement. I also cleaned up various other pieces of the river generator to make it easier to read, which still has a long way to go for readability:
I am contemplating further methods of cleaning this generation such as turning each column or set of columns into a function which has a switch on int/enum inside and setting variable at the beginning of each row to state which of the 6 points it is currently generating from. The switch would break it apart inside the function and route to the row it is on. Will be much cleaner.
I was considering creating diagonal neighbor checks for the rivers, but I think first I may try and create some limited A* method of walking across a body of water, and then depending on it’s overall size, it and all it’s tiles could be designated and stored as a lake or ocean. I am thinking that any self contained body of water could be searched and referenced for all kinds of things. 2 ports on the same body of water would be able to use their lake/ocean designator to tell them both that they could link up to form a trade route(and then do a path distance check if on the same body of water). If a river generates into one side of the lake, a point elsewhere in the lake could be chosen for another river to pop out and continue on until hitting an ocean.
I also plan on storing each river as a single entity for future referencing and meddling. Trade routes, dams, river rerouting, etc.
Anyway, I may make some limited progress tomorrow, but after that I will be out for 2 weeks so I will start fresh on some of these things then.