Guys, please correct me if I'm wrong. Let's operate on the engine terminology. I understand there are two concepts-- altitude and depth, and they're not related to each other. Altitude is how high an object flies on a geoscape. In TFTD, this parameter works the same way, just for the player in translation its value is turned upside down. And there is depth - this is a property of the terrain and the deployment will take this value from the terrain on which it finds itself. So, as Nord said, these parameters are of different kinds and in fact have no relation to each other, as far as I understand.
If I'm right, our suggestion has nothing to do with either the fakeUnderwater texture property or the altitude (of what? UFOs that are flying around?). It has to do with the depth of the deployment that the XCOM craft is going to fly and land on. This depth of deployment will be obtained either from the terrain of the texture on which it finds itself, or from the terrain that is represented in the deployment itself (for example, missions cargo ships, although they will be on fakeUnderwater, will have their own terrain with a depth 0, so they do not need a submarine). I understand that it is possible to specify depth in the deployment itself, but I do not know how they interact with the depth that comes from the terrain. I think the depth of deployment is used, but that's just my intuition.
Perhaps it would be good to use approximately the same syntax as we already use for craftWeapons. You can make two binary parameters: underwaterOnly and landOnly, or make underwaterOnly, for example, as an integer, where -1 means that the depth is not important (the default), 0 only for deployment with depth = 0 and 1 for depth > 0. The current fakeUnderwater parameter for facilities also works similarly. Of course, naming is not the crucial point, so it can be whatever else is necessary.
Okay, like Solarius has written, how this terrain binding for relevant vehicles, Car, submarine works is, underwater only and landonly, usind depth.. and craft uses Altitude.
This is very similar to something I propose in the feature request a while ago. If Craft uses altitude=0 can't go higher or lower, it is a car. If Craft use altitude having positive value, say from 0 to above, then it is an aircraft. Altitude negative value, from 0 to negative -5 it is a Submarine.
So if you have two flag for a craft, say, maxAltitude this parameter already exist. So if you have a new parameter like minAltitude, setting BOTH flags as zero. You have a Car.
If maxAltitude=-5 and minAltitude= -1, it is a submarine and so on.
All we need is some kind of texture flag, as to which texture this craft can operate on. Then you got what you need.
If you are going to implement this craft to terrain binding feature. Why not go another step? Having negative waypoints for ufos trajectories? This will allow craft to intercept certain ufo at certain altitude, it simulate air and underwater combat in a sense. You just need to be able to implement negative values and some check at waypoint 0 on a texture, the ufo is landing or not. If it is on a land then it is, on a sea texture, it is not. Having negative waypoint is an extension to the current waypoints system that's use in ufo.
In TFTD, ufo waypoints are positive, but reflects on the depth it can go. So if you have TFTD and UFO, then UfO and USO can use both positive and negative values for waypoints on sea textures, so they can be in the air if it is positive value or underwater for negative values.
If you want complete Hybrid modding, best to have both, instead of one half done and the other half cast aside.