Skip to content

Commit

Permalink
fix level change event broken from asset rework
Browse files Browse the repository at this point in the history
  • Loading branch information
Bauumm committed Sep 21, 2023
1 parent 34a1269 commit b663875
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 47 deletions.
2 changes: 1 addition & 1 deletion compat/game192/events.lua
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ function events.init(game, public)
event_executors = {
level_change = function(event)
game.status.must_restart = true
game.restart_id = game.pack.folder .. "_" .. event.id:match("/(.*)"):match("/(.*)")
game.restart_id = event.id:match("/(.*)"):match("/(.*)")
game.restart_first_time = true
end,
menu = function()
Expand Down
92 changes: 46 additions & 46 deletions game_handler/assets.lua
Original file line number Diff line number Diff line change
Expand Up @@ -191,48 +191,42 @@ function assets.init(persistent_data, headless)
for contents, filename in file_iter("Levels", ".json", pack_data) do
local success, level_json = decode_json(contents, filename)
if success then
local proceed = true
if pack_data.game_version == 192 then
proceed = level_json.selectable
-- make keys have the same name for all versions
-- get key names
local key_names = {}
for key in pairs(level_json) do
key_names[#key_names + 1] = key
end
-- and then translate them to avoid modifying the table while iterating (which may skip some keys)
for k = 1, #key_names do
local key = key_names[k]
local value = level_json[key]
local snake_case_key = key:gsub("([a-z])([A-Z])", "%1_%2"):lower()
snake_case_key = snake_case_key:gsub("multipliers", "mults")
level_json[snake_case_key] = value
end
if proceed then
-- make keys have the same name for all versions
-- get key names
local key_names = {}
for key in pairs(level_json) do
key_names[#key_names + 1] = key
end
-- and then translate them to avoid modifying the table while iterating (which may skip some keys)
for k = 1, #key_names do
local key = key_names[k]
local value = level_json[key]
local snake_case_key = key:gsub("([a-z])([A-Z])", "%1_%2"):lower()
snake_case_key = snake_case_key:gsub("multipliers", "mults")
level_json[snake_case_key] = value
end

-- default
level_json.id = level_json.id or "nullId"
level_json.difficulty_mults = level_json.difficulty_mults or {}
-- add 1x difficulty mult if it doesn't exist
local has1 = false
for k = 1, #level_json.difficulty_mults do
if level_json.difficulty_mults[k] == 1 then
has1 = true
break
end
-- default
level_json.id = level_json.id or "nullId"
level_json.difficulty_mults = level_json.difficulty_mults or {}
-- add 1x difficulty mult if it doesn't exist
local has1 = false
for k = 1, #level_json.difficulty_mults do
if level_json.difficulty_mults[k] == 1 then
has1 = true
break
end
if not has1 then
level_json.difficulty_mults[#level_json.difficulty_mults + 1] = 1
end
-- sort difficulties
table.sort(level_json.difficulty_mults)

pack_data.levels[level_json.id] = level_json
pack_data.level_list[#pack_data.level_list + 1] = level_json
-- ensure original order for same priority levels
level_json.sort_index = #pack_data.level_list
end
if not has1 then
level_json.difficulty_mults[#level_json.difficulty_mults + 1] = 1
end
-- sort difficulties
table.sort(level_json.difficulty_mults)

pack_data.levels[level_json.id] = level_json
pack_data.level_list[#pack_data.level_list + 1] = level_json
-- ensure original order for same priority levels
level_json.sort_index = #pack_data.level_list
else
log("Failed to parse level json:", filename)
end
Expand Down Expand Up @@ -280,14 +274,20 @@ function assets.init(persistent_data, headless)
for k = 1, #pack_data.level_list do
local level = pack_data.level_list[k]
level.sort_index = nil
data.register_level(
pack_data.id,
level.id,
level.name,
level.author,
level.description,
{ difficulty_mult = level.difficulty_mults }
)
local proceed = true
if pack_data.game_version == 192 then
proceed = level.selectable
end
if proceed then
data.register_level(
pack_data.id,
level.id,
level.name,
level.author,
level.description,
{ difficulty_mult = level.difficulty_mults }
)
end
end
else
log("Pack with id '" .. pack_data.id .. "' has unsatisfied dependencies!")
Expand Down

0 comments on commit b663875

Please sign in to comment.