Я работаю над игрой, используя Lua и LÖVE.
Я предпочитаю ООП подход, основанный на замыкании, и каждый уровень — это новый экземпляр функции, содержащей все локальные переменные и функции, необходимые для запуска игры.
Я хотел бы разбить эту единственную функцию на несколько файлов. Мое текущее решение похоже на то, что я сделал здесь: объединение нескольких файлов в один - но я действительно не думаю, что это пока идеально.
Например, у меня был бы файл load.lua с функцией self.load из фрагмента ниже.
Фрагмент кода гигантской функции для справки ниже:
levelSetup = function()
local time = 60
local timer = time
local timerIsRunning = true
local danger = 10
local handSize = 2
local itemsLeft = handSize
local curHand = 0
local lastHand = 10
local multiplier = 1
local self = {}
------------------------------------------------------
-- Initialize Values based on level Creation
------------------------------------------------------
self.load = function()
if curLevel.time == 1 then
time = 60
elseif curLevel.time == 2 then
time = 40
multiplier = multiplier*1.5
else
time = 20
multiplier = multiplier*2
end
if curLevel.danger == 1 then
danger = 10 --low catastrophe chance
elseif curLevel.danger == 2 then
danger = 30 --medium chance
multiplier = multiplier*1.5
else
danger = 50--high chance!
multiplier = multiplier*2
end
if curLevel.handSize == 1 then
handSize = 2
elseif curLevel.handSize == 2 then
handSize = 3
multiplier = multiplier*1.5
else
handSize = 4
multiplier = multiplier*2
end
itemsLeft = handSize
timer = time
self.nextHand()
end
return self
end