add new scripts for moon digger ship

This commit is contained in:
sfokin 2025-03-31 00:03:23 +03:00
parent c3d8adb520
commit ebfc27a676
3 changed files with 366 additions and 0 deletions

View File

@ -3,6 +3,8 @@ mem.events = {}
end
if event.type == "digiline" then
table.insert(mem.events, event)
end

View File

@ -0,0 +1,222 @@
local function drawui()
digiline_send("touch",{
{
command="clear",
},{
command="addbutton",
name="btnxinc",
label="x+",
Y=0.8, X=0.8, H=0.8, W=1.2,
},{
command="addbutton",
name="btnxdec",
label="x-",
Y=0.8, X=2, H=0.8, W=1.2,
},{
command="addbutton",
name="btnydec",
label="y-",
Y=1.6, H=0.8, W=1.2, X=2,
},{
command="addbutton",
name="btnyinc",
label="y+",
Y=1.6, X=0.8, H=0.8, W=1.2,
},{
command="addbutton",
name="btnzinc",
label="z+",
Y=2.4, X=0.8, H=0.8, W=1.2,
},{
command="addbutton",
name="btnzdec",
label="z-",
Y=2.4, X=2, H=0.8, W=1.2,
},{
command="addbutton",
name="btnstepinc",
label="step+",
Y=3.2, H=0.8, W=1.2, X=0.8,
},{
command="addbutton",
name="btnstepdec",
label="step-",
Y=3.2, H=0.8, W=1.2, X=2,
},{
command="addbutton",
name="btnsim",
label="Simulate",
Y=4.4, X=0.8, H=0.8, W=1.6,
},{
command="addbutton",
name="btnjump",
label="Jump",
Y=5.2, H=0.8, W=1.6, X=0.8,
},{
command="addbutton",
name="btnreset",
label="Reset",
Y=6.4, H=0.8, W=1.6, X=0.8,
},{
command="addbutton",
name="btnfire",
label="Fire",
Y=5.2, X=2.4, H=0.8, W=1.6,
},{
command="addlabel",
label="Position",
Y=0.3, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Destination",
Y=0.3, X=5.9, H=0.8, W=1.2,
},{
command="addlabel",
label="Step: "..mem.step or 1,
Y=3.3, X=3.5, H=0.8, W=1.2,
}
})
end
local function updatepositionui()
digiline_send("touch",{
{
command="addlabel",
label="X: "..mem.position.x or 0,
Y=0.7, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Y: "..mem.position.y or 0,
Y=1.5, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Z: "..mem.position.z or 0,
Y=2.3, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="X: "..mem.target.x or 0,
Y=0.7, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Y: "..mem.target.y or 0,
Y=1.5, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Z: "..mem.target.z or 0,
Y=2.3, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Power: "..mem.powerstorage or 0,
Y=0.1, X=0.1, H=0.8, W=1.2,
},{
command="addlabel",
label="Distance: "..mem.distance or 0,
Y=2.9, X=3.5, H=0.8, W=1.2,
},{
command="addlabel",
label="Power req: "..mem.power_req or 0,
Y=2.9, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Simulate: "..tostring(mem.sim),
Y=3.3, X=6, H=0.8, W=1.2,
},{
command="addlabel",
label="Sim: "..mem.msg,
Y=4.3, X=3.5, H=0.8, W=1.2,
}
})
end
if event.type == "program" then
mem.position = {x = 0, y = 0, z=0}
mem.target = {x = 0, y = 0, z=0}
mem.step = 1
mem.sim = false
mem.msg = ""
mem.powerstorage = 0
mem.distance = 0
mem.power_req = 0
drawui()
updatepositionui()
digiline_send("jumpdrive", {
command = "get"
})
--interrupt(2)
--elseif event.type == "interrupt" then
--- digiline_send("jumpdrive", {
--- command = "get"
--- })
elseif event.type == "digiline" and event.channel == "jumpdrive" then
if event.msg.position ~= nil then
mem.position = event.msg.position
end
if event.msg.target ~= nil then
mem.target = event.msg.target
end
if event.msg.powerstorage ~= nil then
mem.powerstorage = event.msg.powerstorage
end
if event.msg.distance ~= nil then
mem.distance = event.msg.distance
end
if event.msg.power_req ~= nil then
mem.power_req = event.msg.power_req
end
if event.msg.success ~= nill then
mem.sim = event.msg.success
end
if event.msg.msg ~= nill then
mem.msg = event.msg.msg
end
drawui()
updatepositionui()
elseif event.type == "digiline" and event.channel == "touch" then
if event.msg.btnreset then
digiline_send("jumpdrive", {
command = "reset"
})
elseif event.msg.btnstepinc then
mem.step = mem.step+1
elseif event.msg.btnstepdec then
mem.step = mem.step-1
if mem.step < 1 then
mem.step = 1
end
elseif event.msg.btnxinc then
local x = mem.target.x + mem.step
digiline_send("jumpdrive", { command = "set", key = "x", value = x })
elseif event.msg.btnxdec then
local x = mem.target.x - mem.step
digiline_send("jumpdrive", { command = "set", key = "x", value = x })
elseif event.msg.btnyinc then
local y = mem.target.y + mem.step
digiline_send("jumpdrive", { command = "set", key = "y", value = y })
elseif event.msg.btnydec then
local y = mem.target.y - mem.step
digiline_send("jumpdrive", { command = "set", key = "y", value = y })
elseif event.msg.btnzinc then
local z = mem.target.z + mem.step
digiline_send("jumpdrive", { command = "set", key = "z", value = z })
elseif event.msg.btnzdec then
local z = mem.target.z - mem.step
digiline_send("jumpdrive", { command = "set", key = "z", value = z })
elseif event.msg.btnsim then
digiline_send("jumpdrive", {
command = "simulate"
})
elseif event.msg.btnjump then
digiline_send("jumpdrive", {
command = "jump"
})
elseif event.msg.btnfire then
digiline_send("cannon", { command="fire", verbose=false })
end
digiline_send("jumpdrive", {
command = "get"
})
end

View File

@ -0,0 +1,142 @@
local interval = 30
local function showquarystatus(mon, msg, name)
if msg.enabled == 1 then
digiline_send(mon, "-----"..name.."-----")
else
digiline_send(mon, "#####"..name.."#####")
end
digiline_send(mon, "Dgging..."..msg.max_depth)
digiline_send(mon, "Radius:"..msg.radius)
digiline_send(mon, "Level:" .. msg.dig_level)
digiline_send(mon, "Dug:" .. msg.dug_nodes)
local finished = "No"
if msg.finished == true then
finished = "Yes"
end
digiline_send(mon, "Finished:" .. finished)
end
local function sendmessage(msg)
digiline_send("q1", msg)
digiline_send("q2", msg)
digiline_send("q3", msg)
digiline_send("q4", msg)
end
local function setuptouchscreen()
digiline_send("touchscreen", {
command = "set",
locked = true,
no_prepend = false,
real_coordinates = false,
fixed_size = false,
width = 10,
height = 8,
focus = "Tacit",
})
digiline_send("touchscreen",
{
{
command="clear",
},
{ label="Turn all on",
command="addbutton",
name="btnTurnAllOn",
H=0.8, W=1.6, X=0.8, Y=0.8,
},
{ label="Turn all off",
command="addbutton",
name="btnTurnAllOff",
X=0.8, H=0.8, W=1.6, Y=2,
},
{
label="Quaries",
listelements={ "1", "2", "3", "4", },
selected_id=mem.selectedq or 0,
transparent=false,
command="addtextlist",
name="qlist",
W=2.6, Y=0.8, H=1.8, X=5.6,
},
{
label="Turn on",
command="addbutton",
name="btnTurnOn",
H=0.8, W=1.6, X=3.2, Y=0.8,
} ,
{
label="Turn off",
command="addbutton",
name="btnTurnOff",
H=0.8, W=1.6, X=3.2, Y=2,
},
{
label="Restart all",
command="addbutton",
name="btnRestartAll",
X=0.8, H=0.8, W=1.6, Y=3.2,
},
{
label="Restart",
command="addbutton",
name="btnRestart",
H=0.8, W=1.6, X=3.2, Y=3.2,
},
{X=7.18,label="Created with SX Digi labs Touch Designer",Y=8.11,command="addlabel"}
})
end
if event.type == "program" then
setuptouchscreen()
mem.heat = heat
interrupt(interval)
end
if event.type == "interrupt" then
digiline_send("q1", "GET")
digiline_send("q2", "GET")
digiline_send("q3", "GET")
digiline_send("q4", "GET")
digiline_send("pm", "GET")
interrupt(interval)
end
if event.type == "digiline" then
if event.channel == "touchscreen" then
if event.msg.btnTurnAllOn ~= nill then
sendmessage("on")
elseif event.msg.btnTurnAllOff ~= nil then
sendmessage("off")
elseif event.msg.btnRestartAll ~= nil then
sendmessage("restart")
elseif event.msg.btnTurnOn ~= nil then
local q = mem.selectedq or 0
digiline_send("q"..q, "on")
elseif event.msg.btnTurnOff ~= nil then
local q = mem.selectedq or 0
digiline_send("q"..q, "off")
elseif event.msg.btnRestart ~= nil then
local q = mem.selectedq or 0
digiline_send("q"..q, "restart")
elseif event.msg.qlist ~= nil then
mem.selectedq = tonumber(string.sub(event.msg.qlist,5,5))
setuptouchscreen()
end
elseif
event.channel == "pm" then
digiline_send("monpm", "Power HV")
digiline_send("monpm", "S:"..event.msg.supply)
digiline_send("monpm", "D:"..event.msg.demand)
digiline_send("monpm", "Battery:"..event.msg.battery_count)
digiline_send("monpm", "BC:"..event.msg.battery_charge)
digiline_send("monpm", "BCM:"..event.msg.battery_charge_max)
elseif event.channel == "q1" then
showquarystatus("mon", event.msg, event.channel)
elseif event.channel == "q2" then
showquarystatus("mon2", event.msg, event.channel)
elseif event.channel == "q3" then
showquarystatus("mon3", event.msg, event.channel)
elseif event.channel == "q4" then
showquarystatus("mon4", event.msg, event.channel)
else mem.event = event
end
end