diff --git a/src/data/classes.lua b/src/data/classes.lua index c713733..5dc0818 100644 --- a/src/data/classes.lua +++ b/src/data/classes.lua @@ -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) diff --git a/src/data/constants.lua b/src/data/constants.lua index 1996439..dac3fbe 100644 --- a/src/data/constants.lua +++ b/src/data/constants.lua @@ -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 diff --git a/src/data/races.lua b/src/data/races.lua index 62aef95..9c1deed 100644 --- a/src/data/races.lua +++ b/src/data/races.lua @@ -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) diff --git a/src/main.lua b/src/main.lua index b5e7792..ba6dab3 100644 --- a/src/main.lua +++ b/src/main.lua @@ -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(),