Компьютерная программа в Луа
Так вот в чем дело, я пытаюсь сделать полностью настраиваемый пользовательский интерфейс в компьютерном мире, используя массивы lua, и когда я использую это, пользовательский интерфейс, кажется, всегда пуст
function dupChar(char, num)
ret = ''
for ii=1,num do
ret = ret..char
end
return ret
end
function drawLoad()
--Pattern:
-- X, Y, Text, FG, BG, Disabled for op, button action
ui = {}
ui.hungerStart = {3,4,'[',nil,nil,false,'none'}
ui.hungerMid1 = {ui.hungerStart[1] + 1,ui.hungerStart[2],dupChar('-',20),nil,nil,false,'none'}
ui.hungerMid2 = {ui.hungerStart[1] + 1,ui.hungerStart[2],hunger,nil,nil,false,'none'}
ui.hungerStop = {ui.hungerStart[1] + 21,ui.hungerStart[2],']',nil,nil,false,'none'}
ui.healthStart = {3,6,'[',nil,nil,false,'kill'}
ui.healthMid1 = {ui.healthStart[1] + 1,ui.healthStart[2],dupChar('-',20),nil,nil,false,'health'}
ui.healthMid2 = {ui.healthStart[1] + 1,ui.healthStart[2],health,nil,nil,false,'health'}
ui.healthStop = {ui.healthStart[1] + 21, ui.healthStart[2],']',nil,nil,false,'heal'}
end
function drawAdv(pName, page)
isOp = false
pHealth = 10
pHunger = 10
health = dupChar('$',pHealth)
hunger = dupChar('@',pHunger)
drawLoad()
color(custCol.default[1], custCol.default[2])
stat.clear()
term.clear()
for index, value in ipairs(ui) do
x, y, text, fg, bg, disOp, action = value[1],value[2],value[3],value[3],value[4],value[5],value[6]
color(custCol.default[1], custCol.default[2])
cur(x,y)
if disOp then
color(custCol.disOp[1], custCol.disOp[2])
else
color(fg,bg)
end
awrite(text)
end
end
Другое дело знать, если
for index, x, y, text, fg, bg, disOp, action in ipairs(ui) do
или же
for index, value in ipairs(ui) do
x, y, text, fg, bg, disOp, action = value[1],value[2],value[3],value[3],value[4],value[5],value[6]
это способ получить записи в списке
NB: код немного запутанный, но это потому, что я пытался сделать его максимально возможным, не используя его в ComputerCraft (некоторые функции все еще здесь и не будут работать с lua)
Спасибо за чтение и, возможно, помогаете мне:)
1 ответ
Решение
for index, value in ipairs(ui) do
local x, y, text, fg, bg, disOp, action = unpack(value)
-- do something
end
function dupChar(char, num)
return char:rep(num)
end