sonic-radiance/sonic-radiance.love/game/utils/battle/init.lua

75 lines
2 KiB
Lua
Raw Normal View History

BattleUtils = {}
local datasutils = require "game.utils.datas"
local DIR = "battles"
function BattleUtils.getBaseDirectory(lua)
return datasutils.concatDataFolder(DIR, lua)
end
function BattleUtils.listCategories()
return love.filesystem.getDirectoryItems(BattleUtils.getBaseDirectory(false))
end
function BattleUtils.getCategoryDirectory(directory, lua)
local baseDir = BattleUtils.getBaseDirectory(lua)
return datasutils.concatFolder(baseDir, directory, lua)
end
function BattleUtils.getDirectoryLuaStyle(directory)
return REQUIREDIR .. "." .. directory
end
function BattleUtils.getBattleFromCategory(directory)
local folder = BattleUtils.getCategoryDirectory(directory, false)
return datasutils.luaFileListToModuleList(love.filesystem.getDirectoryItems(folder))
end
function BattleUtils.getBattleData(directory, battlename)
local categoryDir = BattleUtils.getCategoryDirectory(directory, true)
return datasutils.require(categoryDir, battlename)
end
-- ENNEMY FUNCTIONS
function BattleUtils.getEnnemyTypeStructure(type)
local typeList = require "game.utils.battle.arguments"
return typeList[type]
end
function BattleUtils.ennemyTypeExists(type)
return (BattleUtils.getEnnemyTypeStructure(type) ~= nil)
end
function BattleUtils.validateEnnemyType(ennemyBaseData)
local structure = BattleUtils.getEnnemyTypeStructure(ennemyBaseData[1])
if (structure == nil) then
return false
else
return ((#structure + 1) == #ennemyBaseData)
end
end
function BattleUtils.getEnnemyData(ennemyBaseData)
local ennemyData = {}
ennemyData.type = ennemyBaseData[1]
if (BattleUtils.validateEnnemyType(ennemyBaseData)) then
local structure = BattleUtils.getEnnemyTypeStructure(ennemyData.type)
for i, argumentName in ipairs(structure) do
local argumentContent = ennemyBaseData[i + 1]
ennemyData[argumentName] = argumentContent
end
return ennemyData
else
error("Le type d'ennemy " .. ennemyData.type .. " à un nbr d'argument incorrect")
end
end
return BattleUtils