Looks absolutely fantastic! One point though: Line 75 of EuroScopePlugInIFlightPlanControllerAssignedData.h, virtual std :: string GetValueAsSting should be virtual std :: string GetValueAsString
Thanks for sharing! I start with feedback for the EuroScopePlugInIFlightPlanControllerAssignedData.
I see that approach types are introduced. In our sector file provider GNG, the following list of types is provided, replicating the ARINC capabilities:
A = Approach Transition
B = Loc Back Course
D = VOR/DME
G = IGS
H = RNP
I = ILS
J = GLS
L = Localizer
N = NDB
P = GPS
Q = NDB/DME
R = RNAV
S = VORTAC
T = TACAN
U = SDF
V = VOR
X = LDA
I suggest to use (parts of) this list for the types.
Is it possible to have LandingClearanceReceived flag added? Our vACC plugin currently does this via the cleared altitude and uses values 3 & 4 (cleared APCH, cleared visual APCH). But since this will not be supported, a separate flag similar to the ClearenceReceived one would be nice.
For the ground states I suggest the following additions: OnFreq, Clearance, Crossing (RWY, outbound), De-icing, Crossing (RWY, inbound). Can you think about a possibility to have all corresponding requests recorded (from any ground state), too? So that “pilots requesting clearances” or “pilots requesting taxi” can be recorded in the system? This could be helpful especially for the departure states like clearance, pushback or taxi, which need to be delayed sometimes due to traffic, the number of requests or priorities.
Is this planned to return the version in the format “3.2.7.0”, “3.2g” or something else? The first one would make comparisons easiest in cases where a plugin needs to enable/disable some features based on the EuroScope version.
EuroScopePlugInIFlightPlan.h
enum class ERadarStates
RedundantFirst30Sec appears to be a new (or at least a previously undocumented) state. Could it be a settings-defined time instead of a fixed value?
Could the function be extended (or another one added) to probe a complete flightplan using an IFlightPlanData parameter? The use case would be probing the effects of changes to any combination of flightplan items (type, equipment, route, requested level, …).
Consider standardizing SpeedIas, SpeedMach and ClimbDescendRate entries to contain also min/max values, for example “280” would be 280kts exactly, “280+” 280kts or greater and “280-” 280kts or less.
Is the numerical data such as Heading stored and communicated to other clients as a string or a number? If a plugin sets an assigned heading “113P”, will the ‘P’ cause SetValue to fail, and if not, will GetValueAsSting return “113” or “113P”?
Plugins may contain very specific items, and it may not be necessary to have them all listed here. A generic “Custom” data type could be used for plugins to broadcast data that is not of interest to other plugins. The data would then not be permanent as the next broadcast of the same type would overwrite it so the plugins should monitor for changes and save the information locally. This would avoid the list of value types growing excessively long, and misuse of already existing types (due to not understanding the original purpose of the data type)
enum class EGroundStates
Suggest to add “line-up” state. The use case would be this being an indication that the aircraft is cleared to enter the departure runway but not take off, inhibiting runway incursion alerts but not unauthorized takeoff alerts.
EuroScopePlugInIFlightPlanCoordination.h
enum class ECoordinationTypes
Consider adding ClimbDescendRate (self explanatory) and TacticalPoint (for point coordinations other than the normal Point coordination)
Consider same formats for min/max as suggested in EControllerAssignedValues rather than separate coordination types
Consider adding a possibility for a multiline edit control and adjust the text and background colors
EuroScopePlugInIRadarTarget.h
Consider adding a function to get “on ground” flag from FSD data (with the current altitude and groundspeed checks as backup)
EuroScopePlugInIScreenList.h
Consider adding a function to clear the list
How/where do you set the list title?
EuroScopePlugInISectorFile.h
Consider adding a class IMultiLineElement, similar to IMultiPointElement. It would contain the line data in a vector of <startposition,endposition,colorref>. The data in many sector file sections can not be expected to represent a continuous line, or even if it is, it may not be in a continuous order. Hence, if you try to draw the element from an IMultiPointElement, the result will not be correct. The IMultiLineElement class should only be used where the data is certain to contain a single continuous sequence of points (sector file regions, ese file sidsstars, sector lines and sectors).