abstracted data loading better

This commit is contained in:
2026-09-22 21:30:05 -06:00
parent d176ef90f8
commit 83b6ba1f72
4 changed files with 44 additions and 73 deletions
+1 -35
View File
@@ -3,38 +3,4 @@ local utility = require "lib.utility"
local classes = utility.load_data("classes.json")
-- TODO abstract out since this is shared between classes and races
local class_names = {}
for name, data in pairs(classes) do
class_names[#class_names + 1] = name
if type(data.tasks) == "string" then
data.tasks = { data.tasks }
elseif not data.tasks then
data.tasks = {}
end
local tasks = data.tasks
for index, task in ipairs(tasks) do
if type(task) == "string" then
local time = #task * constants.reading_time_multiplier
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task}
elseif #task == 1 then
local time = #task[1] * constants.reading_time_multiplier
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task[1]}
elseif #task == 2 then
local time = tasks[1]
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task[2]}
end
end
end
table.sort(class_names)
return {
classes = classes,
names = class_names,
}
return constants.fix_stats_tasks(classes)
+40 -1
View File
@@ -1,4 +1,43 @@
return {
local utility = require "lib.utility"
local constants = {
progress_bar_height = 30,
reading_time_multiplier = 1 / 9,
}
constants.fix_stats_tasks = function(data)
local result = {}
for name, data in pairs(data) do
result[name] = data
result[#result + 1] = name
if type(data.tasks) == "string" then
data.tasks = { data.tasks }
elseif not data.tasks then
data.tasks = {}
end
local tasks = data.tasks
for index, task in ipairs(tasks) do
if type(task) == "string" then
local time = #task * constants.reading_time_multiplier
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task}
elseif #task == 1 then
local time = #task[1] * constants.reading_time_multiplier
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task[1]}
elseif #task == 2 then
local time = tasks[1]
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task[2]}
end
end
end
table.sort(result)
return result
end
return constants
+1 -35
View File
@@ -3,38 +3,4 @@ local utility = require "lib.utility"
local races = utility.load_data("races.json")
-- TODO abstract out since this is shared between classes and races
local race_names = {}
for name, data in pairs(races) do
race_names[#race_names + 1] = name
if type(data.tasks) == "string" then
data.tasks = { data.tasks }
elseif not data.tasks then
data.tasks = {}
end
local tasks = data.tasks
for index, task in ipairs(tasks) do
if type(task) == "string" then
local time = #task * constants.reading_time_multiplier
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task}
elseif #task == 1 then
local time = #task[1] * constants.reading_time_multiplier
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task[1]}
elseif #task == 2 then
local time = tasks[1]
-- TODO decide on a random amount of extra time to add
tasks[index] = {time, time, task[2]}
end
end
end
table.sort(race_names)
return {
races = races,
names = race_names,
}
return constants.fix_stats_tasks(races)
+2 -2
View File
@@ -49,8 +49,8 @@ local new_character = function(name)
local character = {
seed = seed,
name = name,
race = races.names[math.random(1, #races.names)],
class = classes.names[math.random(1, #classes.names)],
race = races[math.random(1, #races)],
class = classes[math.random(1, #classes)],
charisma = base_stat_roll(),
constitution = base_stat_roll(),
dexterity = base_stat_roll(),