Merge remote-tracking branch 'origin/MC1.7' into MC1.10
This commit is contained in:
commit
d3b9c45e9e
18 changed files with 690 additions and 336 deletions
165
gradlew
vendored
165
gradlew
vendored
File diff suppressed because one or more lines are too long
|
@ -7,18 +7,19 @@ import java.util.HashMap;
|
|||
|
||||
public enum EnumStarMapEntryType implements IStringSerializable {
|
||||
|
||||
UNDEFINED (0, "-undefined-"),
|
||||
SHIP (1, "ship" ), // a ship core
|
||||
JUMPGATE (2, "jumpgate" ), // a jump gate
|
||||
PLANET (3, "planet" ), // a planet (a transition plane allowing to move to another dimension)
|
||||
STAR (4, "star" ), // a star
|
||||
STRUCTURE (5, "structure" ), // a structure from WorldGeneration (moon, asteroid field, etc.)
|
||||
WARP_ECHO (6, "warp_echo" ), // remains of a warp
|
||||
ACCELERATOR(7, "accelerator"), // an accelerator setup
|
||||
TRANSPORTER(8, "transporter"); // a transporter room
|
||||
UNDEFINED (0, "-undefined-", true ),
|
||||
SHIP (1, "ship" , true ), // a ship core
|
||||
JUMPGATE (2, "jumpgate" , true ), // a jump gate
|
||||
PLANET (3, "planet" , true ), // a planet (a transition plane allowing to move to another dimension)
|
||||
STAR (4, "star" , true ), // a star
|
||||
STRUCTURE (5, "structure" , true ), // a structure from WorldGeneration (moon, asteroid field, etc.)
|
||||
WARP_ECHO (6, "warp_echo" , true ), // remains of a warp
|
||||
ACCELERATOR(7, "accelerator", false), // an accelerator setup
|
||||
TRANSPORTER(8, "transporter", true ); // a transporter room
|
||||
|
||||
private final int id;
|
||||
private final String name;
|
||||
private final boolean hasRadarEcho;
|
||||
|
||||
// cached values
|
||||
public static final int length;
|
||||
|
@ -31,9 +32,10 @@ public enum EnumStarMapEntryType implements IStringSerializable {
|
|||
}
|
||||
}
|
||||
|
||||
EnumStarMapEntryType(final int id, final String name) {
|
||||
EnumStarMapEntryType(final int id, final String name, final boolean hasRadarEcho) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.hasRadarEcho = hasRadarEcho;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
|
@ -49,4 +51,8 @@ public enum EnumStarMapEntryType implements IStringSerializable {
|
|||
public static EnumStarMapEntryType getByName(final String name) {
|
||||
return mapNames.get(name);
|
||||
}
|
||||
|
||||
public boolean hasRadarEcho() {
|
||||
return hasRadarEcho;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -304,7 +304,7 @@ public class StarMapRegistry {
|
|||
final int radius2 = radius * radius;
|
||||
for (final Map.Entry<Integer, CopyOnWriteArraySet<StarMapRegistryItem>> entryDimension : registry.entrySet()) {
|
||||
for (final StarMapRegistryItem starMapRegistryItem : entryDimension.getValue()) {
|
||||
if (starMapRegistryItem.type == EnumStarMapEntryType.ACCELERATOR) {
|
||||
if (!starMapRegistryItem.type.hasRadarEcho()) {
|
||||
continue;
|
||||
}
|
||||
final Vector3 vectorItem = starMapRegistryItem.getUniversalCoordinates(tileEntity.getWorld().isRemote);
|
||||
|
|
|
@ -27,6 +27,7 @@ local styles = {
|
|||
good = { front = colors.lime , back = colors.lightGray },
|
||||
bad = { front = colors.red , back = colors.lightGray },
|
||||
disabled = { front = colors.gray , back = colors.lightGray },
|
||||
help = { front = colors.white , back = colors.blue },
|
||||
header = { front = colors.orange , back = colors.black },
|
||||
control = { front = colors.white , back = colors.blue },
|
||||
selected = { front = colors.black , back = colors.lightBlue },
|
||||
|
@ -415,8 +416,8 @@ local function input_readInteger(currentValue)
|
|||
term.setCursorBlink(true)
|
||||
repeat
|
||||
w.status_tick()
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(x, y)
|
||||
w.setColorNormal()
|
||||
w.write(input .. " ")
|
||||
input = string.sub(input, -9)
|
||||
w.setCursorPos(x + #input, y)
|
||||
|
@ -519,8 +520,8 @@ local function input_readText(currentValue)
|
|||
repeat
|
||||
w.status_tick()
|
||||
-- update display clearing extra characters
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(x, y)
|
||||
w.setColorNormal()
|
||||
w.write(w.format_string(input, 37))
|
||||
-- truncate input and set caret position
|
||||
input = string.sub(input, -36)
|
||||
|
@ -637,8 +638,8 @@ local function input_readEnum(currentValue, list, toValue, toDescription, noValu
|
|||
term.setCursorBlink(true)
|
||||
repeat
|
||||
w.status_tick()
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(x, y)
|
||||
w.setColorNormal()
|
||||
if #list == 0 then
|
||||
inputKey = nil
|
||||
end
|
||||
|
@ -662,8 +663,8 @@ local function input_readEnum(currentValue, list, toValue, toDescription, noValu
|
|||
end
|
||||
w.setColorNormal()
|
||||
w.write(input .. " ")
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, y + 1)
|
||||
w.setColorDisabled()
|
||||
w.write(inputDescription .. " ")
|
||||
|
||||
local params = { os.pullEventRaw() }
|
||||
|
@ -923,7 +924,11 @@ local function data_setName()
|
|||
|
||||
-- ask for a new name
|
||||
w.page_begin("<==== Set " .. component .. " name ====>")
|
||||
w.writeLn("")
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.write("Enter " .. component .. " name: ")
|
||||
data_name = w.input_readText(data_name)
|
||||
|
||||
|
|
|
@ -47,14 +47,14 @@ function lhc_boot(isDetailed)
|
|||
lhc_controlChannels[controlChannel] = "true"
|
||||
countParameters = countParameters + 1
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("Error " .. x)
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.sleep(0.5)
|
||||
end
|
||||
end
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("No control point detected!")
|
||||
w.sleep(0.5)
|
||||
end
|
||||
|
@ -85,24 +85,24 @@ function lhc_boot(isDetailed)
|
|||
lhc_parameters[index] = { controlChannel, isEnabled, threshold, description }
|
||||
index = index + 1
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
if controlChannelCheck ~= nil then
|
||||
w.writeLn("Error " .. controlChannelCheck)
|
||||
else
|
||||
w.writeLn("Error nil?")
|
||||
end
|
||||
w.sleep(0.5)
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
end
|
||||
if controlChannel ~= controlChannelCheck and isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("Error: requested " .. controlChannel .. ", received " .. controlChannelCheck)
|
||||
w.sleep(0.5)
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
end
|
||||
end
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("No control channel detected!")
|
||||
w.sleep(0.5)
|
||||
end
|
||||
|
@ -127,18 +127,42 @@ function lhc_page_parameter()
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
w.writeLn("")
|
||||
|
||||
local _, y = w.getCursorPos()
|
||||
-- description
|
||||
w.setCursorPos(1, y + 3)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
|
||||
w.setCursorPos(1, y)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Current description is '" .. description .. "'")
|
||||
w.write("Enter a description: ")
|
||||
description = w.input_readText(description)
|
||||
|
||||
w.writeLn("")
|
||||
w.setCursorPos(1, y + 3)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- threshold
|
||||
w.setCursorPos(1, y + 7)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
|
||||
w.setCursorPos(1, y + 4)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Current threshold is " .. w.format_integer(threshold * 100) .. "%")
|
||||
w.write("Enter parameter threshold: ")
|
||||
local new_threshold = w.input_readInteger(threshold * 100) / 100
|
||||
threshold = math.min(2.0, math.max(0.0, new_threshold))
|
||||
lhc_parameters[indexSelected] = { controlChannel, isEnabled, threshold, description }
|
||||
accelerator.parameter(controlChannel, isEnabled, threshold, description)
|
||||
|
||||
w.setCursorPos(1, y + 7)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
end
|
||||
|
||||
lhc_parameter_indexSelected = 1
|
||||
|
@ -212,45 +236,45 @@ function lhc_page()
|
|||
|
||||
w.write(" Controller is ")
|
||||
if isEnabled then
|
||||
w.setColorGood();
|
||||
w.setColorGood()
|
||||
w.writeLn("Enabled")
|
||||
else
|
||||
w.setColorBad();
|
||||
w.setColorBad()
|
||||
w.writeLn("Disabled")
|
||||
end
|
||||
|
||||
local energy, energyMax = accelerator.energy()
|
||||
if energy == nil then energy = 0 end
|
||||
if energyMax == nil or energyMax == 0 then energyMax = 1 end
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.write(" Energy level is ")
|
||||
if isPowered then
|
||||
w.setColorGood();
|
||||
w.setColorGood()
|
||||
elseif isEnabled then
|
||||
w.setColorBad();
|
||||
w.setColorBad()
|
||||
else
|
||||
w.setColorDisabled();
|
||||
w.setColorDisabled()
|
||||
end
|
||||
w.writeLn(math.floor(energy / energyMax * 100) .. " % (" .. energy .. " EU)")
|
||||
-- w.writeLn("")
|
||||
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.write(" Magnets temperature is ")
|
||||
if temperatureCurrent_K <= temperatureTarget_K then
|
||||
w.setColorGood();
|
||||
w.setColorGood()
|
||||
elseif isEnabled then
|
||||
w.setColorBad();
|
||||
w.setColorBad()
|
||||
else
|
||||
w.setColorDisabled();
|
||||
w.setColorDisabled()
|
||||
end
|
||||
w.write(string.format("%.1f K", math.floor(temperatureCurrent_K * 10) / 10))
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.writeLn(". Target is " .. temperatureTarget_K .. " K")
|
||||
-- w.writeLn("")
|
||||
|
||||
w.write("Parameters: ")
|
||||
if #lhc_parameters == 0 then
|
||||
w.setColorDisabled();
|
||||
w.setColorDisabled()
|
||||
w.writeLn("")
|
||||
w.writeCentered(" -no valid node detected-")
|
||||
else
|
||||
|
|
|
@ -124,29 +124,28 @@ function reactor_page()
|
|||
w.write(w.format_integer(energy[3]) .. " RF/t")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorNormal()
|
||||
w.write("Activated: ")
|
||||
local isEnabled = reactor.enable()
|
||||
if isEnabled then w.setColorSuccess() else w.setColorNormal() end
|
||||
w.write(w.format_boolean(isEnabled, "YES", "no"))
|
||||
end
|
||||
|
||||
w.setCursorPos(30, 2)
|
||||
if #reactorlasers == 0 then
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(30, 2)
|
||||
w.write("Lasers not detected")
|
||||
else
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(30, 2)
|
||||
w.write("Lasers")
|
||||
|
||||
for key, reactorlaser in pairs(reactorlasers) do
|
||||
local side = reactorlaser.side
|
||||
if side ~= nil then
|
||||
side = side % 4
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(4, 3 + side)
|
||||
w.setColorNormal()
|
||||
w.write("Side " .. w.format_integer(side) .. ":")
|
||||
w.setCursorPos(30, 3 + side)
|
||||
local energy = reactorlaser.wrap.energy()
|
||||
|
@ -162,8 +161,8 @@ function reactor_page()
|
|||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
w.setCursorPos(1, 11)
|
||||
w.write("Output mode : ")
|
||||
|
@ -177,14 +176,14 @@ function reactor_page()
|
|||
else
|
||||
w.write("rated at " .. reactor_rate .. " RF")
|
||||
end
|
||||
w.setColorNormal()
|
||||
w.setCursorPos( 1, 12)
|
||||
w.setColorNormal()
|
||||
w.write("Target stability: " .. reactor_targetStability .. "%")
|
||||
w.setCursorPos(30, 12)
|
||||
w.write("Laser amount: " .. reactor_laserAmount)
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Start/stoP reactor (S/P), Use lasers (L)")
|
||||
w.writeFullLine(" Output mode (O), Configuration (C)")
|
||||
w.writeFullLine(" Target stability (+/-), Laser amount (U/J)")
|
||||
|
@ -272,9 +271,9 @@ function reactor_pulse(output)
|
|||
w.write(w.format_float(stability, 5) .. " %")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
local energy = { reactor.energy() }
|
||||
w.setCursorPos(12, 7)
|
||||
w.setColorNormal()
|
||||
if energy[2] ~= nil then
|
||||
w.write(w.format_integer(energy[1], 10))
|
||||
w.setCursorPos(39, 7)
|
||||
|
@ -320,27 +319,50 @@ function reactor_config()
|
|||
w.setColorDisabled()
|
||||
w.write("Reactor not detected")
|
||||
else
|
||||
w.setColorNormal()
|
||||
-- reactor output rate
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a positive number.")
|
||||
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorNormal()
|
||||
w.write("Reactor output rate (" .. w.format_integer(reactor_rate) .. " RF): ")
|
||||
reactor_rate = w.input_readInteger(reactor_rate)
|
||||
reactor_setMode()
|
||||
w.setCursorPos(1, 5)
|
||||
w.write("Reactor output rate set")
|
||||
w.setCursorPos(1, 6)
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- laser amount
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a positive number.")
|
||||
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.write("Laser energy level (" .. w.format_integer(reactor_laserAmount) .. "): ")
|
||||
reactor_laserAmount = w.input_readInteger(reactor_laserAmount)
|
||||
reactor_setLaser()
|
||||
w.setCursorPos(1, 8)
|
||||
w.write("Laser energy level set")
|
||||
w.setCursorPos(1, 9)
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- target stability
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a positive number.")
|
||||
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Reactor target stability (" .. w.format_integer(reactor_targetStability) .. "%): ")
|
||||
reactor_targetStability = w.input_readInteger(reactor_targetStability)
|
||||
reactor_setTargetStability()
|
||||
w.setCursorPos(1, 11)
|
||||
w.write("Reactor target stability set")
|
||||
w.setCursorPos(1, 12)
|
||||
w.writeFullLine(" ")
|
||||
end
|
||||
reactor_configPageLoaded = false
|
||||
end
|
||||
|
|
|
@ -219,18 +219,18 @@ function ffield_projector_page()
|
|||
w.write(" ")
|
||||
end
|
||||
local projector = ffield_projector_get(indexCurrent)
|
||||
local description = ffield_projector_getDescription(projector);
|
||||
local description = ffield_projector_getDescription(projector)
|
||||
w.write(description)
|
||||
w.writeLn("")
|
||||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 15)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Start/stoP all force field projectors (S/P)")
|
||||
w.writeFullLine(" Configure (C) or togglE (E) selected projector")
|
||||
w.writeFullLine(" select force field projector (Up, Down)")
|
||||
|
@ -243,14 +243,17 @@ function ffield_projector_config()
|
|||
end
|
||||
w.page_begin(w.data_getName() .. " - Projector configuration")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 2)
|
||||
w.setColorNormal()
|
||||
projector.position.x, projector.position.y, projector.position.z = projector.device.position()
|
||||
w.write("Projector @ " .. w.format_integer(projector.position.x, 7) .. " " .. w.format_integer(projector.position.y, 3) .. " " .. w.format_integer(projector.position.z, 7))
|
||||
|
||||
-- name
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Name (" .. projector.name .. "):")
|
||||
projector.name = w.input_readText(projector.name)
|
||||
w.setCursorPos(1, 3)
|
||||
|
@ -263,12 +266,12 @@ function ffield_projector_config()
|
|||
-- beam frequency
|
||||
projector.beamFrequency = projector.device.beamFrequency()
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorDisabled()
|
||||
w.write(" Valid values are 0 to 65000 ")
|
||||
w.setColorNormal()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 0 and 65000.")
|
||||
local frequency
|
||||
repeat
|
||||
w.setCursorPos(1, 5)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Beam frequency (" .. w.format_integer(projector.beamFrequency, 5) .. "): ")
|
||||
frequency = w.input_readInteger(projector.beamFrequency)
|
||||
|
@ -304,31 +307,30 @@ function ffield_config_xyz(yCursor, title, unit, help, method, factor)
|
|||
z = factor * z
|
||||
w.write(title .. " is currently set to " .. w.format_integer(x, 4) .. unit .. " " .. w.format_integer(y, 4) .. unit .. " " .. w.format_integer(z, 4) .. unit)
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter X " .. help)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, yCursor + 3)
|
||||
w.setColorNormal()
|
||||
w.write(title .. " along X axis (" .. w.format_integer(x) .. "): ")
|
||||
x = w.input_readInteger(x)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter Y " .. help)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, yCursor + 4)
|
||||
w.setColorNormal()
|
||||
w.write(title .. " along Y axis (" .. w.format_integer(y) .. "): ")
|
||||
y = w.input_readInteger(y)
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter Z " .. help)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, yCursor + 5)
|
||||
w.setColorNormal()
|
||||
w.write(title .. " along Z axis (" .. w.format_integer(z) .. "): ")
|
||||
z = w.input_readInteger(z)
|
||||
|
||||
|
@ -339,8 +341,8 @@ function ffield_config_xyz(yCursor, title, unit, help, method, factor)
|
|||
x = factor * x
|
||||
y = factor * y
|
||||
z = factor * z
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, yCursor)
|
||||
w.setColorNormal()
|
||||
w.write(title .. " set to " .. w.format_integer(x, 4) .. unit .. " " .. w.format_integer(y, 4) .. unit .. " " .. w.format_integer(z, 4) .. unit)
|
||||
w.setCursorPos(1, yCursor + 1)
|
||||
w.clearLine()
|
||||
|
@ -467,18 +469,18 @@ function ffield_relay_page()
|
|||
w.write(" ")
|
||||
end
|
||||
local relay = ffield_relay_get(indexCurrent)
|
||||
local description = ffield_relay_getDescription(relay);
|
||||
local description = ffield_relay_getDescription(relay)
|
||||
w.write(description)
|
||||
w.writeLn("")
|
||||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 15)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Start/stoP all force field relays (S/P)")
|
||||
w.writeFullLine(" Configure (C) or togglE (E) selected relay")
|
||||
w.writeFullLine(" select force field relay (Up, Down)")
|
||||
|
@ -491,14 +493,17 @@ function ffield_relay_config()
|
|||
end
|
||||
w.page_begin(w.data_getName() .. " - Relay configuration")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 2)
|
||||
w.setColorNormal()
|
||||
relay.position.x, relay.position.y, relay.position.z = relay.device.position()
|
||||
w.write("Relay @ " .. w.format_integer(relay.position.x, 7) .. " " .. w.format_integer(relay.position.y, 3) .. " " .. w.format_integer(relay.position.z, 7))
|
||||
|
||||
-- name
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Name (" .. relay.name .. "):")
|
||||
relay.name = w.input_readText(relay.name)
|
||||
w.setCursorPos(1, 3)
|
||||
|
@ -511,12 +516,12 @@ function ffield_relay_config()
|
|||
-- beam frequency
|
||||
relay.beamFrequency = relay.device.beamFrequency()
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorDisabled()
|
||||
w.write(" Valid values are 0 to 65000 ")
|
||||
w.setColorNormal()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 0 and 65000.")
|
||||
local frequency
|
||||
repeat
|
||||
w.setCursorPos(1, 5)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Beam frequency (" .. w.format_integer(relay.beamFrequency, 5) .. "): ")
|
||||
frequency = w.input_readInteger(relay.beamFrequency)
|
||||
|
|
|
@ -1548,8 +1548,8 @@ function radar_key(keycode)
|
|||
radar_drawMap()
|
||||
return true
|
||||
elseif keycode == 199 then -- home
|
||||
data.radar_offsetX = 0;
|
||||
data.radar_offsetY = 0;
|
||||
data.radar_offsetX = 0
|
||||
data.radar_offsetY = 0
|
||||
data.radar_scale = 20
|
||||
for i = 0, #data.radar_results - 1 do
|
||||
data.radar_scale = math.max(data.radar_scale, math.max(math.abs(radar_x - data.radar_results[i].x), math.abs(radar_z - data.radar_results[i].z)))
|
||||
|
@ -1559,22 +1559,22 @@ function radar_key(keycode)
|
|||
radar_drawMap()
|
||||
return true
|
||||
elseif keycode == 203 then -- left
|
||||
data.radar_offsetX = data.radar_offsetX - 0.20 * data.radar_scale;
|
||||
data.radar_offsetX = data.radar_offsetX - 0.20 * data.radar_scale
|
||||
data_save()
|
||||
radar_drawMap()
|
||||
return true
|
||||
elseif keycode == 205 then -- right
|
||||
data.radar_offsetX = data.radar_offsetX + 0.20 * data.radar_scale;
|
||||
data.radar_offsetX = data.radar_offsetX + 0.20 * data.radar_scale
|
||||
data_save()
|
||||
radar_drawMap()
|
||||
return true
|
||||
elseif keycode == 200 then -- up
|
||||
data.radar_offsetY = data.radar_offsetY - 0.20 * data.radar_scale;
|
||||
data.radar_offsetY = data.radar_offsetY - 0.20 * data.radar_scale
|
||||
data_save()
|
||||
radar_drawMap()
|
||||
return true
|
||||
elseif keycode == 208 then -- down
|
||||
data.radar_offsetY = data.radar_offsetY + 0.20 * data.radar_scale;
|
||||
data.radar_offsetY = data.radar_offsetY + 0.20 * data.radar_scale
|
||||
data_save()
|
||||
radar_drawMap()
|
||||
return true
|
||||
|
@ -1742,7 +1742,7 @@ function radar_scan()
|
|||
end
|
||||
|
||||
function radar_scanDone()
|
||||
local numResults = radar.getResultsCount();
|
||||
local numResults = radar.getResultsCount()
|
||||
data.radar_results = {}
|
||||
if (numResults ~= 0) then
|
||||
for i = 0, numResults do
|
||||
|
@ -1785,14 +1785,14 @@ function draw_warning(monitor, text)
|
|||
else
|
||||
screenWidth, screenHeight = monitor.getSize()
|
||||
end
|
||||
local centerX = math.floor(screenWidth / 2);
|
||||
local centerY = math.floor(screenHeight / 2);
|
||||
local halfWidth = math.ceil(string.len(text) / 2);
|
||||
local centerX = math.floor(screenWidth / 2)
|
||||
local centerY = math.floor(screenHeight / 2)
|
||||
local halfWidth = math.ceil(string.len(text) / 2)
|
||||
local blank = string.sub(" ", - (string.len(text) + 2))
|
||||
|
||||
draw_text(monitor, centerX - halfWidth - 1, centerY - 1, blank, colors.white, colors.red);
|
||||
draw_text(monitor, centerX - halfWidth - 1, centerY , " " .. text .. " ", colors.white, colors.red);
|
||||
draw_text(monitor, centerX - halfWidth - 1, centerY + 1, blank, colors.white, colors.red);
|
||||
draw_text(monitor, centerX - halfWidth - 1, centerY - 1, blank, colors.white, colors.red)
|
||||
draw_text(monitor, centerX - halfWidth - 1, centerY , " " .. text .. " ", colors.white, colors.red)
|
||||
draw_text(monitor, centerX - halfWidth - 1, centerY + 1, blank, colors.white, colors.red)
|
||||
end
|
||||
|
||||
function draw_centeredText(monitor, y, text)
|
||||
|
@ -1802,9 +1802,9 @@ function draw_centeredText(monitor, y, text)
|
|||
else
|
||||
screenWidth, screenHeight = monitor.getSize()
|
||||
end
|
||||
local x = math.floor(screenWidth / 2 - string.len(text) / 2 + 0.5);
|
||||
local x = math.floor(screenWidth / 2 - string.len(text) / 2 + 0.5)
|
||||
|
||||
draw_text(monitor, x, y, text, nil, nil);
|
||||
draw_text(monitor, x, y, text, nil, nil)
|
||||
end
|
||||
|
||||
function radar_drawContact(monitor, contact)
|
||||
|
@ -1918,7 +1918,7 @@ function radar_timerEvent()
|
|||
radar_waitingNextScan = false
|
||||
radar_scan() -- will restart timer
|
||||
else
|
||||
local numResults = radar.getResultsCount();
|
||||
local numResults = radar.getResultsCount()
|
||||
if numResults ~= -1 then
|
||||
radar_scanDone()
|
||||
if data.radar_autoscan then
|
||||
|
@ -1978,7 +1978,7 @@ for key,side in pairs(sides) do
|
|||
table.insert(cloakingcores, peripheral.wrap(side))
|
||||
elseif componentType == "warpdriveRadar" then
|
||||
Write("wrapping!")
|
||||
radar = peripheral.wrap(side);
|
||||
radar = peripheral.wrap(side)
|
||||
elseif componentType == "monitor" then
|
||||
Write("wrapping!")
|
||||
lmonitor = peripheral.wrap(side)
|
||||
|
|
|
@ -116,7 +116,7 @@ function ship_boot()
|
|||
ship_shipSize = ship.getShipSize()
|
||||
w.sleep(0.05)
|
||||
timeout = timeout - 1
|
||||
until ship_shipSize ~= nil or timeout < 0
|
||||
until (ship_shipSize ~= nil and ship_shipSize ~= 0) or timeout < 0
|
||||
if timeout < 0 then
|
||||
w.setColorWarning()
|
||||
w.writeLn("failed")
|
||||
|
@ -238,35 +238,40 @@ function ship_warp()
|
|||
end
|
||||
|
||||
function ship_page_setMovement()
|
||||
-- force manual jump so we get proper max jump distance
|
||||
ship.enable(false)
|
||||
ship.command("MANUAL")
|
||||
|
||||
local success, maxJumpDistance = ship.getMaxJumpDistance()
|
||||
if success ~= true then
|
||||
w.status_showWarning("" .. maxJumpDistance)
|
||||
return
|
||||
end
|
||||
|
||||
w.page_begin("<==== Set ship movement ====>")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
ship_writeMovement("Current movement is ")
|
||||
w.setCursorPos(1, 5)
|
||||
|
||||
ship_movement[1] = ship_page_setDistanceAxis(4, "Forward/back", "Forward", "Backward", ship_movement[1], math.abs(ship_front + ship_back + 1))
|
||||
ship_movement[2] = ship_page_setDistanceAxis(6, "Up/down" , "Up" , "Down" , ship_movement[2], math.abs(ship_up + ship_down + 1))
|
||||
ship_movement[3] = ship_page_setDistanceAxis(8, "Right/left" , "Right" , "Left" , ship_movement[3], math.abs(ship_left + ship_right + 1))
|
||||
ship_movement[1] = ship_page_setDistanceAxis(4, "Forward/back", "Forward", "Backward", ship_movement[1], math.abs(ship_front + ship_back + 1), maxJumpDistance)
|
||||
ship_movement[2] = ship_page_setDistanceAxis(6, "Up/down" , "Up" , "Down" , ship_movement[2], math.abs(ship_up + ship_down + 1), maxJumpDistance)
|
||||
ship_movement[3] = ship_page_setDistanceAxis(8, "Right/left" , "Right" , "Left" , ship_movement[3], math.abs(ship_left + ship_right + 1), maxJumpDistance)
|
||||
ship_movement = { ship.movement(ship_movement[1], ship_movement[2], ship_movement[3]) }
|
||||
ship_updateMovementStats()
|
||||
end
|
||||
|
||||
function ship_page_setDistanceAxis(line, axis, positive, negative, userEntry, shipLength)
|
||||
local success, maxJumpDistance = ship.getMaxJumpDistance()
|
||||
if success ~= true then
|
||||
w.status_showSuccess("" .. maxJumpDistance)
|
||||
maxJumpDistance = 0
|
||||
end
|
||||
function ship_page_setDistanceAxis(line, axis, positive, negative, userEntry, shipLength, maxJumpDistance)
|
||||
local maximumDistance = math.floor(shipLength + maxJumpDistance)
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, line + 2)
|
||||
w.writeFullLine("Enter between " .. math.floor( shipLength + 1) .. " and " .. maximumDistance .. " to move " .. positive)
|
||||
w.writeFullLine("Enter 0 to keep position on this axis")
|
||||
w.writeFullLine("Enter between " .. -maximumDistance .. " and " .. math.floor(-shipLength - 1) .. " to move " .. negative)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter between " .. math.floor( shipLength + 1) .. " and " .. maximumDistance .. " to move " .. positive .. ".")
|
||||
w.writeFullLine(" Enter 0 to keep position on this axis.")
|
||||
w.writeFullLine(" Enter between " .. -maximumDistance .. " and " .. math.floor(-shipLength - 1) .. " to move " .. negative .. ".")
|
||||
|
||||
w.setColorNormal()
|
||||
repeat
|
||||
w.setCursorPos(1, line)
|
||||
w.setColorNormal()
|
||||
w.write(axis .. " movement: ")
|
||||
userEntry = w.input_readInteger(userEntry)
|
||||
if userEntry ~= 0 and (math.abs(userEntry) <= shipLength or math.abs(userEntry) > maximumDistance) then
|
||||
|
@ -287,11 +292,11 @@ function ship_page_setRotation()
|
|||
local inputAbort = false
|
||||
local drun = true
|
||||
w.page_begin("<==== Set ship rotation ====>")
|
||||
w.setCursorPos(1, 15)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Select ship rotation (Up, Down, Left, Right)")
|
||||
w.writeFullLine(" Select Front to keep current orientation")
|
||||
w.writeFullLine(" Press Enter to save your selection")
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Select ship rotation (Up, Down, Left, Right).")
|
||||
w.writeFullLine(" Select Front to keep current orientation.")
|
||||
w.writeFullLine(" Press Enter to save your selection.")
|
||||
repeat
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
|
@ -327,11 +332,11 @@ end
|
|||
function ship_page_setDimensions()
|
||||
w.page_begin("<==== Set ship dimensions ====>")
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Enter ship size in blocks (0-9)")
|
||||
w.writeFullLine(" First block next to Ship counts as 1")
|
||||
w.writeFullLine(" Ship controller counts as 'Front = 1'")
|
||||
w.writeFullLine(" Press Enter to save your selection")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter ship size in blocks (0-9).")
|
||||
w.writeFullLine(" First block next to Ship counts as 1.")
|
||||
w.writeFullLine(" Ship controller counts as 'Front = 1'.")
|
||||
w.writeFullLine(" Press Enter to save your selection.")
|
||||
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
|
@ -360,8 +365,8 @@ function ship_page_summon() -- no longer used
|
|||
if stringPlayers == "" then
|
||||
w.writeLn("~ no players registered ~")
|
||||
w.writeLn("")
|
||||
w.setColorControl()
|
||||
w.writeFullLine("Press enter to exit")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to exit.")
|
||||
w.setColorNormal()
|
||||
w.input_readInteger("")
|
||||
return
|
||||
|
@ -370,9 +375,9 @@ function ship_page_summon() -- no longer used
|
|||
for i = 1, #arrayPlayers do
|
||||
w.writeLn(i .. ". " .. arrayPlayers[i])
|
||||
end
|
||||
w.setColorControl()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter player number")
|
||||
w.writeFullLine("or press enter to summon everyone")
|
||||
w.writeFullLine(" or press enter to summon everyone.")
|
||||
w.setColorNormal()
|
||||
|
||||
w.write(":")
|
||||
|
@ -393,9 +398,9 @@ function ship_page_jumpToGate()
|
|||
w.writeLn("Your ship should be already inside a jumpgate")
|
||||
|
||||
w.setCursorPos(1, 16)
|
||||
w.setColorControl()
|
||||
w.writeFullLine("Enter target jumpgate name (a-z, 0-9)")
|
||||
w.writeFullLine("Press enter to save jumpgate name")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter target jumpgate name (a-z, 0-9).")
|
||||
w.writeFullLine(" Press enter to save jumpgate name.")
|
||||
|
||||
w.setCursorPos(1, 5)
|
||||
w.setColorNormal()
|
||||
|
@ -547,7 +552,7 @@ function ship_page_crew()
|
|||
w.setCursorPos(1, 16)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Summon all crew (S), Toggle summon after jump (T)")
|
||||
w.writeFullLine(" select crew (Up, Down), summon selected crew (enter)")
|
||||
w.writeFullLine(" select crew (Up, Down), summon slctd crew (enter)")
|
||||
end
|
||||
|
||||
function ship_key_crew(character, keycode)
|
||||
|
|
|
@ -63,21 +63,21 @@ function transporter_page()
|
|||
w.setColorDisabled()
|
||||
w.write("Transporter core not detected")
|
||||
else
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 2)
|
||||
w.setColorDisabled()
|
||||
local _, signature = transporter.transporterName()
|
||||
if (signature ~= nil) then
|
||||
w.writeCentered(2, "Signature is " .. signature)
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.write("Beam frequency = ")
|
||||
local beamFrequency = transporter.beamFrequency()
|
||||
w.write(w.format_integer(beamFrequency, 6))
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location = ")
|
||||
local remoteLocation = { transporter.remoteLocation() }
|
||||
if remoteLocation[3] ~= nil then
|
||||
|
@ -88,13 +88,13 @@ function transporter_page()
|
|||
w.write("-not defined-")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorNormal()
|
||||
local energyFactor_PC = transporter.energyFactor() * 100
|
||||
w.write("Energy factor = " .. w.format_float(math.floor(energyFactor_PC * 10) / 10, 6) .. " %")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.write("Energy required = ")
|
||||
local energyAcquiring, energyEnergizing = transporter.getEnergyRequired()
|
||||
if energyAcquiring ~= nil then
|
||||
|
@ -103,18 +103,18 @@ function transporter_page()
|
|||
w.write("???")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorNormal()
|
||||
w.write("Energy stored = ")
|
||||
local energy = { transporter.energy() }
|
||||
transporter_page_writeEnergy(energy)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Room is ")
|
||||
local isEnabled = transporter.enable()
|
||||
if isEnabled then w.setColorSuccess() else w.setColorNormal() end
|
||||
|
@ -122,8 +122,8 @@ function transporter_page()
|
|||
w.setColorNormal()
|
||||
w.write(".")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(28, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Locking is ")
|
||||
local isLockRequested = transporter.lock()
|
||||
if isLockRequested then w.setColorSuccess() else w.setColorNormal() end
|
||||
|
@ -131,14 +131,14 @@ function transporter_page()
|
|||
w.setColorNormal()
|
||||
w.write(".")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 11)
|
||||
w.setColorNormal()
|
||||
w.write("Lock strength is ")
|
||||
local lockStrength = transporter.getLockStrength()
|
||||
transporter_page_writeLockStrength(lockStrength)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(28, 11)
|
||||
w.setColorNormal()
|
||||
w.write("Energize is ")
|
||||
local isEnergizeRequested = transporter.energize()
|
||||
if isEnergizeRequested then w.setColorSuccess() else w.setColorNormal() end
|
||||
|
@ -146,8 +146,8 @@ function transporter_page()
|
|||
w.setColorNormal()
|
||||
w.write(".")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.write("Status is ")
|
||||
local _, state, _, _, isJammed = transporter.state()
|
||||
if isJammed then
|
||||
|
@ -158,15 +158,15 @@ function transporter_page()
|
|||
w.write(".")
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Start/stoP transporter (S/P), Configuration (C)")
|
||||
w.writeFullLine(" Lock (L), Energize (E), Energy factor (+/-)")
|
||||
end
|
||||
|
||||
function transporter_page_writeEnergy(energy)
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(19, 8)
|
||||
w.setColorNormal()
|
||||
if energy[2] ~= nil then
|
||||
w.write(w.format_integer(energy[1], 7) .. " / " .. energy[2] .. " EU ")
|
||||
else
|
||||
|
@ -245,17 +245,23 @@ function transporter_config()
|
|||
w.setColorDisabled()
|
||||
w.write("Transporter core not detected")
|
||||
else
|
||||
w.setColorNormal()
|
||||
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 100 and 1000 %.")
|
||||
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorNormal()
|
||||
local energyFactor_PC = transporter.energyFactor() * 100
|
||||
w.write("Energy factor (" .. math.floor(energyFactor_PC * 10) / 10 .. " %): ")
|
||||
energyFactor_PC = w.input_readInteger(energyFactor_PC)
|
||||
energyFactor_PC = transporter.energyFactor(energyFactor_PC / 100) * 100
|
||||
w.setCursorPos(1, 5)
|
||||
w.write("Energy factor set to " .. math.floor(energyFactor_PC * 10) / 10 .. " %")
|
||||
w.writeLn("Energy factor set to " .. math.floor(energyFactor_PC * 10) / 10 .. " %")
|
||||
w.writeFullLine(" ")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
local remoteLocation = { transporter.remoteLocation() }
|
||||
local remoteLocation_default = "-"
|
||||
if remoteLocation[3] ~= nil then
|
||||
|
@ -269,16 +275,22 @@ function transporter_config()
|
|||
remoteLocation[1] = "???"
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter - as player name to use coordinates")
|
||||
w.writeFullLine(" Press Enter to save your selection")
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter - as player name to use coordinates.")
|
||||
w.writeFullLine(" Press Enter to save your selection.")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Signature, player name or dash: ")
|
||||
w.setCursorPos(1, 11)
|
||||
local remoteLocation_new = w.input_readText(remoteLocation_default)
|
||||
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
w.writeFullLine(" ")
|
||||
|
||||
if remoteLocation_new ~= "-" then
|
||||
remoteLocation = { transporter.remoteLocation(remoteLocation_new) }
|
||||
else
|
||||
|
@ -286,43 +298,59 @@ function transporter_config()
|
|||
remoteLocation[1], remoteLocation[2], remoteLocation[3] = transporter.position()
|
||||
end
|
||||
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 11)
|
||||
w.writeFullLine(" ")
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter absolute X coordinate")
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- X
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter absolute X coordinate.")
|
||||
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location X coordinate (" .. w.format_integer(remoteLocation[1]) .. "): ")
|
||||
remoteLocation[1] = w.input_readInteger(remoteLocation[1])
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter Y < 0 to target below planet")
|
||||
w.writeFullLine(" Enter Y > 256 to target space above")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 11)
|
||||
w.write("Remote location Y coordinate (" .. w.format_integer(remoteLocation[2]) .. "): ")
|
||||
remoteLocation[2] = w.input_readInteger(remoteLocation[2])
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter absolute Z coordinate")
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- Y
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter Y < 0 to target below planet.")
|
||||
w.writeFullLine(" Enter Y > 256 to target space above.")
|
||||
|
||||
w.setCursorPos(1, 11)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location Y coordinate (" .. w.format_integer(remoteLocation[2]) .. "): ")
|
||||
remoteLocation[2] = w.input_readInteger(remoteLocation[2])
|
||||
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- Z
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter absolute Z coordinate.")
|
||||
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location Z coordinate (" .. w.format_integer(remoteLocation[3]) .. "): ")
|
||||
remoteLocation[3] = w.input_readInteger(remoteLocation[3])
|
||||
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
remoteLocation = { transporter.remoteLocation(remoteLocation[1], remoteLocation[2], remoteLocation[3]) }
|
||||
end
|
||||
|
||||
w.setCursorPos(1, 12)
|
||||
w.setCursorPos(1, 13)
|
||||
if remoteLocation[3] ~= nil then
|
||||
w.write("Remote location updated to " .. w.format_integer(remoteLocation[1]) .. ", " .. w.format_integer(remoteLocation[2]) .. ", " .. w.format_integer(remoteLocation[3]))
|
||||
elseif remoteLocation[1] ~= nil then
|
||||
|
|
|
@ -222,8 +222,8 @@ function laser_battery_page()
|
|||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
w.setCursorPos(1, 14)
|
||||
w.write(" Firing mode: " .. data.laser_firingMode)
|
||||
|
@ -237,8 +237,8 @@ function laser_battery_page()
|
|||
w.write("off")
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 15)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Add/Remove/Configure selected battery (A/R/C)")
|
||||
w.writeFullLine(" select battery (Up, Down), Link lasers (L)")
|
||||
w.writeFullLine(" change Firing mode (F), toggle Scatter mode (S)")
|
||||
|
@ -250,8 +250,11 @@ function laser_battery_config()
|
|||
return
|
||||
end
|
||||
w.page_begin(w.data_getName() .. " - Laser battery configuration")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Battery name (" .. laserbattery.name .. "):")
|
||||
laserbattery.name = w.input_readText(laserbattery.name)
|
||||
w.setCursorPos(1, 3)
|
||||
|
@ -262,8 +265,8 @@ function laser_battery_config()
|
|||
if laserbattery.head == nil then
|
||||
return
|
||||
end
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorDisabled()
|
||||
local headX, headY, headZ = laserbattery.head.position()
|
||||
local headFrequency = laserbattery.head.beamFrequency()
|
||||
w.write("@ " .. w.format_integer(headX, 7) .. " " .. w.format_integer(headY, 3) .. " " .. w.format_integer(headZ, 7))
|
||||
|
@ -271,12 +274,12 @@ function laser_battery_config()
|
|||
w.write("With " .. #laserbattery.boosters .. " boosters")
|
||||
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorDisabled()
|
||||
w.write(" Valid values are 0 to 65000 ")
|
||||
w.setColorNormal()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 0 and 65000.")
|
||||
local frequency
|
||||
repeat
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Battery beam frequency (" .. w.format_integer(headFrequency, 5) .. "): ")
|
||||
frequency = w.input_readInteger(headFrequency)
|
||||
|
@ -305,12 +308,12 @@ function laser_battery_linkLasers()
|
|||
end
|
||||
w.page_begin(w.data_getName() .. " - Linking lasers")
|
||||
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 3)
|
||||
w.writeLn("Use Up/Down/Left/Right to select lasers.")
|
||||
w.writeLn("Press backspace/delete to remove laser.")
|
||||
w.writeLn("Press enter to validate.")
|
||||
w.writeLn("Validate with '-no laser-' to stop adding lasers.")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Use Up/Down/Left/Right to select lasers.")
|
||||
w.writeFullLine(" Press backspace/delete to remove laser.")
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.writeFullLine(" Validate with '-no laser-' to stop adding lasers.")
|
||||
|
||||
w.setColorNormal()
|
||||
if laserbattery.boosters == nil then
|
||||
|
@ -329,8 +332,8 @@ function laser_battery_linkLasers()
|
|||
w.writeLn("Laser head (" .. laserbattery.headAddress .. "): ")
|
||||
end
|
||||
laserbattery.headAddress = w.input_readEnum(laserbattery.headAddress, laserAddresses_left, laser_getName, laser_getDescription, "-no laser-")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
if laserbattery.headAddress == nil then
|
||||
w.writeLn("Laser head set to (not defined)")
|
||||
|
@ -347,8 +350,8 @@ function laser_battery_linkLasers()
|
|||
w.writeLn("Laser head set to " .. laserbattery.headAddress)
|
||||
laserbattery.head = w.device_get(laserbattery.headAddress)
|
||||
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorDisabled()
|
||||
local headX, headY, headZ = laserbattery.head.position()
|
||||
local headFrequency = laserbattery.head.beamFrequency()
|
||||
w.write("@ " .. w.format_integer(headX, 7) .. " " .. w.format_integer(headY, 3) .. " " .. w.format_integer(headZ, 7))
|
||||
|
@ -357,8 +360,8 @@ function laser_battery_linkLasers()
|
|||
local key = 1
|
||||
local addressCurrent = nil
|
||||
repeat
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.write("Booster #" .. key)
|
||||
addressCurrent = nil
|
||||
if key <= #laserbattery.boosterAddresses then
|
||||
|
@ -387,8 +390,8 @@ function laser_battery_linkLasers()
|
|||
|
||||
laserbattery.boosterAddresses[key] = addressCurrent
|
||||
laserbattery.boosters[key] = w.device_get(addressCurrent)
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Booster #" .. key .. " set to " .. addressCurrent)
|
||||
key = key + 1
|
||||
|
@ -538,8 +541,8 @@ function laser_station_page()
|
|||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
w.setCursorPos(1, 14)
|
||||
w.write(" Firing mode: " .. data.laser_firingMode)
|
||||
|
@ -553,8 +556,8 @@ function laser_station_page()
|
|||
w.write("off")
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 15)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Add/Remove/Configure laser station (A/R/C)")
|
||||
w.writeFullLine(" select station (Up, Down), Link batteries (L)")
|
||||
w.writeFullLine(" change Firing mode (F), toggle Scatter mode (S)")
|
||||
|
@ -566,8 +569,11 @@ function laser_station_config()
|
|||
return
|
||||
end
|
||||
w.page_begin(w.data_getName() .. " - Laser station configuration")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Laser station name (" .. laserstation.name .. "):")
|
||||
laserstation.name = w.input_readText(laserstation.name)
|
||||
w.setCursorPos(1, 3)
|
||||
|
@ -586,12 +592,12 @@ function laser_station_config()
|
|||
w.write("With " .. #laserstation.batteries .. " batteries")
|
||||
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorDisabled()
|
||||
w.write(" Valid values are 0 to 268435455 ")
|
||||
w.setColorNormal()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 0 and 268435455.")
|
||||
local channel
|
||||
repeat
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.write("Camera video channel (" .. w.format_integer(camVideoChannel, 5) .. "): ")
|
||||
channel = w.input_readInteger(camVideoChannel)
|
||||
if channel ~= 0 and (channel < 0 or channel > 268435455) then
|
||||
|
@ -641,12 +647,12 @@ function laser_station_linkBatteries()
|
|||
end
|
||||
w.page_begin(w.data_getName() .. " - Linking batteries")
|
||||
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 3)
|
||||
w.writeLn("Use Up/Down/Left/Right to select batteries.")
|
||||
w.writeLn("Press backspace/delete to remove battery.")
|
||||
w.writeLn("Press enter to validate.")
|
||||
w.writeLn("Validate '-no battery-' to stop adding batteries.")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Use Up/Down/Left/Right to select batteries.")
|
||||
w.writeFullLine(" Press backspace/delete to remove battery.")
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.writeFullLine(" Validate '-no battery-' to stop adding batteries.")
|
||||
|
||||
w.setColorNormal()
|
||||
if laserstation.batteries == nil then
|
||||
|
@ -667,12 +673,12 @@ function laser_station_linkBatteries()
|
|||
else
|
||||
laserstation.camera = w.device_get(laserstation.cameraAddress)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.writeLn("Laser camera set to " .. laserstation.cameraAddress)
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorDisabled()
|
||||
w.clearLine()
|
||||
local camX, camY, camZ = laserstation.camera.position()
|
||||
local camVideoChannel = laserstation.camera.videoChannel()
|
||||
|
@ -686,8 +692,8 @@ function laser_station_linkBatteries()
|
|||
laser_batteries_left[keyBattery] = laserbattery
|
||||
end
|
||||
repeat
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.write("Battery #" .. key)
|
||||
nameCurrent = nil
|
||||
if key <= #laserstation.batteries then
|
||||
|
@ -714,8 +720,8 @@ function laser_station_linkBatteries()
|
|||
end
|
||||
|
||||
laserstation.batteries[key] = { name = nameCurrent, enabled = true }
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Battery #" .. key .. " set to " .. nameCurrent)
|
||||
key = key + 1
|
||||
|
|
|
@ -55,6 +55,7 @@ local styles = {
|
|||
good = { front = colors.lime , back = colors.lightGray },
|
||||
bad = { front = colors.red , back = colors.lightGray },
|
||||
disabled = { front = colors.gray , back = colors.lightGray },
|
||||
help = { front = colors.white , back = colors.blue },
|
||||
header = { front = colors.orange , back = colors.black },
|
||||
control = { front = colors.white , back = colors.blue },
|
||||
selected = { front = colors.black , back = colors.lightBlue },
|
||||
|
@ -421,8 +422,8 @@ local function input_readInteger(currentValue)
|
|||
term.setCursorBlink(true)
|
||||
repeat
|
||||
w.status_tick()
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(x, y)
|
||||
w.setColorNormal()
|
||||
w.write(input .. " ")
|
||||
input = string.sub(input, -9)
|
||||
w.setCursorPos(x + #input, y)
|
||||
|
@ -526,8 +527,8 @@ local function input_readText(currentValue)
|
|||
repeat
|
||||
w.status_tick()
|
||||
-- update display clearing extra characters
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(x, y)
|
||||
w.setColorNormal()
|
||||
w.write(w.format_string(input, 37))
|
||||
-- truncate input and set caret position
|
||||
input = string.sub(input, -36)
|
||||
|
@ -646,8 +647,8 @@ local function input_readEnum(currentValue, list, toValue, toDescription, noValu
|
|||
term.setCursorBlink(true)
|
||||
repeat
|
||||
w.status_tick()
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(x, y)
|
||||
w.setColorNormal()
|
||||
if #list == 0 then
|
||||
inputKey = nil
|
||||
end
|
||||
|
@ -671,8 +672,8 @@ local function input_readEnum(currentValue, list, toValue, toDescription, noValu
|
|||
end
|
||||
w.setColorNormal()
|
||||
w.write(input .. " ")
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, y + 1)
|
||||
w.setColorDisabled()
|
||||
w.write(inputDescription .. " ")
|
||||
|
||||
local params = { event.pull() }
|
||||
|
@ -904,7 +905,11 @@ local function data_setName()
|
|||
|
||||
-- ask for a new name
|
||||
w.page_begin("<==== Set " .. component .. " name ====>")
|
||||
w.writeLn("")
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.write("Enter " .. component .. " name: ")
|
||||
data_name = w.input_readText(data_name)
|
||||
|
||||
|
|
|
@ -46,14 +46,14 @@ function lhc_boot(isDetailed)
|
|||
lhc_controlChannels[controlChannel] = "true"
|
||||
countParameters = countParameters + 1
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("Error " .. x)
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.sleep(0.5)
|
||||
end
|
||||
end
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("No control point detected!")
|
||||
w.sleep(0.5)
|
||||
end
|
||||
|
@ -84,24 +84,24 @@ function lhc_boot(isDetailed)
|
|||
lhc_parameters[index] = { controlChannel, isEnabled, threshold, description }
|
||||
index = index + 1
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
if controlChannelCheck ~= nil then
|
||||
w.writeLn("Error " .. controlChannelCheck)
|
||||
else
|
||||
w.writeLn("Error nil?")
|
||||
end
|
||||
w.sleep(0.5)
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
end
|
||||
if controlChannel ~= controlChannelCheck and isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("Error: requested " .. controlChannel .. ", received " .. controlChannelCheck)
|
||||
w.sleep(0.5)
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
end
|
||||
end
|
||||
elseif isDetailed then
|
||||
w.setColorWarning();
|
||||
w.setColorWarning()
|
||||
w.writeLn("No control channel detected!")
|
||||
w.sleep(0.5)
|
||||
end
|
||||
|
@ -126,18 +126,42 @@ function lhc_page_parameter()
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
w.writeLn("")
|
||||
|
||||
local _, y = w.getCursorPos()
|
||||
-- description
|
||||
w.setCursorPos(1, y + 3)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
|
||||
w.setCursorPos(1, y)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Current description is '" .. description .. "'")
|
||||
w.write("Enter a description: ")
|
||||
description = w.input_readText(description)
|
||||
|
||||
w.writeLn("")
|
||||
w.setCursorPos(1, y + 3)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- threshold
|
||||
w.setCursorPos(1, y + 7)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
|
||||
w.setCursorPos(1, y + 4)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Current threshold is " .. w.format_integer(threshold * 100) .. "%")
|
||||
w.write("Enter parameter threshold: ")
|
||||
local new_threshold = w.input_readInteger(threshold * 100) / 100
|
||||
threshold = math.min(2.0, math.max(0.0, new_threshold))
|
||||
lhc_parameters[indexSelected] = { controlChannel, isEnabled, threshold, description }
|
||||
accelerator.parameter(controlChannel, isEnabled, threshold, description)
|
||||
|
||||
w.setCursorPos(1, y + 7)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
end
|
||||
|
||||
lhc_parameter_indexSelected = 1
|
||||
|
@ -211,45 +235,45 @@ function lhc_page()
|
|||
|
||||
w.write(" Controller is ")
|
||||
if isEnabled then
|
||||
w.setColorGood();
|
||||
w.setColorGood()
|
||||
w.writeLn("Enabled")
|
||||
else
|
||||
w.setColorBad();
|
||||
w.setColorBad()
|
||||
w.writeLn("Disabled")
|
||||
end
|
||||
|
||||
local energy, energyMax = accelerator.energy()
|
||||
if energy == nil then energy = 0 end
|
||||
if energyMax == nil or energyMax == 0 then energyMax = 1 end
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.write(" Energy level is ")
|
||||
if isPowered then
|
||||
w.setColorGood();
|
||||
w.setColorGood()
|
||||
elseif isEnabled then
|
||||
w.setColorBad();
|
||||
w.setColorBad()
|
||||
else
|
||||
w.setColorDisabled();
|
||||
w.setColorDisabled()
|
||||
end
|
||||
w.writeLn(math.floor(energy / energyMax * 100) .. " % (" .. energy .. " EU)")
|
||||
-- w.writeLn("")
|
||||
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.write(" Magnets temperature is ")
|
||||
if temperatureCurrent_K <= temperatureTarget_K then
|
||||
w.setColorGood();
|
||||
w.setColorGood()
|
||||
elseif isEnabled then
|
||||
w.setColorBad();
|
||||
w.setColorBad()
|
||||
else
|
||||
w.setColorDisabled();
|
||||
w.setColorDisabled()
|
||||
end
|
||||
w.write(string.format("%.1f K", math.floor(temperatureCurrent_K * 10) / 10))
|
||||
w.setColorNormal();
|
||||
w.setColorNormal()
|
||||
w.writeLn(". Target is " .. temperatureTarget_K .. " K")
|
||||
-- w.writeLn("")
|
||||
|
||||
w.write("Parameters: ")
|
||||
if #lhc_parameters == 0 then
|
||||
w.setColorDisabled();
|
||||
w.setColorDisabled()
|
||||
w.writeLn("")
|
||||
w.writeCentered(" -no valid node detected-")
|
||||
else
|
||||
|
|
|
@ -123,29 +123,28 @@ function reactor_page()
|
|||
w.write(w.format_integer(energy[3]) .. " RF/t")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorNormal()
|
||||
w.write("Activated: ")
|
||||
local isEnabled = reactor.enable()
|
||||
if isEnabled then w.setColorSuccess() else w.setColorNormal() end
|
||||
w.write(w.format_boolean(isEnabled, "YES", "no"))
|
||||
end
|
||||
|
||||
w.setCursorPos(30, 2)
|
||||
if #reactorlasers == 0 then
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(30, 2)
|
||||
w.write("Lasers not detected")
|
||||
else
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(30, 2)
|
||||
w.write("Lasers")
|
||||
|
||||
for key, reactorlaser in pairs(reactorlasers) do
|
||||
local side = reactorlaser.side
|
||||
if side ~= nil then
|
||||
side = side % 4
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(4, 3 + side)
|
||||
w.setColorNormal()
|
||||
w.write("Side " .. w.format_integer(side) .. ":")
|
||||
w.setCursorPos(30, 3 + side)
|
||||
local energy = reactorlaser.wrap.energy()
|
||||
|
@ -161,8 +160,8 @@ function reactor_page()
|
|||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
w.setCursorPos(1, 11)
|
||||
w.write("Output mode : ")
|
||||
|
@ -176,14 +175,14 @@ function reactor_page()
|
|||
else
|
||||
w.write("rated at " .. reactor_rate .. " RF")
|
||||
end
|
||||
w.setColorNormal()
|
||||
w.setCursorPos( 1, 12)
|
||||
w.setColorNormal()
|
||||
w.write("Target stability: " .. reactor_targetStability .. "%")
|
||||
w.setCursorPos(30, 12)
|
||||
w.write("Laser amount: " .. reactor_laserAmount)
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 18)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Start/stoP reactor (S/P), Use lasers (L)")
|
||||
w.writeFullLine(" Output mode (O), Configuration (C)")
|
||||
w.writeFullLine(" Target stability (+/-), Laser amount (U/J)")
|
||||
|
@ -275,9 +274,9 @@ function reactor_pulse(output)
|
|||
end
|
||||
|
||||
elseif reactor_pulseStep == 2 then
|
||||
w.setColorNormal()
|
||||
local energy = { reactor.energy() }
|
||||
w.setCursorPos(12, 7)
|
||||
w.setColorNormal()
|
||||
if energy[2] ~= nil then
|
||||
w.write(w.format_integer(energy[1], 10))
|
||||
w.setCursorPos(39, 7)
|
||||
|
@ -325,27 +324,50 @@ function reactor_config()
|
|||
w.setColorDisabled()
|
||||
w.write("Reactor not detected")
|
||||
else
|
||||
w.setColorNormal()
|
||||
-- reactor output rate
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a positive number.")
|
||||
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorNormal()
|
||||
w.write("Reactor output rate (" .. w.format_integer(reactor_rate) .. " RF): ")
|
||||
reactor_rate = w.input_readInteger(reactor_rate)
|
||||
reactor_setMode()
|
||||
w.setCursorPos(1, 5)
|
||||
w.write("Reactor output rate set")
|
||||
w.setCursorPos(1, 6)
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- laser amount
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a positive number.")
|
||||
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.write("Laser energy level (" .. w.format_integer(reactor_laserAmount) .. "): ")
|
||||
reactor_laserAmount = w.input_readInteger(reactor_laserAmount)
|
||||
reactor_setLaser()
|
||||
w.setCursorPos(1, 8)
|
||||
w.write("Laser energy level set")
|
||||
w.setCursorPos(1, 9)
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- target stability
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a positive number.")
|
||||
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Reactor target stability (" .. w.format_integer(reactor_targetStability) .. "%): ")
|
||||
reactor_targetStability = w.input_readInteger(reactor_targetStability)
|
||||
reactor_setTargetStability()
|
||||
w.setCursorPos(1, 11)
|
||||
w.write("Reactor target stability set")
|
||||
w.setCursorPos(1, 12)
|
||||
w.writeFullLine(" ")
|
||||
end
|
||||
reactor_configPageLoaded = false
|
||||
end
|
||||
|
|
|
@ -117,7 +117,7 @@ function ship_boot()
|
|||
ship_shipSize = ship.getShipSize()
|
||||
w.sleep(0.05)
|
||||
timeout = timeout - 1
|
||||
until ship_shipSize ~= nil or timeout < 0
|
||||
until (ship_shipSize ~= nil and ship_shipSize ~= 0) or timeout < 0
|
||||
if timeout < 0 then
|
||||
w.setColorWarning()
|
||||
w.writeLn("failed")
|
||||
|
@ -239,35 +239,40 @@ function ship_warp()
|
|||
end
|
||||
|
||||
function ship_page_setMovement()
|
||||
-- force manual jump so we get proper max jump distance
|
||||
ship.enable(false)
|
||||
ship.command("MANUAL")
|
||||
|
||||
local success, maxJumpDistance = ship.getMaxJumpDistance()
|
||||
if success ~= true then
|
||||
w.status_showWarning("" .. maxJumpDistance)
|
||||
return
|
||||
end
|
||||
|
||||
w.page_begin("<==== Set ship movement ====>")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
ship_writeMovement("Current movement is ")
|
||||
w.setCursorPos(1, 5)
|
||||
|
||||
ship_movement[1] = ship_page_setDistanceAxis(4, "Forward/back", "Forward", "Backward", ship_movement[1], math.abs(ship_front + ship_back + 1))
|
||||
ship_movement[2] = ship_page_setDistanceAxis(6, "Up/down" , "Up" , "Down" , ship_movement[2], math.abs(ship_up + ship_down + 1))
|
||||
ship_movement[3] = ship_page_setDistanceAxis(8, "Right/left" , "Right" , "Left" , ship_movement[3], math.abs(ship_left + ship_right + 1))
|
||||
ship_movement[1] = ship_page_setDistanceAxis(4, "Forward/back", "Forward", "Backward", ship_movement[1], math.abs(ship_front + ship_back + 1), maxJumpDistance)
|
||||
ship_movement[2] = ship_page_setDistanceAxis(6, "Up/down" , "Up" , "Down" , ship_movement[2], math.abs(ship_up + ship_down + 1), maxJumpDistance)
|
||||
ship_movement[3] = ship_page_setDistanceAxis(8, "Right/left" , "Right" , "Left" , ship_movement[3], math.abs(ship_left + ship_right + 1), maxJumpDistance)
|
||||
ship_movement = { ship.movement(ship_movement[1], ship_movement[2], ship_movement[3]) }
|
||||
ship_updateMovementStats()
|
||||
end
|
||||
|
||||
function ship_page_setDistanceAxis(line, axis, positive, negative, userEntry, shipLength)
|
||||
local success, maxJumpDistance = ship.getMaxJumpDistance()
|
||||
if success ~= true then
|
||||
w.status_showSuccess("" .. maxJumpDistance)
|
||||
maxJumpDistance = 0
|
||||
end
|
||||
function ship_page_setDistanceAxis(line, axis, positive, negative, userEntry, shipLength, maxJumpDistance)
|
||||
local maximumDistance = math.floor(shipLength + maxJumpDistance)
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, line + 2)
|
||||
w.writeFullLine("Enter between " .. math.floor( shipLength + 1) .. " and " .. maximumDistance .. " to move " .. positive)
|
||||
w.writeFullLine("Enter 0 to keep position on this axis")
|
||||
w.writeFullLine("Enter between " .. -maximumDistance .. " and " .. math.floor(-shipLength - 1) .. " to move " .. negative)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter between " .. math.floor( shipLength + 1) .. " and " .. maximumDistance .. " to move " .. positive .. ".")
|
||||
w.writeFullLine(" Enter 0 to keep position on this axis.")
|
||||
w.writeFullLine(" Enter between " .. -maximumDistance .. " and " .. math.floor(-shipLength - 1) .. " to move " .. negative .. ".")
|
||||
|
||||
w.setColorNormal()
|
||||
repeat
|
||||
w.setCursorPos(1, line)
|
||||
w.setColorNormal()
|
||||
w.write(axis .. " movement: ")
|
||||
userEntry = w.input_readInteger(userEntry)
|
||||
if userEntry ~= 0 and (math.abs(userEntry) <= shipLength or math.abs(userEntry) > maximumDistance) then
|
||||
|
@ -288,11 +293,11 @@ function ship_page_setRotation()
|
|||
local inputAbort = false
|
||||
local drun = true
|
||||
w.page_begin("<==== Set ship rotation ====>")
|
||||
w.setCursorPos(1, 19)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Select ship rotation (Up, Down, Left, Right)")
|
||||
w.writeFullLine(" Select Front to keep current orientation")
|
||||
w.writeFullLine(" Press Enter to save your selection")
|
||||
w.setCursorPos(1, 11)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Select ship rotation (Up, Down, Left, Right).")
|
||||
w.writeFullLine(" Select Front to keep current orientation.")
|
||||
w.writeFullLine(" Press Enter to save your selection.")
|
||||
repeat
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
|
@ -332,11 +337,11 @@ end
|
|||
function ship_page_setDimensions()
|
||||
w.page_begin("<==== Set ship dimensions ====>")
|
||||
w.setCursorPos(1, 18)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Enter ship size in blocks (0-9)")
|
||||
w.writeFullLine(" First block next to Ship counts as 1")
|
||||
w.writeFullLine(" Ship controller counts as 'Front = 1'")
|
||||
w.writeFullLine(" Press Enter to save your selection")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter ship size in blocks (0-9).")
|
||||
w.writeFullLine(" First block next to Ship counts as 1.")
|
||||
w.writeFullLine(" Ship controller counts as 'Front = 1'.")
|
||||
w.writeFullLine(" Press Enter to save your selection.")
|
||||
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
|
@ -365,8 +370,8 @@ function ship_page_summon() -- no longer used
|
|||
if stringPlayers == nil or #arrayPlayers == 0 then
|
||||
w.writeLn("~ no players registered ~")
|
||||
w.writeLn("")
|
||||
w.setColorControl()
|
||||
w.writeFullLine("Press enter to exit")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to exit.")
|
||||
w.setColorNormal()
|
||||
w.input_readInteger("")
|
||||
return
|
||||
|
@ -374,9 +379,9 @@ function ship_page_summon() -- no longer used
|
|||
for i = 1, #arrayPlayers do
|
||||
w.writeLn(i .. ". " .. arrayPlayers[i])
|
||||
end
|
||||
w.setColorControl()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter player number")
|
||||
w.writeFullLine("or press enter to summon everyone")
|
||||
w.writeFullLine(" or press enter to summon everyone.")
|
||||
w.setColorNormal()
|
||||
|
||||
w.write(":")
|
||||
|
@ -397,9 +402,9 @@ function ship_page_jumpToGate()
|
|||
w.writeLn("Your ship should be already inside a jumpgate")
|
||||
|
||||
w.setCursorPos(1, 20)
|
||||
w.setColorControl()
|
||||
w.writeFullLine("Enter target jumpgate name (a-z, 0-9)")
|
||||
w.writeFullLine("Press enter to save jumpgate name")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter target jumpgate name (a-z, 0-9).")
|
||||
w.writeFullLine(" Press enter to save jumpgate name.")
|
||||
|
||||
w.setCursorPos(1, 5)
|
||||
w.setColorNormal()
|
||||
|
|
|
@ -62,21 +62,21 @@ function transporter_page()
|
|||
w.setColorDisabled()
|
||||
w.write("Transporter core not detected")
|
||||
else
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 2)
|
||||
w.setColorDisabled()
|
||||
local _, signature = transporter.transporterName()
|
||||
if (signature ~= nil) then
|
||||
w.writeCentered(2, "Signature is " .. signature)
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.write("Beam frequency = ")
|
||||
local beamFrequency = transporter.beamFrequency()
|
||||
w.write(w.format_integer(beamFrequency, 6))
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location = ")
|
||||
local remoteLocation = { transporter.remoteLocation() }
|
||||
if remoteLocation[3] ~= nil then
|
||||
|
@ -87,13 +87,13 @@ function transporter_page()
|
|||
w.write("-not defined-")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorNormal()
|
||||
local energyFactor_PC = transporter.energyFactor() * 100
|
||||
w.write("Energy factor = " .. w.format_float(math.floor(energyFactor_PC * 10) / 10, 6) .. " %")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.write("Energy required = ")
|
||||
local energyAcquiring, energyEnergizing = transporter.getEnergyRequired()
|
||||
if energyAcquiring ~= nil then
|
||||
|
@ -102,18 +102,18 @@ function transporter_page()
|
|||
w.write("???")
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorNormal()
|
||||
w.write("Energy stored = ")
|
||||
local energy = { transporter.energy() }
|
||||
transporter_page_writeEnergy(energy)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Room is ")
|
||||
local isEnabled = transporter.enable()
|
||||
if isEnabled then w.setColorSuccess() else w.setColorNormal() end
|
||||
|
@ -121,8 +121,8 @@ function transporter_page()
|
|||
w.setColorNormal()
|
||||
w.write(".")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(28, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Locking is ")
|
||||
local isLockRequested = transporter.lock()
|
||||
if isLockRequested then w.setColorSuccess() else w.setColorNormal() end
|
||||
|
@ -130,14 +130,14 @@ function transporter_page()
|
|||
w.setColorNormal()
|
||||
w.write(".")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 11)
|
||||
w.setColorNormal()
|
||||
w.write("Lock strength is ")
|
||||
local lockStrength = transporter.getLockStrength()
|
||||
transporter_page_writeLockStrength(lockStrength)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(28, 11)
|
||||
w.setColorNormal()
|
||||
w.write("Energize is ")
|
||||
local isEnergizeRequested = transporter.energize()
|
||||
if isEnergizeRequested then w.setColorSuccess() else w.setColorNormal() end
|
||||
|
@ -145,8 +145,8 @@ function transporter_page()
|
|||
w.setColorNormal()
|
||||
w.write(".")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.write("Status is ")
|
||||
local _, state, _, _, isJammed = transporter.state()
|
||||
if isJammed then
|
||||
|
@ -157,15 +157,15 @@ function transporter_page()
|
|||
w.write(".")
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 20)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Start/stoP transporter (S/P), Configuration (C)")
|
||||
w.writeFullLine(" Lock (L), Energize (E), Energy factor (+/-)")
|
||||
end
|
||||
|
||||
function transporter_page_writeEnergy(energy)
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(19, 8)
|
||||
w.setColorNormal()
|
||||
if energy[2] ~= nil then
|
||||
w.write(w.format_integer(energy[1], 7) .. " / " .. energy[2] .. " EU ")
|
||||
else
|
||||
|
@ -244,17 +244,23 @@ function transporter_config()
|
|||
w.setColorDisabled()
|
||||
w.write("Transporter core not detected")
|
||||
else
|
||||
w.setColorNormal()
|
||||
|
||||
w.setCursorPos(1, 6)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 100 and 1000 %.")
|
||||
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorNormal()
|
||||
local energyFactor_PC = transporter.energyFactor() * 100
|
||||
w.write("Energy factor (" .. math.floor(energyFactor_PC * 10) / 10 .. " %): ")
|
||||
energyFactor_PC = w.input_readInteger(energyFactor_PC)
|
||||
energyFactor_PC = transporter.energyFactor(energyFactor_PC / 100) * 100
|
||||
w.setCursorPos(1, 5)
|
||||
w.write("Energy factor set to " .. math.floor(energyFactor_PC * 10) / 10 .. " %")
|
||||
w.writeLn("Energy factor set to " .. math.floor(energyFactor_PC * 10) / 10 .. " %")
|
||||
w.writeFullLine(" ")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
local remoteLocation = { transporter.remoteLocation() }
|
||||
local remoteLocation_default = "-"
|
||||
if remoteLocation[3] ~= nil then
|
||||
|
@ -268,16 +274,22 @@ function transporter_config()
|
|||
remoteLocation[1] = "???"
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter - as player name to use coordinates")
|
||||
w.writeFullLine(" Press Enter to save your selection")
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter - as player name to use coordinates.")
|
||||
w.writeFullLine(" Press Enter to save your selection.")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Signature, player name or dash: ")
|
||||
w.setCursorPos(1, 11)
|
||||
local remoteLocation_new = w.input_readText(remoteLocation_default)
|
||||
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
w.writeFullLine(" ")
|
||||
|
||||
if remoteLocation_new ~= "-" then
|
||||
remoteLocation = { transporter.remoteLocation(remoteLocation_new) }
|
||||
else
|
||||
|
@ -285,39 +297,55 @@ function transporter_config()
|
|||
remoteLocation[1], remoteLocation[2], remoteLocation[3] = transporter.position()
|
||||
end
|
||||
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 11)
|
||||
w.writeFullLine(" ")
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter absolute X coordinate")
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- X
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter absolute X coordinate.")
|
||||
|
||||
w.setCursorPos(1, 10)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location X coordinate (" .. w.format_integer(remoteLocation[1]) .. "): ")
|
||||
remoteLocation[1] = w.input_readInteger(remoteLocation[1])
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter Y < 0 to target below planet")
|
||||
w.writeFullLine(" Enter Y > 256 to target space above")
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 11)
|
||||
w.write("Remote location Y coordinate (" .. w.format_integer(remoteLocation[2]) .. "): ")
|
||||
remoteLocation[2] = w.input_readInteger(remoteLocation[2])
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 16)
|
||||
w.writeFullLine(" Enter absolute Z coordinate")
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- Y
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter Y < 0 to target below planet.")
|
||||
w.writeFullLine(" Enter Y > 256 to target space above.")
|
||||
|
||||
w.setCursorPos(1, 11)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location Y coordinate (" .. w.format_integer(remoteLocation[2]) .. "): ")
|
||||
remoteLocation[2] = w.input_readInteger(remoteLocation[2])
|
||||
|
||||
w.setCursorPos(1, 13)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
w.writeFullLine(" ")
|
||||
|
||||
-- Z
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter absolute Z coordinate.")
|
||||
|
||||
w.setCursorPos(1, 12)
|
||||
w.setColorNormal()
|
||||
w.write("Remote location Z coordinate (" .. w.format_integer(remoteLocation[3]) .. "): ")
|
||||
remoteLocation[3] = w.input_readInteger(remoteLocation[3])
|
||||
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorNormal()
|
||||
w.writeFullLine(" ")
|
||||
|
||||
remoteLocation = { transporter.remoteLocation(remoteLocation[1], remoteLocation[2], remoteLocation[3]) }
|
||||
end
|
||||
|
||||
|
|
|
@ -221,8 +221,8 @@ function laser_battery_page()
|
|||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
w.setCursorPos(1, 16)
|
||||
w.write(" Firing mode: " .. data.laser_firingMode)
|
||||
|
@ -236,8 +236,8 @@ function laser_battery_page()
|
|||
w.write("off")
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 19)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Add/Remove/Configure selected battery (A/R/C)")
|
||||
w.writeFullLine(" select battery (Up, Down), Link lasers (L)")
|
||||
w.writeFullLine(" change Firing mode (F), toggle Scatter mode (S)")
|
||||
|
@ -249,8 +249,11 @@ function laser_battery_config()
|
|||
return
|
||||
end
|
||||
w.page_begin(w.data_getName() .. " - Laser battery configuration")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Battery name (" .. laserbattery.name .. "):")
|
||||
laserbattery.name = w.input_readText(laserbattery.name)
|
||||
w.setCursorPos(1, 3)
|
||||
|
@ -261,8 +264,8 @@ function laser_battery_config()
|
|||
if laserbattery.head == nil then
|
||||
return
|
||||
end
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorDisabled()
|
||||
local headX, headY, headZ = laserbattery.head.position()
|
||||
local headFrequency = laserbattery.head.beamFrequency()
|
||||
w.write("@ " .. w.format_integer(headX, 7) .. " " .. w.format_integer(headY, 3) .. " " .. w.format_integer(headZ, 7))
|
||||
|
@ -270,12 +273,12 @@ function laser_battery_config()
|
|||
w.write("With " .. #laserbattery.boosters .. " boosters")
|
||||
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorDisabled()
|
||||
w.write(" Valid values are 0 to 65000 ")
|
||||
w.setColorNormal()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 0 and 65000.")
|
||||
local frequency
|
||||
repeat
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Battery beam frequency (" .. w.format_integer(headFrequency, 5) .. "): ")
|
||||
frequency = w.input_readInteger(headFrequency)
|
||||
|
@ -304,12 +307,12 @@ function laser_battery_linkLasers()
|
|||
end
|
||||
w.page_begin(w.data_getName() .. " - Linking lasers")
|
||||
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 3)
|
||||
w.writeLn("Use Up/Down/Left/Right to select lasers.")
|
||||
w.writeLn("Press backspace/delete to remove laser.")
|
||||
w.writeLn("Press enter to validate.")
|
||||
w.writeLn("Validate with '-no laser-' to stop adding lasers.")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Use Up/Down/Left/Right to select lasers.")
|
||||
w.writeFullLine(" Press backspace/delete to remove laser.")
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.writeFullLine(" Validate with '-no laser-' to stop adding lasers.")
|
||||
|
||||
w.setColorNormal()
|
||||
if laserbattery.boosters == nil then
|
||||
|
@ -328,8 +331,8 @@ function laser_battery_linkLasers()
|
|||
w.writeLn("Laser head (" .. laserbattery.headAddress .. "): ")
|
||||
end
|
||||
laserbattery.headAddress = w.input_readEnum(laserbattery.headAddress, laserAddresses_left, laser_getName, laser_getDescription, "-no laser-")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
if laserbattery.headAddress == nil then
|
||||
w.writeLn("Laser head set to (not defined)")
|
||||
|
@ -346,8 +349,8 @@ function laser_battery_linkLasers()
|
|||
w.writeLn("Laser head set to " .. laserbattery.headAddress)
|
||||
laserbattery.head = w.device_get(laserbattery.headAddress)
|
||||
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorDisabled()
|
||||
local headX, headY, headZ = laserbattery.head.position()
|
||||
local headFrequency = laserbattery.head.beamFrequency()
|
||||
w.write("@ " .. w.format_integer(headX, 7) .. " " .. w.format_integer(headY, 3) .. " " .. w.format_integer(headZ, 7))
|
||||
|
@ -356,8 +359,8 @@ function laser_battery_linkLasers()
|
|||
local key = 1
|
||||
local addressCurrent = nil
|
||||
repeat
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.write("Booster #" .. key)
|
||||
addressCurrent = nil
|
||||
if key <= #laserbattery.boosterAddresses then
|
||||
|
@ -386,8 +389,8 @@ function laser_battery_linkLasers()
|
|||
|
||||
laserbattery.boosterAddresses[key] = addressCurrent
|
||||
laserbattery.boosters[key] = w.device_get(addressCurrent)
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Booster #" .. key .. " set to " .. addressCurrent)
|
||||
key = key + 1
|
||||
|
@ -537,8 +540,8 @@ function laser_station_page()
|
|||
end
|
||||
end
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 14)
|
||||
w.setColorNormal()
|
||||
w.write(" -----------------------------------------------")
|
||||
w.setCursorPos(1, 16)
|
||||
w.write(" Firing mode: " .. data.laser_firingMode)
|
||||
|
@ -552,8 +555,8 @@ function laser_station_page()
|
|||
w.write("off")
|
||||
end
|
||||
|
||||
w.setColorControl()
|
||||
w.setCursorPos(1, 19)
|
||||
w.setColorControl()
|
||||
w.writeFullLine(" Add/Remove/Configure laser station (A/R/C)")
|
||||
w.writeFullLine(" select station (Up, Down), Link batteries (L)")
|
||||
w.writeFullLine(" change Firing mode (F), toggle Scatter mode (S)")
|
||||
|
@ -565,8 +568,11 @@ function laser_station_config()
|
|||
return
|
||||
end
|
||||
w.page_begin(w.data_getName() .. " - Laser station configuration")
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 4)
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.setCursorPos(1, 3)
|
||||
w.setColorNormal()
|
||||
w.writeLn("Laser station name (" .. laserstation.name .. "):")
|
||||
laserstation.name = w.input_readText(laserstation.name)
|
||||
w.setCursorPos(1, 3)
|
||||
|
@ -585,12 +591,12 @@ function laser_station_config()
|
|||
w.write("With " .. #laserstation.batteries .. " batteries")
|
||||
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorDisabled()
|
||||
w.write(" Valid values are 0 to 268435455 ")
|
||||
w.setColorNormal()
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Enter a number between 0 and 268435455.")
|
||||
local channel
|
||||
repeat
|
||||
w.setCursorPos(1, 7)
|
||||
w.setColorNormal()
|
||||
w.write("Camera video channel (" .. w.format_integer(camVideoChannel, 5) .. "): ")
|
||||
channel = w.input_readInteger(camVideoChannel)
|
||||
if channel ~= 0 and (channel < 0 or channel > 268435455) then
|
||||
|
@ -640,12 +646,12 @@ function laser_station_linkBatteries()
|
|||
end
|
||||
w.page_begin(w.data_getName() .. " - Linking batteries")
|
||||
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 3)
|
||||
w.writeLn("Use Up/Down/Left/Right to select batteries.")
|
||||
w.writeLn("Press backspace/delete to remove battery.")
|
||||
w.writeLn("Press enter to validate.")
|
||||
w.writeLn("Validate '-no battery-' to stop adding batteries.")
|
||||
w.setColorHelp()
|
||||
w.writeFullLine(" Use Up/Down/Left/Right to select batteries.")
|
||||
w.writeFullLine(" Press backspace/delete to remove battery.")
|
||||
w.writeFullLine(" Press enter to validate.")
|
||||
w.writeFullLine(" Validate '-no battery-' to stop adding batteries.")
|
||||
|
||||
w.setColorNormal()
|
||||
if laserstation.batteries == nil then
|
||||
|
@ -666,12 +672,12 @@ function laser_station_linkBatteries()
|
|||
else
|
||||
laserstation.camera = w.device_get(laserstation.cameraAddress)
|
||||
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 8)
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.writeLn("Laser camera set to " .. laserstation.cameraAddress)
|
||||
w.setColorDisabled()
|
||||
w.setCursorPos(1, 9)
|
||||
w.setColorDisabled()
|
||||
w.clearLine()
|
||||
local camX, camY, camZ = laserstation.camera.position()
|
||||
local camVideoChannel = laserstation.camera.videoChannel()
|
||||
|
@ -685,8 +691,8 @@ function laser_station_linkBatteries()
|
|||
laser_batteries_left[keyBattery] = laserbattery
|
||||
end
|
||||
repeat
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.write("Battery #" .. key)
|
||||
nameCurrent = nil
|
||||
if key <= #laserstation.batteries then
|
||||
|
@ -713,8 +719,8 @@ function laser_station_linkBatteries()
|
|||
end
|
||||
|
||||
laserstation.batteries[key] = { name = nameCurrent, enabled = true }
|
||||
w.setColorNormal()
|
||||
w.setCursorPos(1, 10 + (key % 5))
|
||||
w.setColorNormal()
|
||||
w.clearLine()
|
||||
w.write("Battery #" .. key .. " set to " .. nameCurrent)
|
||||
key = key + 1
|
||||
|
|
Loading…
Reference in a new issue