Dashboard: refactor
This commit is contained in:
parent
cb7656156b
commit
97637823b1
|
@ -1,105 +1,173 @@
|
|||
var smartInstruments = canvas.new({
|
||||
"name": "smartInstruments", # The name is optional but allow for easier identification
|
||||
"size": [1024, 1024], # Size of the underlying texture (should be a power of 2, required) [Resolution]
|
||||
"view": [1509, 736], # Virtual resolution (Defines the coordinate system of the canvas [Dimensions]
|
||||
# which will be stretched the size of the texture, required)
|
||||
"mipmapping": 0 # Enable mipmapping (optional)
|
||||
});
|
||||
smartInstruments.addPlacement({"node": "instrumentScreen"});
|
||||
var SmartInstruments = {
|
||||
new: func(placement) {
|
||||
var m = {
|
||||
parents:[SmartInstruments],
|
||||
instrumentCanvas: canvas.new({
|
||||
"name": "smartInstruments", # The name is optional but allow for easier identification
|
||||
"size": [1024, 1024], # Size of the underlying texture (should be a power of 2, required) [Resolution]
|
||||
"view": [1509, 736], # Virtual resolution (Defines the coordinate system of the canvas [Dimensions]
|
||||
# which will be stretched the size of the texture, required)
|
||||
"mipmapping": 0 # Enable mipmapping (optional)
|
||||
}),
|
||||
};
|
||||
m.group = m.instrumentCanvas.createGroup();#//Main group
|
||||
m.welcomeGroup = m.instrumentCanvas.createGroup();
|
||||
m.instrumentCanvas.addPlacement({"node": placement});
|
||||
#Background
|
||||
m.backgroundPath = "Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard0.png";
|
||||
# create an image child for the texture
|
||||
m.backgroundImage = m.group.createChild("image")
|
||||
.setFile(m.backgroundPath)
|
||||
.setTranslation(0, 0)
|
||||
.setSize(1509, 736);
|
||||
#center info
|
||||
m.infoImagePath = ["Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard1.png",
|
||||
"Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard2.png",
|
||||
"Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard3.png"];
|
||||
m.infoImage = m.group.createChild("image")
|
||||
.setFile(m.infoImagePath[0])
|
||||
.setTranslation(0, 0)
|
||||
.setSize(1509, 736);
|
||||
# Create a text element and set some values(Self test)
|
||||
m.selfTestText = m.welcomeGroup.createChild("text", "optional-id-for element")
|
||||
.setTranslation(530, 140) # The origin is in the top left corner
|
||||
.setAlignment("left-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(50) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,0,0) # Text color
|
||||
.setText("SELF TEST NORMAL")
|
||||
.show();
|
||||
#//speedometer
|
||||
m.speedometer = m.group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(1205, 380) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("trueno-font/Trueno-wml2.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(148) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("--");
|
||||
|
||||
var group = smartInstruments.createGroup();
|
||||
#//power
|
||||
m.power = m.group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(295, 380) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("trueno-font/Trueno-wml2.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(148) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("--");
|
||||
#//Drive Mode
|
||||
m.driveMode = m.group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(780, 628) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(40) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("Performance");
|
||||
#//Gear
|
||||
m.gearDisplay = m.group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(940, 620) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(70) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("D");
|
||||
#//Temperature
|
||||
m.tempDisplay = m.group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(420, 220) # The origin is in the top left corner
|
||||
.setAlignment("left-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(30) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("30 °C");
|
||||
#//Time
|
||||
m.timeDisplay = m.group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(1055, 215) # The origin is in the top left corner
|
||||
.setAlignment("right-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(40) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("9:41");
|
||||
m.init();
|
||||
return m;
|
||||
},
|
||||
initialized: 0,
|
||||
update: func(){
|
||||
var currentSpeed = props.getNode("/", 1).getValue("sim/multiplay/generic/float[15]");
|
||||
var currentSpeedKMH = sprintf("%i", currentSpeed*1.852);
|
||||
me.speedometer.updateText(currentSpeedKMH);
|
||||
if(autospeed.active == 1){
|
||||
me.speedometer.setColor(0.34, 0.63, 1);
|
||||
}else{
|
||||
me.speedometer.setColor(1, 1, 1);
|
||||
}
|
||||
me.power.updateText(sprintf("%i", engine.engine_1.activePower_kW));
|
||||
if(engine.engine_1.direction == 1){
|
||||
me.gearDisplay.updateText("D");
|
||||
}else if(engine.engine_1.direction == -1){
|
||||
me.gearDisplay.updateText("R");
|
||||
}
|
||||
if(engine.engine_1.mode == 1){
|
||||
me.driveMode.updateText("Performance");
|
||||
}else if(engine.engine_1.mode == 0.65){
|
||||
me.driveMode.updateText("Comfort");
|
||||
}else if(engine.engine_1.mode == 0.4){
|
||||
me.driveMode.updateText("Low Power");
|
||||
}
|
||||
|
||||
canvas.parsesvg(
|
||||
group,
|
||||
"Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard1.svg",
|
||||
);
|
||||
var tempC = props.getNode("/", 1).getValue("environment/temperature-degc");
|
||||
me.tempDisplay.updateText(sprintf("%0.1f", tempC)~" °C");
|
||||
var hour = props.getNode("/", 1).getValue("sim/time/real/hour");
|
||||
var minute = props.getNode("/", 1).getValue("sim/time/real/minute");
|
||||
if(minute < 10) minute = "0"~minute;
|
||||
me.timeDisplay.updateText(hour~":"~minute);
|
||||
#runtimeTextAdjust(timeDisplay);
|
||||
},
|
||||
|
||||
#Background
|
||||
var path = "Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard1.png";
|
||||
# create an image child for the texture
|
||||
var backgroundImage = group.createChild("image")
|
||||
.setFile(path)
|
||||
.setTranslation(0, 0)
|
||||
.setSize(1509, 736);
|
||||
updateTimer:nil,
|
||||
init: func(){
|
||||
if(me.updateTimer == nil) me.updateTimer = maketimer(0.1, func me.update());
|
||||
me.group.hide();
|
||||
me.welcomeGroup.hide();
|
||||
me.initialized = 1;
|
||||
},
|
||||
startUp:func(){
|
||||
me.welcomeGroup.show();
|
||||
var startScreenTimer = maketimer(1, func me.startSequence());
|
||||
startScreenTimer.singleShot = 1;
|
||||
startScreenTimer.start();
|
||||
},
|
||||
startSequence: func(){
|
||||
me.group.show();
|
||||
me.speedometer.enableUpdate();
|
||||
me.power.enableUpdate();
|
||||
me.driveMode.enableUpdate();
|
||||
me.gearDisplay.enableUpdate();
|
||||
me.tempDisplay.enableUpdate();
|
||||
me.timeDisplay.enableUpdate();
|
||||
|
||||
# Create a text element and set some values(Self test)
|
||||
var selfTestText = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(530, 140) # The origin is in the top left corner
|
||||
.setAlignment("left-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(50) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,0,0) # Text color
|
||||
.setText("SELF TEST NORMAL")
|
||||
.show();
|
||||
var timer2 = maketimer(2, func(){
|
||||
me.welcomeGroup.hide();
|
||||
});
|
||||
timer2.singleShot = 1;
|
||||
timer2.start();
|
||||
|
||||
selfTestText.hide();
|
||||
if(!me.initialized) me.init();
|
||||
me.updateTimer.start();
|
||||
},
|
||||
shutDown:func(){
|
||||
if(me.updateTimer) me.updateTimer.stop();
|
||||
me.group.hide();
|
||||
me.welcomeGroup.hide();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#//speedometer
|
||||
var speedometer = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(1205, 380) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("trueno-font/Trueno-wml2.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(148) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("--");
|
||||
speedometer.show();
|
||||
speedometer.enableUpdate();
|
||||
var smartInstruments = SmartInstruments.new("instrumentScreen");
|
||||
|
||||
#//power
|
||||
var power = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(295, 380) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("trueno-font/Trueno-wml2.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(148) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("--");
|
||||
power.show();
|
||||
power.enableUpdate();
|
||||
#canvas.parsesvg(
|
||||
# group,
|
||||
# "Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard.svg",
|
||||
#);
|
||||
|
||||
#//Drive Mode
|
||||
var driveMode = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(780, 628) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(40) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("Performance");
|
||||
driveMode.show();
|
||||
driveMode.enableUpdate();
|
||||
|
||||
#//Gear
|
||||
var gearDisplay = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(940, 620) # The origin is in the top left corner
|
||||
.setAlignment("center-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(70) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("D");
|
||||
gearDisplay.show();
|
||||
gearDisplay.enableUpdate();
|
||||
|
||||
#//Temperature
|
||||
var tempDisplay = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(420, 220) # The origin is in the top left corner
|
||||
.setAlignment("left-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(30) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("30 °C");
|
||||
tempDisplay.show();
|
||||
tempDisplay.enableUpdate();
|
||||
|
||||
#//Time
|
||||
var timeDisplay = group.createChild("text", "optional-id-for element")
|
||||
.setTranslation(1055, 215) # The origin is in the top left corner
|
||||
.setAlignment("right-center") # All values from osgText are supported (see $FG_ROOT/Docs/README.osgtext)
|
||||
.setFont("ExoRegular-ymMe.ttf") # Fonts are loaded either from $AIRCRAFT_DIR/Fonts or $FG_ROOT/Fonts
|
||||
.setFontSize(40) # Set fontsize and optionally character aspect ratio
|
||||
.setColor(1,1,1) # Text color
|
||||
.setText("9:41");
|
||||
timeDisplay.show();
|
||||
timeDisplay.enableUpdate();
|
||||
#props.getNode("/dev/smart/size", 1).setValue(30);
|
||||
#props.getNode("/dev/smart/x", 1).setValue(520);
|
||||
#props.getNode("/dev/smart/y", 1).setValue(220);
|
||||
|
@ -112,41 +180,6 @@ var runtimeTextAdjust = func(text){
|
|||
text.setFontSize(siz);
|
||||
}
|
||||
|
||||
var instrumentUpdate = func(){
|
||||
var currentSpeed = props.getNode("/", 1).getValue("sim/multiplay/generic/float[15]");
|
||||
var currentSpeedKMH = sprintf("%i", currentSpeed*1.852);
|
||||
speedometer.updateText(currentSpeedKMH);
|
||||
if(autospeed.active == 1){
|
||||
speedometer.setColor(0.34, 0.63, 1);
|
||||
}else{
|
||||
speedometer.setColor(1, 1, 1);
|
||||
}
|
||||
power.updateText(sprintf("%i", engine.engine_1.activePower_kW));
|
||||
if(engine.engine_1.direction == 1){
|
||||
gearDisplay.updateText("D");
|
||||
}else if(engine.engine_1.direction == -1){
|
||||
gearDisplay.updateText("R");
|
||||
}
|
||||
if(engine.engine_1.mode == 1){
|
||||
driveMode.updateText("Performance");
|
||||
}else if(engine.engine_1.mode == 0.65){
|
||||
driveMode.updateText("Comfort");
|
||||
}else if(engine.engine_1.mode == 0.4){
|
||||
driveMode.updateText("Low Power");
|
||||
}
|
||||
|
||||
var tempC = props.getNode("/", 1).getValue("environment/temperature-degc");
|
||||
tempDisplay.updateText(sprintf("%0.1f", tempC)~" °C");
|
||||
var hour = props.getNode("/", 1).getValue("sim/time/real/hour");
|
||||
var minute = props.getNode("/", 1).getValue("sim/time/real/minute");
|
||||
if(minute < 10) minute = "0"~minute;
|
||||
timeDisplay.updateText(hour~":"~minute);
|
||||
#runtimeTextAdjust(timeDisplay);
|
||||
}
|
||||
|
||||
var updateTimer = maketimer(0.1, func instrumentUpdate());
|
||||
updateTimer.start();
|
||||
|
||||
|
||||
var window = canvas.Window.new([756,368],"dialog");
|
||||
window.setCanvas(smartInstruments);
|
||||
window.setCanvas(smartInstruments.instrumentCanvas);
|
||||
|
|
|
@ -239,6 +239,7 @@ var startEngine = func(my_engine){
|
|||
if(signal){
|
||||
print("Engine started");
|
||||
followme.safety.init();
|
||||
smartInstruments.smartInstruments.startUp();
|
||||
#//followme.safety.enableFrontRadar();
|
||||
if(props.getNode("systems/welcome-message", 1).getValue() == 1){
|
||||
props.getNode("/sim/messages/copilot", 1).setValue("Beijing di san tsui jiao tong wei ti xing nin, Dao lu tsian wan tiao, ann tsuan di yi tiao, xing che bull gui fun, tsin ren liang hang lei");
|
||||
|
|
Loading…
Reference in New Issue