Add inter-processor signalling to automate entire launch process.
This commit is contained in:
parent
6be96ebf8a
commit
9623a4a869
|
@ -4,11 +4,13 @@
|
|||
// to the main ship computer.
|
||||
//
|
||||
// The launchpad object should have the "launchpad" tag.
|
||||
// The ship's main CPU (the one with launch functionality" should be tagged "shipcpu".
|
||||
// Fuel tanks with the "nofuel" tag will have *all* resources temporarily disabled during this
|
||||
// sequence. The main ship computer must re-enable them after staging. NoFuelResources in lib/systems is ideal
|
||||
// for this.
|
||||
|
||||
RunOncePath("/lib/systems").
|
||||
RunOncePath("/lib/ui").
|
||||
|
||||
ClearGuis().
|
||||
|
||||
|
@ -28,21 +30,31 @@ function enableLaunchpadFlow {
|
|||
}
|
||||
|
||||
function preLaunch {
|
||||
parameter options.
|
||||
|
||||
print "Beginning pre-launch sequence.".
|
||||
NoFuelResources(false).
|
||||
|
||||
// turn on generator and fuel flow
|
||||
enableLaunchpadFlow().
|
||||
|
||||
local duration is options["Spool-up Time"]:TEXT:ToNumber().
|
||||
lock THROTTLE to 0.
|
||||
stage.
|
||||
local startTime is TIME:SECONDS.
|
||||
lock THROTTLE to (TIME:SECONDS-startTime)/15.
|
||||
wait 15.
|
||||
lock THROTTLE to (TIME:SECONDS-startTime)/duration.
|
||||
wait duration.
|
||||
set SHIP:CONTROL:PILOTMAINTHROTTLE to 1.0.
|
||||
unlock THROTTLE.
|
||||
|
||||
print "Pre-launch sequence complete.".
|
||||
print "Pre-launch sequence complete. Initiating launch.".
|
||||
|
||||
local msg is Lex(
|
||||
"command", "launch",
|
||||
"angle", options["Kick Angle"]:TEXT:ToNumber(),
|
||||
"time", options["Kick Time"]:TEXT:ToNumber()
|
||||
).
|
||||
Processor("shipcpu"):CONNECTION:SendMessage(msg).
|
||||
iface:Hide().
|
||||
shutdown.
|
||||
}
|
||||
|
@ -51,8 +63,20 @@ global iface is gui(250, 300).
|
|||
set iface:X to 200.
|
||||
set iface:Y to 500.
|
||||
local top is iface:AddVLayout().
|
||||
local row is iface:AddHLayout().
|
||||
local stk is iface:AddStack().
|
||||
|
||||
MakeMenu(
|
||||
stk,
|
||||
MakeButton(row, "Launch Sequence"),
|
||||
List(
|
||||
List("Spool-up Time", "SCALAR", "15"),
|
||||
List("Kick Angle", "SCALAR", "30"),
|
||||
List("Kick Time", "SCALAR", "45")
|
||||
),
|
||||
"Execute",
|
||||
preLaunch@
|
||||
).
|
||||
|
||||
local btn is top:AddButton("Pre-Launch").
|
||||
set btn:onClick to preLaunch@.
|
||||
iface:Show().
|
||||
wait until false.
|
||||
|
|
|
@ -172,6 +172,25 @@ MakeMenu(
|
|||
).
|
||||
|
||||
iface:show().
|
||||
|
||||
until SHIP:STATUS <> "PRELAUNCH" {
|
||||
if not CORE:MESSAGES:EMPTY {
|
||||
local msg is CORE:MESSAGES:Pop().
|
||||
local data is msg:CONTENT.
|
||||
if data["command"] = "launch" {
|
||||
Launch(
|
||||
80000,
|
||||
2.0,
|
||||
5.0,
|
||||
data["angle"],
|
||||
data["time"],
|
||||
true
|
||||
).
|
||||
}
|
||||
}
|
||||
wait 0.001.
|
||||
}
|
||||
|
||||
wait until false.
|
||||
|
||||
function refreshSensors {
|
||||
|
|
Loading…
Reference in New Issue
Block a user