Add launchpad code for controlling pre-launch sequence with ModularLaunchpads. (this is 100% aesthetic but it's really pretty)
This commit is contained in:
parent
4c356b61ab
commit
6be96ebf8a
10
boot/launchpad.ks
Normal file
10
boot/launchpad.ks
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
RunOncePath("0:/lib/boot").
|
||||||
|
|
||||||
|
parameter debug is false.
|
||||||
|
|
||||||
|
Bootstrap(
|
||||||
|
"/boot/launchpad",
|
||||||
|
"/prog/launchpad",
|
||||||
|
List(),
|
||||||
|
debug
|
||||||
|
).
|
|
@ -35,6 +35,8 @@ function Launch {
|
||||||
parameter pitchTime is 30.
|
parameter pitchTime is 30.
|
||||||
parameter autoStage is true.
|
parameter autoStage is true.
|
||||||
|
|
||||||
|
NoFuelResources(true).
|
||||||
|
|
||||||
// Configure subsystems.
|
// Configure subsystems.
|
||||||
RCS off.
|
RCS off.
|
||||||
SAS off.
|
SAS off.
|
||||||
|
|
|
@ -23,3 +23,13 @@ function SolarPanels {
|
||||||
PANELS off.
|
PANELS off.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function NoFuelResources {
|
||||||
|
parameter enable is true.
|
||||||
|
|
||||||
|
for part in SHIP:PartsTagged("nofuel") {
|
||||||
|
for resource in part:RESOURCES {
|
||||||
|
set resource:ENABLED to enable.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
58
prog/launchpad.ks
Normal file
58
prog/launchpad.ks
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
// Control code for pre-launch sequence using ModularLaunchPads.
|
||||||
|
// This enable's the launchpad's fuel feed,
|
||||||
|
// stages, spools up the engines, and then "releases control"
|
||||||
|
// to the main ship computer.
|
||||||
|
//
|
||||||
|
// The launchpad object should have the "launchpad" tag.
|
||||||
|
// 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").
|
||||||
|
|
||||||
|
ClearGuis().
|
||||||
|
|
||||||
|
function enableLaunchpadFlow {
|
||||||
|
local lp is SHIP:PartsTagged("launchpad")[0].
|
||||||
|
// ModularLaunchpads have more than one module with the "ModuleGenerator" name, so we have to
|
||||||
|
// iterate over them all.
|
||||||
|
local i is 0.
|
||||||
|
until i >= lp:ALLMODULES:LENGTH {
|
||||||
|
local m is lp:GetModuleByIndex(i).
|
||||||
|
if m:NAME = "ModuleGenerator" {
|
||||||
|
if m:HasEvent("activate generator") { m:DoEvent("activate generator"). }
|
||||||
|
if m:HasEvent("start fueling") { m:DoEvent("start fueling"). }
|
||||||
|
}
|
||||||
|
set i to i+1.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function preLaunch {
|
||||||
|
print "Beginning pre-launch sequence.".
|
||||||
|
NoFuelResources(false).
|
||||||
|
|
||||||
|
// turn on generator and fuel flow
|
||||||
|
enableLaunchpadFlow().
|
||||||
|
|
||||||
|
lock THROTTLE to 0.
|
||||||
|
stage.
|
||||||
|
local startTime is TIME:SECONDS.
|
||||||
|
lock THROTTLE to (TIME:SECONDS-startTime)/15.
|
||||||
|
wait 15.
|
||||||
|
set SHIP:CONTROL:PILOTMAINTHROTTLE to 1.0.
|
||||||
|
unlock THROTTLE.
|
||||||
|
|
||||||
|
print "Pre-launch sequence complete.".
|
||||||
|
iface:Hide().
|
||||||
|
shutdown.
|
||||||
|
}
|
||||||
|
|
||||||
|
global iface is gui(250, 300).
|
||||||
|
set iface:X to 200.
|
||||||
|
set iface:Y to 500.
|
||||||
|
local top is iface:AddVLayout().
|
||||||
|
|
||||||
|
local btn is top:AddButton("Pre-Launch").
|
||||||
|
set btn:onClick to preLaunch@.
|
||||||
|
iface:Show().
|
||||||
|
wait until false.
|
Loading…
Reference in New Issue
Block a user