Improve launch sequence, add some control buttons to rocket program.

This commit is contained in:
2021-09-13 23:51:18 -04:00
parent 9b034aaa1a
commit 6830f23613
4 changed files with 88 additions and 19 deletions

@ -3,11 +3,14 @@
// stages, spools up the engines, and then "releases control"
// to the main ship computer.
//
// *** TAGGING REQUIREMENTS ***
// 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
// Fuel tanks with the "nofuel" tag will have *all* resources temporarily disabled during the pre-launch
// sequence. The main ship computer must re-enable them after staging. NoFuelResources() in lib/systems is ideal
// for this.
// Similarly, any crossfeed-capable decouplers tagged "prelaunch" will have crossfeed ENABLED during pre-launch.
// MainCPU should, again, disable these once it stages. PreLaunchCrossfeed() in lib/systems is your friend.
RunOncePath("/lib/systems").
RunOncePath("/lib/ui").
@ -35,6 +38,7 @@ function preLaunch {
print "Beginning pre-launch sequence.".
NoFuelResources(false).
PreLaunchCrossfeed(true).
// turn on generator and fuel flow
enableLaunchpadFlow().
@ -56,7 +60,8 @@ function preLaunch {
local msg is Lex(
"command", "launch",
"angle", options["Kick Angle"]:TEXT:ToNumber(),
"time", options["Kick Time"]:TEXT:ToNumber()
"time", options["Kick Time"]:TEXT:ToNumber(),
"start", options["Kick Start"]:TEXT:ToNumber()
).
Processor("shipcpu"):CONNECTION:SendMessage(msg).
iface:Hide().
@ -76,7 +81,8 @@ MakeMenu(
List(
List("Spool-up Time", "SCALAR", "15"),
List("Kick Angle", "SCALAR", "30"),
List("Kick Time", "SCALAR", "45")
List("Kick Time", "SCALAR", "45"),
List("Kick Start", "SCALAR", "100")
),
"Execute",
preLaunch@

@ -20,9 +20,9 @@ on AG9 {
// Top-level menu structure.
local iface is gui(250, 300).
set iface:X to 200.
set iface:Y to 700.
set iface:Y to 750.
local top is iface:AddVLayout().
local rows is list(MakeRow(top), MakeRow(top), MakeRow(top)).
local rows is list(MakeRow(top), MakeRow(top), MakeRow(top), MakeRow(top)).
local stk is iface:AddStack().
// Buttons and menus.
@ -95,8 +95,9 @@ MakeMenu(
MakeButton(rows[2], "Launch"),
List(
List("Target Apoapsis", "SCALAR", "80000"),
List("Initial Pitch", "SCALAR", "30"),
List("Pitch Time", "SCALAR", "45"),
List("Kick Angle", "SCALAR", "30"),
List("Kick Time", "SCALAR", "45"),
List("Kick Start", "SCALAR", "100"),
List("Atmo TWR", "SCALAR", "2.0"),
List("Minimum Pitch", "SCALAR", "5"),
List("Autostage", "BOOL", true)
@ -108,8 +109,9 @@ MakeMenu(
options["Target Apoapsis"]:TEXT:ToNumber(),
options["Atmo TWR"]:TEXT:ToNumber(),
options["Minimum Pitch"]:TEXT:ToNumber(),
options["Initial Pitch"]:TEXT:ToNumber(),
options["Pitch Time"]:TEXT:ToNumber(),
options["Kick Angle"]:TEXT:ToNumber(),
options["Kick Time"]:TEXT:ToNumber(),
options["Kick Start"]:TEXT:ToNumber(),
options["Autostage"]:PRESSED
).
}
@ -171,6 +173,50 @@ MakeMenu(
}
).
MakeButton(
rows[3],
"Pro",
{
set done to false.
lock STEERING to SHIP:PROGRADE.
wait until done.
set done to false.
}
).
MakeButton(
rows[3],
"Ret",
{
set done to false.
lock STEERING to SHIP:RETROGRADE.
wait until done.
set done to false.
}
).
MakeButton(
rows[3],
"Srf Pro",
{
set done to false.
lock STEERING to SHIP:SRFPROGRADE.
wait until done.
set done to false.
}
).
MakeButton(
rows[3],
"Srf Ret",
{
set done to false.
lock STEERING to SHIP:SRFRETROGRADE.
wait until done.
set done to false.
}
).
iface:show().
until SHIP:STATUS <> "PRELAUNCH" {
@ -184,6 +230,7 @@ until SHIP:STATUS <> "PRELAUNCH" {
5.0,
data["angle"],
data["time"],
data["start"],
true
).
}