erratum/bestiaire/classes/beastfile.lua

57 lines
1.5 KiB
Lua
Raw Normal View History

2024-08-15 10:42:55 +02:00
local BeastFile = Object:extend()
local DataList = require "classes.datalist"
local parseFile = require "libs.filereader"
function BeastFile:new(folder, name, forceLevel)
self.filepath = folder .. "/" .. name
print("Loading " .. self.filepath)
self.datas = DataList(forceLevel)
self:readLines()
end
function BeastFile:readLines()
self:readAllLines(self.filepath)
end
function BeastFile:readAllLines(path)
parseFile(path, function (line) self:addLine(line) end)
end
function BeastFile:addLine(line)
if (utils.startswith(line, "mixin;") or utils.startswith(line, "mixins;")) then
local mixin = utils.split(line, ";", true)[2]
self:loadMixin(mixin)
elseif (utils.startswith(line, "type;") or utils.startswith(line, "types;")) then
local mixin = utils.split(line, ";", true)[2]
self:loadMixin("types/" .. mixin)
else
self.datas:addLine(line)
end
end
function BeastFile:loadMixin(mixin)
local testpath = "data/" .. utils.trim(mixin) .. ".beast"
if (testpath ~= nil) then
self:readAllLines(testpath)
end
end
function BeastFile:forceName(name)
self.datas:forceName(name)
end
function BeastFile:prepareJson(simplercreatures, creatures, parent)
assert(simplercreatures ~= nil)
assert(creatures ~= nil)
self.datas:prepareJson(simplercreatures, creatures, parent)
end
function BeastFile:getRawData()
local content = {}
self.datas:prepareJson({}, content, "Nothing")
return content[1]
end
return BeastFile