161 lines
5.4 KiB
TOML
161 lines
5.4 KiB
TOML
[manifest]
|
|
version = "1.0.0"
|
|
dump_lua = true
|
|
priority = -10
|
|
|
|
# Handle multi boxes in localize
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/misc_functions.lua'
|
|
match_indent = true
|
|
position = 'before'
|
|
pattern = '''
|
|
for _, lines in ipairs(args.type == 'unlocks' and loc_target.unlock_parsed or args.type == 'name' and loc_target.name_parsed or (args.type == 'text' or args.type == 'tutorial' or args.type == 'quips') and loc_target or loc_target.text_parsed) do
|
|
'''
|
|
payload = '''
|
|
args.AUT = args.AUT or {}
|
|
args.AUT.box_colours = {}
|
|
if (args.type == 'descriptions' or args.type == 'other') and type(loc_target.text) == 'table' and type(loc_target.text[1]) == 'table' then
|
|
if not args.is_info_queue then
|
|
args.AUT.multi_box = {}
|
|
end
|
|
for i, box in ipairs(loc_target.text_parsed) do
|
|
for j, line in ipairs(box) do
|
|
local final_line = SMODS.localize_box(line, args)
|
|
if i == 1 or next(args.AUT.info) then
|
|
args.nodes[#args.nodes+1] = final_line -- Sends main box to AUT.main
|
|
if not next(args.AUT.info) then args.nodes.main_box_flag = true end
|
|
elseif not next(args.AUT.info) then
|
|
args.AUT.multi_box[i-1] = args.AUT.multi_box[i-1] or {}
|
|
args.AUT.multi_box[i-1][#args.AUT.multi_box[i-1]+1] = final_line
|
|
end
|
|
if not next(args.AUT.info) then args.AUT.box_colours[i] = args.vars.box_colours and args.vars.box_colours[i] or G.C.UI.BACKGROUND_WHITE end
|
|
end
|
|
end
|
|
return
|
|
end
|
|
'''
|
|
|
|
# Patch importing localizations
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/misc_functions.lua'
|
|
match_indent = true
|
|
position = 'at'
|
|
pattern = '''
|
|
for _, line in ipairs(center.text) do
|
|
center.text_parsed[#center.text_parsed+1] = loc_parse_string(line)
|
|
end
|
|
'''
|
|
payload = '''
|
|
for _, line in ipairs(center.text) do
|
|
if type(line) == 'table' then
|
|
center.text_parsed[#center.text_parsed+1] = {}
|
|
for _, new_line in ipairs(line) do
|
|
center.text_parsed[#center.text_parsed][#center.text_parsed[#center.text_parsed]+1] = loc_parse_string(new_line)
|
|
end
|
|
else
|
|
center.text_parsed[#center.text_parsed+1] = loc_parse_string(line)
|
|
end
|
|
end
|
|
'''
|
|
|
|
# Create extra boxes
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/UI_definitions.lua'
|
|
match_indent = true
|
|
position = 'before'
|
|
pattern = '''
|
|
if AUT.info then
|
|
'''
|
|
payload = '''
|
|
AUT.main.background_colour = AUT.main.background_colour or AUT.box_colours and AUT.box_colours[1] or nil
|
|
local multi_boxes = {}
|
|
if AUT.multi_box then
|
|
for i, box in ipairs(AUT.multi_box) do
|
|
box.background_colour = box.background_colour or AUT.box_colours and AUT.box_colours[i+1] or nil
|
|
multi_boxes[#multi_boxes+1] = desc_from_rows(box)
|
|
end
|
|
end
|
|
'''
|
|
|
|
# Change return so it can be modified
|
|
# Includes some info_boxes patch that got munched
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/UI_definitions.lua'
|
|
match_indent = true
|
|
position = 'at'
|
|
pattern = '''
|
|
return {n=G.UIT.ROOT, config = {align = 'cm', colour = G.C.CLEAR}, nodes={
|
|
{n=G.UIT.C, config={align = "cm", func = 'show_infotip',object = Moveable(),ref_table = next(info_boxes) and info_boxes or nil}, nodes={
|
|
'''
|
|
payload = '''
|
|
local cols
|
|
if #info_boxes <= 3 then
|
|
cols = 1
|
|
elseif #info_boxes <= 10 then
|
|
cols = 2
|
|
elseif #info_boxes <= 24 then
|
|
cols = 3
|
|
else
|
|
cols = 4
|
|
end
|
|
local nodes_per_col = math.ceil(#info_boxes/cols)
|
|
local info_cols = {}
|
|
for i = 0, cols-1 do
|
|
local col = {}
|
|
for j = 1, nodes_per_col do
|
|
local info_box = info_boxes[i*nodes_per_col+j]
|
|
if info_box then
|
|
table.insert(col, info_box)
|
|
else break end
|
|
end
|
|
table.insert(info_cols, {n=G.UIT.C, config = {align="cm"}, nodes = col})
|
|
end
|
|
info_boxes = {{n=G.UIT.R, config = {align="cm", padding = 0.05, card_pos = card.T.x }, nodes = info_cols}}
|
|
local ret_val = {n=G.UIT.ROOT, config = {align = 'cm', colour = G.C.CLEAR}, nodes={
|
|
{n=G.UIT.C, config={align = "cm", func = 'show_infotip',object = Moveable(),ref_table = next(info_boxes) and info_boxes or nil}, nodes={
|
|
'''
|
|
|
|
# Add multi boxes to return table
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/UI_definitions.lua'
|
|
match_indent = true
|
|
position = 'after'
|
|
pattern = '''
|
|
badges[1] and {n=G.UIT.R, config={align = "cm", padding = 0.03}, nodes=badges} or nil,
|
|
}}
|
|
}}
|
|
}},
|
|
}}
|
|
'''
|
|
payload = '''
|
|
if multi_boxes[1] then
|
|
for i=1, #ret_val.nodes[1].nodes[1].nodes[1].nodes do -- find the main box
|
|
if ret_val.nodes[1].nodes[1].nodes[1].nodes[i] and ret_val.nodes[1].nodes[1].nodes[1].nodes[i].config and ret_val.nodes[1].nodes[1].nodes[1].nodes[i].config.main_box_flag then
|
|
for j=#multi_boxes, 1, -1 do -- add the extra boxes
|
|
table.insert(ret_val.nodes[1].nodes[1].nodes[1].nodes, i+1, multi_boxes[j])
|
|
end
|
|
break
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
return ret_val
|
|
'''
|
|
|
|
# Add main_box_flag to the main box
|
|
[[patches]]
|
|
[patches.pattern]
|
|
target = 'functions/UI_definitions.lua'
|
|
match_indent = true
|
|
position = 'at'
|
|
pattern = '''
|
|
return {n=G.UIT.R, config={align = "cm", colour = empty and G.C.CLEAR or G.C.UI.BACKGROUND_WHITE, r = 0.1, padding = 0.04, minw = 2, minh = 0.8, emboss = not empty and 0.05 or nil, filler = true}, nodes={'''
|
|
payload = '''
|
|
return {n=G.UIT.R, config={align = "cm", colour = empty and G.C.CLEAR or G.C.UI.BACKGROUND_WHITE, r = 0.1, padding = 0.04, minw = 2, minh = 0.8, emboss = not empty and 0.05 or nil, filler = true, main_box_flag = desc_nodes.main_box_flag and true or nil}, nodes={'''
|