Type II messages
This commit is contained in:
parent
bbb8c3aaeb
commit
7291df73f3
2 changed files with 65 additions and 15 deletions
|
@ -2,10 +2,11 @@
|
||||||
# Copyright (c) 2020 Josh Davidson (Octal450) and Jonathan Redpath (legoboyvdlp)
|
# Copyright (c) 2020 Josh Davidson (Octal450) and Jonathan Redpath (legoboyvdlp)
|
||||||
|
|
||||||
var TypeIMessage = {
|
var TypeIMessage = {
|
||||||
new: func(msgText) {
|
new: func(msgText, isInhibit = 0) {
|
||||||
var msg = { parents: [TypeIMessage] };
|
var msg = { parents: [TypeIMessage] };
|
||||||
msg.msgText = msgText;
|
msg.msgText = msgText;
|
||||||
msg.colour = "wht";
|
msg.colour = "wht";
|
||||||
|
msg.inhibitable = isInhibit;
|
||||||
return msg;
|
return msg;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -21,27 +22,43 @@ var TypeIIMessage = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var MessageQueueController = {
|
var MessageQueueController = {
|
||||||
new: func() {
|
new: func(computer) {
|
||||||
var msgC = { parents: [MessageQueueController] };
|
var msgC = { parents: [MessageQueueController] };
|
||||||
|
msgC.computer = computer;
|
||||||
|
msgC.messages = std.Vector.new(); # show left to right
|
||||||
return msgC;
|
return msgC;
|
||||||
},
|
},
|
||||||
messages: std.Vector.new(), # show left to right
|
|
||||||
# first in first out
|
# first in first out
|
||||||
addNewMsg: func(msg) {
|
addNewMsg: func(msg) {
|
||||||
if (me.messages.size() < 5) {
|
if (me.messages.size() < 5) {
|
||||||
if (!me.messages.contains(msg)) {
|
if (!me.messages.contains(msg)) {
|
||||||
me.messages.append(x);
|
me.messages.append(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getNextMsg: func() {
|
getNextMsg: func() {
|
||||||
if (me.messages.size() >= 1) {
|
if (me.messages.size() >= 1) {
|
||||||
me.messages.pop(0);
|
return me.messages.vector[0];
|
||||||
|
}
|
||||||
|
return nil;
|
||||||
|
},
|
||||||
|
deleteAtIndex: func(index) {
|
||||||
|
if (num(me.messages.size()) >= (index + 1)) {
|
||||||
|
me.messages.pop(index);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
clearQueue: func() {
|
clearQueue: func() {
|
||||||
me.messages.clear();
|
me.messages.clear();
|
||||||
},
|
},
|
||||||
|
loop: func() {
|
||||||
|
if (me.getNextMsg() != nil) {
|
||||||
|
if (!scratchpads[me.computer].showTypeIIMsg) {
|
||||||
|
if (scratchpads[me.computer].showTypeII(me.getNextMsg())) {
|
||||||
|
me.deleteAtIndex(me.getNextMsg());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
var scratchpadController = {
|
var scratchpadController = {
|
||||||
|
@ -72,6 +89,7 @@ var scratchpadController = {
|
||||||
}
|
}
|
||||||
|
|
||||||
me.scratchpad = me.scratchpad ~ character;
|
me.scratchpad = me.scratchpad ~ character;
|
||||||
|
me.scratchpadColour = "wht";
|
||||||
me.update();
|
me.update();
|
||||||
},
|
},
|
||||||
showTypeI: func(msg) {
|
showTypeI: func(msg) {
|
||||||
|
@ -80,23 +98,28 @@ var scratchpadController = {
|
||||||
me.clearTypeII();
|
me.clearTypeII();
|
||||||
}
|
}
|
||||||
|
|
||||||
me.showTypeIMsg = 1;
|
if (!me.showTypeIMsg) {
|
||||||
|
me.showTypeIMsg = 1;
|
||||||
# save any data entered
|
|
||||||
me.scratchpadSave = me.scratchpad;
|
# save any data entered
|
||||||
|
me.scratchpadSave = me.scratchpad;
|
||||||
|
}
|
||||||
|
|
||||||
me.scratchpad = msg.msgText;
|
me.scratchpad = msg.msgText;
|
||||||
me.scratchpadColour = msg.colour;
|
me.scratchpadColour = msg.colour;
|
||||||
me.update();
|
me.update();
|
||||||
},
|
},
|
||||||
showTypeII: func(msg) {
|
showTypeII: func(msg) {
|
||||||
# only show if scratchpad empty
|
# only show if scratchpad empty
|
||||||
if (me.scratchpad = "") {
|
if (me.scratchpad == "") {
|
||||||
me.showTypeIIMsg = 1;
|
me.showTypeIIMsg = 1;
|
||||||
me.scratchpad = msg.msgText;
|
me.scratchpad = msg.msgText;
|
||||||
me.scratchpadColour = msg.colour;
|
me.scratchpadColour = msg.colour;
|
||||||
|
me.update();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
me.update();
|
me.update();
|
||||||
|
return 0;
|
||||||
},
|
},
|
||||||
clearTypeI: func() {
|
clearTypeI: func() {
|
||||||
me.scratchpad = me.scratchpadSave;
|
me.scratchpad = me.scratchpadSave;
|
||||||
|
@ -146,11 +169,12 @@ var MessageController = {
|
||||||
TypeIMessage.new("ENTRY OUT OF RANGE"),TypeIMessage.new("FORMAT ERROR"),TypeIMessage.new("INSERT/ERASE TMPY FIRST"),
|
TypeIMessage.new("ENTRY OUT OF RANGE"),TypeIMessage.new("FORMAT ERROR"),TypeIMessage.new("INSERT/ERASE TMPY FIRST"),
|
||||||
TypeIMessage.new("LIST OF 20 IN USE"),TypeIMessage.new("PILOT ELEMENT RETAINED"),TypeIMessage.new("NOT ALLOWED"),
|
TypeIMessage.new("LIST OF 20 IN USE"),TypeIMessage.new("PILOT ELEMENT RETAINED"),TypeIMessage.new("NOT ALLOWED"),
|
||||||
TypeIMessage.new("NOT IN DATA BASE"),TypeIMessage.new("ONLY SPD ENTRY ALLOWED"),TypeIMessage.new("REVISION IN PROGRESS"),
|
TypeIMessage.new("NOT IN DATA BASE"),TypeIMessage.new("ONLY SPD ENTRY ALLOWED"),TypeIMessage.new("REVISION IN PROGRESS"),
|
||||||
TypeIMessage.new("TMPY F-PLN EXISTS"),TypeIMessage.new("SELECT DESIRED SYSTEM"),TypeIMessage.new("SELECT HDG/TRK FIRST"),
|
TypeIMessage.new("TMPY F-PLN EXISTS", 1),TypeIMessage.new("SELECT DESIRED SYSTEM"),TypeIMessage.new("SELECT HDG/TRK FIRST"),
|
||||||
TypeIMessage.new("USING COST INDEX N"),TypeIMessage.new("WAIT FOR SYSTEM RESPONSE"),
|
TypeIMessage.new("USING COST INDEX N", 1),TypeIMessage.new("WAIT FOR SYSTEM RESPONSE"),
|
||||||
]),
|
]),
|
||||||
typeIIMessages: std.Vector.new([
|
typeIIMessages: std.Vector.new([
|
||||||
|
TypeIIMessage.new("LAT DISCONT AHEAD", "amb", 0),TypeIIMessage.new("MORE DRAG"),TypeIIMessage.new("RWY/LS MISMATCH", "amb", 0),TypeIIMessage.new("STEP DELETED"),
|
||||||
|
TypeIIMessage.new("STEP NOW"),TypeIIMessage.new("TIME TO EXIT", "amb", 0),
|
||||||
]),
|
]),
|
||||||
|
|
||||||
getTypeIMsgByText: func(text) {
|
getTypeIMsgByText: func(text) {
|
||||||
|
@ -169,4 +193,28 @@ var MessageController = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
var scratchpads = [scratchpadController.new(1), scratchpadController.new(2)];
|
var scratchpads = [scratchpadController.new(1), scratchpadController.new(2)];
|
||||||
|
var messageQueues = [MessageQueueController.new(0), MessageQueueController.new(1)];
|
||||||
|
|
||||||
|
var loop1MsgTimer = func() {
|
||||||
|
if (messageQueues[0].getNextMsg() != nil) {
|
||||||
|
if (!scratchpads[messageQueues[0].computer].showTypeIIMsg) {
|
||||||
|
if (scratchpads[messageQueues[0].computer].showTypeII(messageQueues[0].getNextMsg())) {
|
||||||
|
messageQueues[0].deleteAtIndex(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var loop2MsgTimer = func() {
|
||||||
|
if (messageQueues[1].getNextMsg() != nil) {
|
||||||
|
if (!scratchpads[messageQueues[1].computer].showTypeIIMsg) {
|
||||||
|
if (scratchpads[messageQueues[1].computer].showTypeII(messageQueues[1].getNextMsg())) {
|
||||||
|
messageQueues[1].deleteAtIndex(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var mcduMsgtimer1 = maketimer(1, loop1MsgTimer);
|
||||||
|
var mcduMsgtimer2 = maketimer(1, loop2MsgTimer);
|
|
@ -212,6 +212,8 @@ var systemsInit = func {
|
||||||
fmgc.FMGCinit();
|
fmgc.FMGCinit();
|
||||||
mcdu.MCDU_init(0);
|
mcdu.MCDU_init(0);
|
||||||
mcdu.MCDU_init(1);
|
mcdu.MCDU_init(1);
|
||||||
|
mcdu_scratchpad.mcduMsgtimer1.start();
|
||||||
|
mcdu_scratchpad.mcduMsgtimer2.start();
|
||||||
systemsLoop.start();
|
systemsLoop.start();
|
||||||
lightsLoop.start();
|
lightsLoop.start();
|
||||||
ecam.ECAM.init();
|
ecam.ECAM.init();
|
||||||
|
|
Loading…
Reference in a new issue