123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- # =======================
- # Multiplayer Quirks
- # =======================
- var RadarStandby = props.globals.getNode("instrumentation/radar/radar-standby");
- MPjoin = func(n) {
- #print(n.getValue(), " added");
- setprop("instrumentation/radar",n.getValue(),"radar/y-shift",0);
- setprop("instrumentation/radar",n.getValue(),"radar/x-shift",0);
- setprop("instrumentation/radar",n.getValue(),"radar/rotation",0);
- setprop("instrumentation/radar",n.getValue(),"radar/in-range",0);
- setprop("instrumentation/radar",n.getValue(),"radar/h-offset",180);
- setprop("instrumentation/radar",n.getValue(),"joined",1);
- }
- MPleave= func(n) {
- #print(n.getValue(), " removed");
- setprop("instrumentation/radar",n.getValue(),"radar/in-range",0);
- setprop("instrumentation/radar",n.getValue(),"joined",0);
- }
- #need to copy the properties so that we never try to access a non-existent property in XML
- MPradarProperties = func {
- var Estado = RadarStandby.getValue();
- if ( Estado != 1 ) {
- targetList = props.globals.getNode("ai/models/").getChildren("multiplayer");
- foreach (d; props.globals.getNode("ai/models/").getChildren("aircraft")) {
- append(targetList,d);
- }
- foreach (m; targetList) {
- var string = "instrumentation/radar/ai/models/"~m.getName()~"["~m.getIndex()~"]/";
- if (getprop(string,"joined")==1 or m.getName()=="aircraft") {
- factor = getprop("instrumentation/radar/range-factor"); ## if (factor == nil) { factor=0.001888};
- setprop(string,"radar/y-shift",m.getNode("radar/y-shift").getValue() * factor);
- setprop(string,"radar/x-shift",m.getNode("radar/x-shift").getValue() * factor);
- setprop(string,"radar/rotation",m.getNode("radar/rotation").getValue());
- setprop(string,"radar/h-offset",m.getNode("radar/h-offset").getValue());
-
- if (getprop("instrumentation/radar/selected")==2){
- if (getprop(string~"radar/x-shift") < -0.04 or
- getprop(string~"radar/x-shift") > 0.04) {
- setprop(string,"radar/in-range",0);
- } else {
- setprop(string,"radar/in-range",m.getNode("radar/in-range").getValue());
- }
- } else {
- setprop(string,"radar/in-range",m.getNode("radar/in-range").getValue());
- }
- }
- }
-
- # this is a good place to deal with the range scaling factors
- if (getprop("instrumentation/radar/selected")==2) {
- if (getprop("instrumentation/radar/range")==10) {
- setprop("instrumentation/radar/range",20);
- setprop("instrumentation/radar/range-factor",0.002);
- }
- elsif (getprop("instrumentation/radar/range")==20) {
- setprop("instrumentation/radar/range-factor",0.003246);
- }
- else { #40
- setprop("instrumentation/radar/range-factor",0.001623);
- }
- }
- elsif(getprop("instrumentation/radar/selected")==3 or getprop("instrumentation/radar/selected")==4) {
- if (getprop("instrumentation/radar/range")==40) {
- setprop("instrumentation/radar/range",20);
- setprop("instrumentation/radar/range-factor",0.001888);
- }
- elsif (getprop("instrumentation/radar/range")==20) {
- setprop("instrumentation/radar/range-factor",0.001888);
- }
- else { #10
- setprop("instrumentation/radar/range-factor",0.003776);
- }
- }
- } # from Estado
- settimer(MPradarProperties,0.05);
- }
- # ===================
- # Boresight Detecting
- # ===================
- locking=0;
- found=-1;
- boreSightLock = func {
- var Estado = RadarStandby.getValue();
- if ( Estado != 1 ) {
- if(getprop("instrumentation/radar/selected") == 1){
- targetList= props.globals.getNode("ai/models/").getChildren("multiplayer");
- foreach (d; props.globals.getNode("ai/models/").getChildren("aircraft")) {
- append(targetList,d);
- }
- foreach (m; targetList) {
- var string = "instrumentation/radar/ai/models/"~m.getName()~"["~m.getIndex()~"]";
- var string1 = "ai/models/"~m.getName()~"["~m.getIndex()~"]";
- if (getprop(string1~"radar/in-range")) {
- hOffset = getprop(string1~"radar/h-offset");
- vOffset = getprop(string1~"radar/v-offset");
- #really should be a cone, but is a square pyramid to avoid trigonemetry
- if(hOffset < 3 and hOffset > -3 and vOffset < 3 and vOffset > -3) {
- if (locking == 11){
- setprop(string~"radar/boreLock",2);
- setprop("instrumentation/radar/lock",2);
- # setprop("sim[0]/hud/current-color",1);
- locking -= 1;
- }
- elsif (locking ==1 or locking ==3 or locking ==5 or locking ==7 or locking ==9 ) {
- setprop("instrumentation/radar/lock",1);
- setprop(string1~"radar/boreLock",1);
- }
- else {
- setprop("instrumentation/radar/lock",0);
- setprop(string~"radar/boreLock",1);
- }
- if (found != m.getIndex()) {
- found=m.getIndex();
- locking=0;
- }
- else {
- locking += 1;
- }
- settimer(boreSightLock, 0.2);
- return;
- }
- }
- }
- setprop(string~"radar/boreLock",0);
- locking=0;
- # setprop("sim[0]/hud/current-color",0);
- } # from getprop
- } # from Estado
- locking=0;
- # setprop("sim[0]/hud/current-color",0);
- found =-1;
- setprop("instrumentation/radar/lock",0);
- settimer(boreSightLock, 0.2);
- }
- setlistener("ai/models/model-added", MPjoin);
- setlistener("ai/models/model-removed", MPleave);
- settimer(MPradarProperties,1.0);
- settimer(boreSightLock, 1.0);
|