runoncepath("/lib/navigation"). runoncepath("/lib/throttle"). runoncepath("/lib/stabilize_rocket"). clearguis(). global done is false. on AG9 { set done to true. return true. } function launchButtonPressed { run "/launch"( targetApo:TEXT:ToNumber(), gravTurnStart:TEXT:ToNumber(), gravPitch:TEXT:ToNumber(), initialPitch:TEXT:ToNumber(), minimumPitch:TEXT:ToNumber() ). } // Main UI. local interface is gui(250, 300). set interface:X to 200. set interface:Y to 700. // Main menu elements in here. local y is interface:AddVLayout(). local x is y:AddHLayout(). local btn is x:AddButton("TERM"). set btn:TOGGLE to true. set btn:ONTOGGLE to { parameter activate. if activate { CORE:PART:GETMODULE("kOSProcessor"):DOEVENT("Open Terminal"). } else { CORE:PART:GETMODULE("kOSProcessor"):DOEVENT("Close Terminal"). } }. set x:AddButton("CONF"):onClick to { stk:ShowOnly(confMenu). }. set x to y:AddHLayout(). set x:AddButton("HOVER"):onClick to { Hover(). }. set x:AddButton("LAND"):onClick to { Land(). }. set x to y:AddHLayout(). set x:AddButton("LNCH"):onClick to { stk:ShowOnly(launchmenu). }. set x:AddButton("NODE"):onClick to { set nodeDV:TEXT to NEXTNODE:DELTAV:MAG:ToString. set nodeBT:TEXT to BurnTime(NEXTNODE:DELTAV:MAG):ToString. stk:ShowOnly(nodeMenu). }. set x:AddButton("TWR"):onClick to { stk:ShowOnly(twrMenu). }. local stk is interface:AddStack(). // Build launch menu local launchMenu is stk:AddVLayout(). local launchConfig is launchMenu:AddScrollBox(). set sbox to launchConfig:AddHLayout(). sbox:AddLabel("Target Apoapsis"). local targetApo is sbox:AddTextField("80000"). set sbox to launchConfig:AddHLayout(). sbox:AddLabel("Atmo TWR"). local targetTWR is sbox:AddTextField("1.6"). set sbox to launchConfig:AddHLayout(). sbox:AddLabel("Initial Pitch"). local initialPitch is sBox:AddTextField("85"). set sbox to launchConfig:AddHLayout(). sbox:AddLabel("Minimum Pitch"). local minimumPitch is sbox:AddTextField("5"). set sbox to launchConfig:AddHLayout(). sbox:AddLabel("Gravity Turn Alt"). local gravTurnStart is sbox:AddTextField("8000"). set sbox to launchConfig:AddHLayout(). sbox:AddLabel("Gravity Turn Pitch"). local gravPitch is sbox:AddTextField("75"). set btn to launchMenu:AddButton("Execute"). set btn:onClick to launchButtonPressed@. // End Launch Menu // Build conf menu local confMenu is stk:AddVLayout(). local confBox is confMenu:AddScrollbox(). set sbox to confBox:AddHLayout(). sbox:AddLabel("Torque Epsilon Max"). local maxEpsilon is sbox:AddTextField("0.001"). set sbox to confBox:AddHLayout(). sbox:AddLabel("Max Stopping Time"). local maxStopTime is sbox:AddTextField("2.0"). set btn to confMenu:AddButton("Apply"). set btn:onClick to { set STEERINGMANAGER:TORQUEEPSILONMAX to maxEpsilon:TEXT:ToNumber(). set STEERINGMANAGER:MAXSTOPPINGTIME to maxStopTime:TEXT:ToNumber(). }. // end conf menu // twr menu local twrMenu is stk:AddVLayout(). set sbox to twrMenu:AddHLayout(). sbox:AddLabel("Target TWR"). local twrLock is sbox:AddTextField("1.6"). set twrMenu:AddButton("Lock TWR"):onClick to { local done is false. on AG9 { set done to true. } print "Locking throttle to target TWR.". local tgt is twrLock:TEXT:ToNumber(). lock THROTTLE to ThrottleToTWR(tgt). wait until done. print "Throttle unlocked.". }. // end twr menu // node menu local nodeMenu is stk:AddVLayout(). local nodeBox is nodeMenu:AddScrollBox(). set sbox to nodeBox:AddHLayout(). sbox:AddLabel("Node dV"). local nodeDV is sbox:AddLabel(). set sbox to nodeBox:AddHLayout(). sbox:AddLabel("Node Burn Time"). local nodeBT is sbox:AddLabel(). set nodeMenu:AddButton("Execute"):onClick to { run "/execnode". }. // end node menu interface:show(). wait until false.