8380519a46
The multiplayer "transmit filter" defaulted to off, with the flag that indicates if this should be available on the MP dialgo to also be set to off
366 lines
12 KiB
XML
366 lines
12 KiB
XML
<?xml version="1.0"?>
|
|
|
|
|
|
<PropertyList>
|
|
<name>multiplayer</name>
|
|
<layout>vbox</layout>
|
|
<resizable>false</resizable>
|
|
|
|
<nasal>
|
|
<open>
|
|
<![CDATA[
|
|
if ((getprop("/sim/multiplay/selected-server") == nil) or
|
|
(getprop("/sim/multiplay/selected-server") == "" ) ){
|
|
var tx = getprop("/sim/multiplay/txhost");
|
|
var dlg = cmdarg();
|
|
var servers = cmdarg().getChildren("group")[1].getChildren("combo")[0].getChildren("value");
|
|
foreach (var s; servers) {
|
|
var server = s.getValue();
|
|
var host = split(" ", server)[0];
|
|
if (host == tx) {
|
|
setprop("/sim/multiplay/selected-server", server);
|
|
}
|
|
}
|
|
}
|
|
if (getprop("/sim/multiplay/rxport") == nil or getprop("/sim/multiplay/rxport") == 0)
|
|
setprop("/sim/multiplay/rxport",5000);
|
|
|
|
if (getprop("/sim/multiplay/txport") == nil or getprop("/sim/multiplay/txport") == 0)
|
|
setprop("/sim/multiplay/txport",5000);
|
|
|
|
if (getprop("/sim/multiplay/protocol-version") == 2)
|
|
setprop("/sim/gui/dialogs/multiplay/protocol-version", "Visible to only 2017+");
|
|
else
|
|
setprop("/sim/gui/dialogs/multiplay/protocol-version", "Visible to all");
|
|
|
|
var servers = props.globals.getNode("/sim/gui/dialogs/multiplay/servers", 1);
|
|
var updateServers = func(n) {
|
|
if( !n.getValue() ) return;
|
|
servers.removeChildren("value");
|
|
# get the results list from the server
|
|
var serverlist = props.globals.getNode("/sim/multiplay/server-list", 1);
|
|
|
|
var i=0;
|
|
foreach (var s; serverlist.getChildren("server")) {
|
|
|
|
# prepare some default values
|
|
s.initNode("online", 1, "BOOL" );
|
|
s.initNode("location", "unknown", "STRING" );
|
|
s.initNode("name", s.getNode("hostname").getValue(), "STRING" );
|
|
if (!s.getNode("online").getBoolValue()) {
|
|
continue; # skip offline servers
|
|
}
|
|
|
|
# label is name and location, for the moment
|
|
# should we include the number of users? or wait until we
|
|
# have a better UI toolkit?
|
|
var nm = s.getNode("hostname").getValue() ~ " - " ~ s.getNode("location").getValue();
|
|
servers.getNode("value[" ~ i ~ "]", 1).setValue(nm);
|
|
i += 1;
|
|
}
|
|
|
|
gui.dialog_update("multiplayer", "host");
|
|
}
|
|
|
|
var static_serverList = [
|
|
['mpserver01.flightgear.org', 'Frankfurt, Germany'],
|
|
['mpserver02.flightgear.org', 'Kansas, USA'],
|
|
['mpserver03.flightgear.org', 'Germany'],
|
|
['mpserver04.flightgear.org', 'United Kingdom'],
|
|
['mpserver05.flightgear.org', 'Chicago, USA'],
|
|
['mpserver07.flightgear.org', 'Wisconsin, USA'],
|
|
['mpserver08.flightgear.org', 'Frankfurt am Main, Germany'],
|
|
['mpserver09.flightgear.org', 'Koln, Germany'],
|
|
['mpserver10.flightgear.org', 'Montpellier, France'],
|
|
['mpserver11.flightgear.org', 'Vilnius, Lithuania'],
|
|
['mpserver12.flightgear.org', 'Amsterdam, Netherlands'],
|
|
['mpserver13.flightgear.org', 'Grenoble, France']
|
|
];
|
|
|
|
var updateServersFailed = func(n) {
|
|
if( !n.getValue() ) return;
|
|
debug.dump("Failed to retrieve server list!");
|
|
|
|
servers.removeChildren("value");
|
|
var i=0;
|
|
foreach (var s; static_serverList) {
|
|
# create the node the PUI combo
|
|
var nm = s[0] ~ " - " ~ s[1];
|
|
servers.getNode("value[" ~ i ~ "]", 1).setValue(nm);
|
|
i += 1;
|
|
}
|
|
|
|
gui.dialog_update("multiplayer", "host");
|
|
}
|
|
|
|
# listen for results arriving
|
|
setlistener("/sim/multiplay/got-servers", updateServers);
|
|
setlistener("/sim/multiplay/get-servers-failure", updateServersFailed);
|
|
fgcommand("multiplayer-refreshserverlist");
|
|
]]>
|
|
</open>
|
|
|
|
<close>
|
|
</close>
|
|
</nasal>
|
|
|
|
<!-- titlebar -->
|
|
<group>
|
|
<layout>hbox</layout>
|
|
<empty><stretch>1</stretch></empty>
|
|
|
|
<text>
|
|
<label>Multiplayer Settings</label>
|
|
</text>
|
|
|
|
<empty><stretch>1</stretch></empty>
|
|
|
|
<button>
|
|
<pref-width>16</pref-width>
|
|
<pref-height>16</pref-height>
|
|
<legend></legend>
|
|
<keynum>27</keynum>
|
|
<border>2</border>
|
|
<binding>
|
|
<command>dialog-close</command>
|
|
</binding>
|
|
</button>
|
|
</group>
|
|
<hrule/>
|
|
|
|
<!-- main dialog area -->
|
|
<group>
|
|
<layout>table</layout>
|
|
<halign>center</halign>
|
|
|
|
<text>
|
|
<row>0</row>
|
|
<col>0</col>
|
|
<label> Options:</label>
|
|
<halign>right</halign>
|
|
</text>
|
|
<checkbox>
|
|
<row>0</row>
|
|
<col>1</col>
|
|
<colspan>2</colspan>
|
|
<halign>left</halign>
|
|
<name>hide-replay</name>
|
|
<label>Hide replay sessions over MP (less annoying to other players)</label>
|
|
<property>/sim/multiplay/freeze-on-replay</property>
|
|
<binding>
|
|
<command>dialog-apply</command>
|
|
<object-name>hide-replay</object-name>
|
|
</binding>
|
|
</checkbox>
|
|
|
|
<checkbox>
|
|
<row>1</row>
|
|
<col>1</col>
|
|
<colspan>2</colspan>
|
|
<halign>left</halign>
|
|
<name>ai-traffic</name>
|
|
<label>Show AI Traffic (mixing MP and AI traffic may be confusing)</label>
|
|
<property>/sim/traffic-manager/enabled</property>
|
|
<binding>
|
|
<command>dialog-apply</command>
|
|
<object-name>ai-traffic</object-name>
|
|
</binding>
|
|
</checkbox>
|
|
|
|
<checkbox>
|
|
<row>2</row>
|
|
<col>1</col>
|
|
<colspan>2</colspan>
|
|
<halign>left</halign>
|
|
<visible>
|
|
<property>sim/multiplay/transmit-filter-property-base-available</property>
|
|
</visible>
|
|
<property>sim/multiplay/transmit-filter-property-base</property>
|
|
<live>true</live>
|
|
<label>Emesary only multiplayer mode</label>
|
|
<binding>
|
|
<command>property-toggle</command>
|
|
<property>sim/multiplay/transmit-filter-property-base</property>
|
|
</binding>
|
|
</checkbox>
|
|
|
|
<combo>
|
|
<row>3</row>
|
|
<col>1</col>
|
|
<halign>left</halign>
|
|
<name>protocol-version</name>
|
|
<pref-width>300</pref-width>
|
|
<property>/sim/gui/dialogs/multiplay/protocol-version</property>
|
|
<value>Visible to all</value>
|
|
<value>Visible to only 2017+</value>
|
|
<binding>
|
|
<command>dialog-apply</command>
|
|
<object-name>protocol-version</object-name>
|
|
</binding>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
var val = getprop("/sim/gui/dialogs/multiplay/protocol-version");
|
|
print("MP Version :",val,":");
|
|
if (val == "Visible to all") {
|
|
setprop("/sim/multiplay/protocol-version", 1);
|
|
}
|
|
|
|
if (val == "Visible to only 2017+") {
|
|
setprop("/sim/multiplay/protocol-version", 2);
|
|
}
|
|
</script>
|
|
</binding>
|
|
</combo>
|
|
<text>
|
|
<row>3</row>
|
|
<col>0</col>
|
|
<halign>right</halign>
|
|
<label>Compatibility</label>
|
|
</text>
|
|
|
|
<text>
|
|
<row>4</row>
|
|
<col>0</col>
|
|
<halign>right</halign>
|
|
<label> Callsign:</label>
|
|
</text>
|
|
<input>
|
|
<row>4</row>
|
|
<col>1</col>
|
|
<halign>left</halign>
|
|
<property>/sim/multiplay/callsign</property>
|
|
<enable>
|
|
<not>
|
|
<property>/sim/multiplay/online</property>
|
|
</not>
|
|
</enable>
|
|
</input>
|
|
<text>
|
|
<row>6</row><col>0</col>
|
|
<halign>right</halign>
|
|
<label>Server:</label>
|
|
</text>
|
|
<combo>
|
|
<name>host</name>
|
|
<halign>left</halign>
|
|
<row>6</row><col>1</col>
|
|
<colspan>2</colspan>
|
|
<pref-width>350</pref-width>
|
|
<property>/sim/multiplay/selected-server</property>
|
|
<editable>true</editable>
|
|
|
|
<properties>/sim/gui/dialogs/multiplay/servers</properties>
|
|
</combo>
|
|
<group>
|
|
<layout>hbox</layout>
|
|
<row>4</row>
|
|
<col>1</col>
|
|
<text>
|
|
<width>2</width>
|
|
<halign>right</halign>
|
|
<label>rxPort</label>
|
|
</text>
|
|
<input>
|
|
<pref-width>50</pref-width>
|
|
<halign>left</halign>
|
|
<property>/sim/multiplay/rxport</property>
|
|
<enable>
|
|
<not>
|
|
<property>/sim/multiplay/online</property>
|
|
</not>
|
|
</enable>
|
|
</input>
|
|
</group>
|
|
<!-- status area -->
|
|
<text>
|
|
<visible>
|
|
<not><property>/sim/multiplay/online</property></not>
|
|
</visible>
|
|
<row>7</row>
|
|
<col>1</col>
|
|
<halign>left</halign>
|
|
<label>Not connected</label>
|
|
</text>
|
|
|
|
<text>
|
|
<visible>
|
|
<property>/sim/multiplay/online</property>
|
|
</visible>
|
|
<row>7</row>
|
|
<col>1</col>
|
|
<halign>left</halign>
|
|
<label>MMMMMMMMMMMMMMMMM</label>
|
|
<format>Connected to %s</format>
|
|
<property>/sim/multiplay/txhost</property>
|
|
<live>true</live>
|
|
</text>
|
|
</group>
|
|
|
|
<!-- button area -->
|
|
<hrule/>
|
|
<group>
|
|
<layout>hbox</layout>
|
|
<default-padding>10</default-padding>
|
|
<empty><stretch>true</stretch></empty>
|
|
|
|
<button>
|
|
<legend>Connect</legend>
|
|
<equal>true</equal>
|
|
<enable>
|
|
<not>
|
|
<property>/sim/multiplay/online</property>
|
|
</not>
|
|
</enable>
|
|
<binding>
|
|
<command>dialog-apply</command>
|
|
</binding>
|
|
<binding>
|
|
<command>nasal</command>
|
|
<script>
|
|
fgcommand("multiplayer-connect", props.Node.new({
|
|
"servername": getprop("/sim/multiplay/selected-server"),
|
|
"rxport": getprop("/sim/multiplay/rxport"),
|
|
"txport": getprop("/sim/multiplay/txport")
|
|
}));
|
|
</script>
|
|
</binding>
|
|
</button>
|
|
|
|
<button>
|
|
<legend>Disconnect</legend>
|
|
<equal>true</equal>
|
|
<enable>
|
|
<property>/sim/multiplay/online</property>
|
|
</enable>
|
|
<binding>
|
|
<command>dialog-apply</command>
|
|
</binding>
|
|
<binding>
|
|
<command>multiplayer-disconnect</command>
|
|
<subsystem>mp</subsystem>
|
|
</binding>
|
|
</button>
|
|
|
|
<button>
|
|
<row>1</row><col>2</col>
|
|
<legend>Server Status</legend>
|
|
<binding>
|
|
<command>open-browser</command>
|
|
<path>http://mpmap01.flightgear.org/mpstatus/</path>
|
|
</binding>
|
|
</button>
|
|
|
|
<button>
|
|
<legend>Close</legend>
|
|
<default>true</default>
|
|
<equal>true</equal>
|
|
<binding>
|
|
<command>dialog-close</command>
|
|
</binding>
|
|
</button>
|
|
|
|
<empty><stretch>true</stretch></empty>
|
|
</group>
|
|
|
|
</PropertyList>
|