MineOS но вопрос по луа. Есть 2 таблицы: game.screen и game.screen.buffer. В процессе отрисовки нужно что-бы все параметр из game.screen перекатились в game.screen.buffer. Они это делают но вот загвоздка: мне не всралось что-бы когда в game.screen менялось значение, оно менялось и в game.screen.buffer.
Мега ультра код:
Скрытый текст
for i = 1, #game.screen do
if game.screen.buffer[i] == nil then
print('nil !')
game.screen.buffer[i] = {visible = false}
end
print(game.screen.buffer[i].text, game.screen[i].text)
...
print('Copy buffer')
game.screen.buffer = {}
for i = 1,#game.screen do
table.insert(game.screen.buffer, game.screen[i]) -- Пробовал (изначально было) game.screen.buffer[i] = game.screen[i], результат тотже
print(game.screen.buffer[i].text)
end
В том то и смысл что если в скрине менялось значение, а в буфере нет, то означает что объект изменили и мы смотрим что изменили, после чего изменяем на значение скрина, а в конце копируем скрин в буфер потому-что значение то изменилось дабы если снова изменилось и так по кругу.
Весь код:
Скрытый текст
for i = 1, #game.screen do
if game.screen.buffer[i] == nil then
print('nil !')
game.screen.buffer[i] = {visible = false}
end
if game.screen[i].type == 'text' then
print('text')
if game.screen[i].visible ~= game.screen.buffer[i].visible then
print('Visible')
if game.screen[i] and not game.screen.buffer[i].visible then
local tmp = screen:addChild(GUI.text(game.screen[i].x,game.screen[i].y,game.screen[i].color,game.screen[i].text))
game.screen[i].raw = tmp
else
game.screen[i].raw:remove()
end
end
if game.screen[i].x ~= game.screen.buffer[i].x then
game.screen[i].raw.localX = game.screen[i].x
print('x')
end
if game.screen[i].y ~= game.screen.buffer[i].y then
game.screen[i].raw.localY = game.screen[i].y
print('y')
end
if game.screen[i].text ~= game.screen.buffer[i].text then
game.screen[i].raw.text= game.screen[i].text
print('text')
end
if game.screen[i].color ~= game.screen.buffer[i].color then
game.screen[i].raw.color = game.screen[i].color
print('color')
end
end
end
print('Copy buffer')
game.screen.buffer = {}
for i = 1,#game.screen do -- Поэелементно и в лоб шо-бы у нас не дюпались буфера (game.screen.buffer = game.screen <-- Содержить буфер), которые там и не будем использовать. (Внутри буффера)
print(game.screen.buffer[i].text)
table.insert(game.screen.buffer, game.screen[i]) -- Было еще и game.screen.buffer[i] = game.screen[i]
print(game.screen.buffer[i].text)
end
MineOS но вопрос по луа. Есть 2 таблицы: game.screen и game.screen.buffer. В процессе отрисовки нужно что-бы все параметр из game.screen перекатились в game.screen.buffer. Они это делают но вот загвоздка: мне не всралось что-бы когда в game.screen менялось значение, оно менялось и в game.screen.buffer.
Мега ультра код:
for i = 1, #game.screen do if game.screen.buffer[i] == nil then print('nil !') game.screen.buffer[i] = {visible = false} end print(game.screen.buffer[i].text, game.screen[i].text) ... print('Copy buffer') game.screen.buffer = {} for i = 1,#game.screen do table.insert(game.screen.buffer, game.screen[i]) -- Пробовал (изначально было) game.screen.buffer[i] = game.screen[i], результат тотже print(game.screen.buffer[i].text) end
В том то и смысл что если в скрине менялось значение, а в буфере нет, то означает что объект изменили и мы смотрим что изменили, после чего изменяем на значение скрина, а в конце копируем скрин в буфер потому-что значение то изменилось дабы если снова изменилось и так по кругу.
Весь код:
for i = 1, #game.screen do if game.screen.buffer[i] == nil then print('nil !') game.screen.buffer[i] = {visible = false} end if game.screen[i].type == 'text' then print('text') if game.screen[i].visible ~= game.screen.buffer[i].visible then print('Visible') if game.screen[i] and not game.screen.buffer[i].visible then local tmp = screen:addChild(GUI.text(game.screen[i].x,game.screen[i].y,game.screen[i].color,game.screen[i].text)) game.screen[i].raw = tmp else game.screen[i].raw:remove() end end if game.screen[i].x ~= game.screen.buffer[i].x then game.screen[i].raw.localX = game.screen[i].x print('x') end if game.screen[i].y ~= game.screen.buffer[i].y then game.screen[i].raw.localY = game.screen[i].y print('y') end if game.screen[i].text ~= game.screen.buffer[i].text then game.screen[i].raw.text= game.screen[i].text print('text') end if game.screen[i].color ~= game.screen.buffer[i].color then game.screen[i].raw.color = game.screen[i].color print('color') end end end print('Copy buffer') game.screen.buffer = {} for i = 1,#game.screen do -- Поэелементно и в лоб шо-бы у нас не дюпались буфера (game.screen.buffer = game.screen <-- Содержить буфер), которые там и не будем использовать. (Внутри буффера) print(game.screen.buffer[i].text) table.insert(game.screen.buffer, game.screen[i]) -- Было еще и game.screen.buffer[i] = game.screen[i] print(game.screen.buffer[i].text) end
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах