1
0
Fork 0

Type II messages

This commit is contained in:
legoboyvdlp R 2020-05-25 18:56:13 +01:00
parent bbb8c3aaeb
commit 7291df73f3
2 changed files with 65 additions and 15 deletions

View file

@ -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);

View file

@ -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();