(First off, this is said with complete respect and gratitude. Second, I could be really off base here. If I am, someone please correct me!)
@Viir, I see that you are working on improving the framework, which is awesome, and I really respect your hard work and dedication. However, if I may offer some constructive criticism… You are clearly quite brilliant with the language/.NET, and I have noticed something I frequently see in my line of work when dealing with similarly skilled developers.
(I hope this metaphor works, as it is the best that I can come up with.)
Let’s say that learning a programming language is a journey. Often, when someone so knowledgeable tries to help someone who is new, they look backwards down the road to their starting line so they can answer questions in a way that the newcomer will be able to understand. However, what that developer sees as their starting line, is actually just the horizon, and the true starting line might be several more horizons away from that. You are wonderful at answering questions, and you are probably doing so in a way that allows us to easily adapt them to many situations. However, the answers often combine some higher level programming techniques and that causes many to be unable to understand how it works, leaving them one answer closer to their goal, yet none the wiser because they don’t understand how your solution actually works.
I have a feeling that the API solutions you make for us are similarly influenced by your starting line being too distant to see. Many of your functions accept such a wide array of options, and can return a wide variety of things, that it is hard to know how to use them unless one has experience combining those advanced concepts.
I consider myself to be the kind of programmer that is very good at creating modular solutions that mimicks how skilled players categorize information, applies weighting based on the situations, and makes intelligent decisions with that information. (To the point of my partner suggesting that I patent my algorithms for targeting prioritization and weapon coordination.) However, when I look at your code, my eyes glaze over and I feel stifled. I think of things in terms of things like:
Bool Object.WarpTo(??? ObjectToWarpTo, Int WarpToDistance, Bool ConfirmWarping, Int SecondsToWait) ; inputs 2-4 have defaults, making them optional.
Which uses things like:
Bool Element.MenuSelect(Array EntriesToSelect)
Bool Ship.IsStuck() ; bouncing off of something
This way, a newcomer could simply do:
WarpTo(PnP.Bookmarks.Personal(1)) ; warps to first green bookmark at zero. Returns false if scrammed, speed bounces, or not in warp by 60 seconds.
As that person becomes more comfortable and starts to upgrade his code so that (with ConfirmWarping = False) he can start warping and reuse as needed to determine when it completed, while being able to do other things like target and attack scrammers.
I feel that this probably explains why there aren’t more people developing off of Sanderling.
That’s the best way that I can find to explain my difficulty integrating your API into my existing code.