97 lines
2.3 KiB
Plaintext
97 lines
2.3 KiB
Plaintext
|
|
var play_sound = nil;
|
|
var show_message = nil;
|
|
|
|
mission.extension_add("Handler", {
|
|
init: func {
|
|
#me.DELAY = 4;
|
|
me.timer = maketimer(0, func me._hide_msg());
|
|
me.timer.singleShot = 1;
|
|
|
|
me._margin = 5;
|
|
me._offset = 5;
|
|
|
|
var w = 300;
|
|
var h = 400;
|
|
var bg_color = [0.1, 0.1, 0.1, 0.8];
|
|
var line_color = [1, 1, 1, 0.8];
|
|
|
|
me.window = canvas.Window.new([w,h]);
|
|
|
|
me._scr_x = func getprop("/sim/startup/xsize");
|
|
me._scr_y = func getprop("/sim/startup/ysize");
|
|
|
|
me.window.set("tf/t[0]", 0);
|
|
me.window.set("tf/t[1]", me._scr_y() / 2);
|
|
|
|
me.canvas = me.window.createCanvas();
|
|
me.canvas.setColorBackground(0,0,0,0);
|
|
me.MsgBox = me.canvas.createGroup();
|
|
|
|
var th = 30;
|
|
var x_left = me._offset;
|
|
var x_right = w - x_left;
|
|
var y_top = x_left;
|
|
var y_bottom = th + x_left;
|
|
me.MsgBox.createChild("path")
|
|
.moveTo(x_left, y_top)
|
|
.horizTo(x_right)
|
|
.vertTo(y_bottom)
|
|
.horizTo(x_left)
|
|
.close()
|
|
.setColor(bg_color)
|
|
.setColorFill(bg_color)
|
|
.setStrokeLineWidth(1);
|
|
|
|
me.Text = me.MsgBox.createChild("text")
|
|
.setTranslation(me._margin + me._offset, me._margin + me._offset)
|
|
.setText("Message box")
|
|
.setAlignment("left-top")
|
|
.setFontSize(14)
|
|
.setFont("LiberationFonts/LiberationSans-Bold.ttf")
|
|
.setMaxWidth(w - 2 * (me._margin + me._offset))
|
|
.setColor(1,1,1);
|
|
|
|
|
|
me.listeners = [
|
|
setlistener("/sim/mission/message/show-message", func me.show_message()),
|
|
];
|
|
|
|
me.show_message = func {
|
|
if (!getprop("/sim/mission/message/show-message"))
|
|
return;
|
|
me._update_msg_box(getprop("/sim/mission/message/current-message"));
|
|
me.window.set("visible", 1);
|
|
me.timer.restart(getprop("/sim/mission/message/message-delay"));
|
|
setprop("/sim/mission/message/show-message", 0);
|
|
};
|
|
|
|
me.timer.start();
|
|
|
|
me._update_msg_box = func (txt) {
|
|
#me.window.set("visible", 0);
|
|
|
|
var text_bb = me.Text.setText(txt).update().getBoundingBox();
|
|
var width = text_bb[2];
|
|
var height = text_bb[3];
|
|
me.MsgBox.set("path/coord[3]", height + me._offset + 2 * me._margin);
|
|
};
|
|
|
|
},
|
|
|
|
node: props.getNode("/sim/mission/message", 1),
|
|
|
|
_hide_msg: func {
|
|
me.window.set("visible", 0);
|
|
},
|
|
|
|
stop: func {
|
|
foreach(var l; me.listeners)
|
|
removelistener(l);
|
|
setsize(me.listeners, 0);
|
|
|
|
me.timer.stop();
|
|
me.node.remove();
|
|
me.window.del();
|
|
},
|
|
}); |