diff --git a/Nasal/multiplayer.nas b/Nasal/multiplayer.nas index a47838225..faca21dc7 100644 --- a/Nasal/multiplayer.nas +++ b/Nasal/multiplayer.nas @@ -244,7 +244,7 @@ var dialog = { var odd = 1; foreach (var mp; model.list) { var col = 0; - var color = mp.available ? me.fg[odd = !odd] : me.fg[2]; + var color = mp.node.getNode("model-installed").getValue() ? me.fg[odd = !odd] : me.fg[2]; foreach (var column; me.columns) { var p = typeof(column.property) == "func" ? column.property() : column.property; var w = nil; @@ -261,6 +261,10 @@ var dialog = { } row += 1; } + if (me.x != nil) + me.dialog.set("x", me.x); + if (me.y != nil) + me.dialog.set("y", me.y); me.update(me.loopid += 1); fgcommand("dialog-new", me.dialog.prop()); fgcommand("dialog-show", me.dialog.prop()); @@ -291,7 +295,7 @@ var dialog = { { # Node with valid position data (and "distance!=nil"). n.setValues({ - "model-short": mp.available ? mp.model : "[" ~ mp.model ~ "]", + "model-short": n.getNode("model-installed").getValue() ? mp.model : "[" ~ mp.model ~ "]", "bearing-to": self.course_to(ac), "distance-to-km": distance / 1000.0, "distance-to-nm": distance * M2NM, @@ -333,6 +337,10 @@ var dialog = { } }, close: func { + if (me.dialog != nil) { + me.x = me.dialog.prop().getNode("x").getValue(); + me.y = me.dialog.prop().getNode("y").getValue(); + } fgcommand("dialog-close", me.dialog.prop()); }, del: func { @@ -368,8 +376,6 @@ var dialog = { # multiplayer.model.data: hash, key := /ai/models/* path # multiplayer.model.callsign hash, key := callsign # multiplayer.model.list vector, sorted alphabetically (ASCII, case insensitive) -# multiplayer.model.available unsorted list of players with available models -# multiplayer.model.unavailable unsorted list of players with unavailable models # # All of them contain hash entries of this form: # @@ -379,7 +385,6 @@ var dialog = { # root: "/ai/models/multiplayer[4]", # root property # node: {...}, # root property as props.Node hash # model: "bo105", # model name (extracted from path) -# available: 2, # whether the model is installed (0: not inst, 1: AI, 2: regular) # sort: "bimaus", # callsign in lower case (for sorting) # } # @@ -407,8 +412,6 @@ var model = { me.data = {}; me.callsign = {}; - me.available = []; - me.unavailable = []; foreach (var n; props.globals.getNode("ai/models", 1).getChildren("multiplayer")) { if (!n.getNode("valid").getValue()) @@ -420,25 +423,16 @@ var model = { continue; var path = n.getNode("sim/model/path").getValue(); - var available = 0; - if (io.stat(string.normpath(me.fg_root ~ "AI/" ~ path)) != nil) - available = 1; - elsif (io.stat(string.normpath(me.fg_root ~ path)) != nil) - available = 2; - elsif (!contains(me.warned, path)) - me.warned[path] = print("MP model not installed: " ~ debug._error(path)); - var model = split(".", split("/", path)[-1])[0]; model = me.remove_suffix(model, "-model"); model = me.remove_suffix(model, "-anim"); var root = n.getPath(); var data = { node: n, callsign: callsign, model: model, root: root, - sort: string.lc(callsign), available: available }; + sort: string.lc(callsign) }; me.data[root] = data; me.callsign[callsign] = data; - append(available ? me.available : me.unavailable, data); } me.list = sort(values(me.data), func(a, b) cmp(a.sort, b.sort));