-
-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathutils.lua
More file actions
129 lines (116 loc) · 3.28 KB
/
utils.lua
File metadata and controls
129 lines (116 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
MP.UI.UTILS = {}
-- Creates a text node
function MP.UI.UTILS.create_text_node(text, config)
config = config or {}
config.text = text
return { n = G.UIT.T, config = config }
end
-- Creates a row container
function MP.UI.UTILS.create_row(config, nodes)
config = config or {}
return { n = G.UIT.R, config = config, nodes = nodes or {} }
end
-- Creates a column container
function MP.UI.UTILS.create_column(config, nodes)
config = config or {}
return { n = G.UIT.C, config = config, nodes = nodes or {} }
end
-- Creates a DynaText object
function MP.UI.UTILS.create_dynatext(string_or_table, config)
config = config or {}
config.string = string_or_table
return DynaText(config)
end
-- Creates a blank spacer
function MP.UI.UTILS.create_blank(w, h)
return { n = G.UIT.B, config = { w = w, h = h } }
end
-- Creates a container with object
function MP.UI.UTILS.create_object_node(object, config)
config = config or {}
config.object = object
return { n = G.UIT.O, config = config }
end
--- Overlay with a DynaText countdown timer
--- @param message string Static message lines (newline-separated)
--- @param countdown_table table Table with a "display" key that gets updated externally
--- @param no_back boolean If true, disables back/esc buttons
function MP.UI.UTILS.overlay_message_countdown(message, countdown_table, no_back)
G.SETTINGS.paused = true
local message_table = MP.UTILS.string_split(message, "\n")
local message_ui = {
MP.UI.UTILS.create_row({ align = "cm", padding = 0.2 }, {
MP.UI.UTILS.create_text_node("MULTIPLAYER", {
scale = 0.8,
colour = G.C.UI.TEXT_LIGHT,
}),
}),
}
for _, v in ipairs(message_table) do
table.insert(
message_ui,
MP.UI.UTILS.create_row({ align = "cm", padding = 0.1 }, {
MP.UI.UTILS.create_text_node(v, {
scale = 0.6,
colour = G.C.UI.TEXT_LIGHT,
}),
})
)
end
-- Countdown row using DynaText with ref_table for live updates
table.insert(
message_ui,
MP.UI.UTILS.create_row({ align = "cm", padding = 0.2 }, {
MP.UI.UTILS.create_object_node(DynaText({
string = { { ref_table = countdown_table, ref_value = "display" } },
colours = { G.C.UI.TEXT_LIGHT },
shadow = true,
silent = true,
scale = 0.7,
pop_in = 0,
})),
})
)
G.FUNCS.overlay_menu({
definition = create_UIBox_generic_options({
no_back = no_back,
no_esc = no_back,
contents = {
MP.UI.UTILS.create_column({ align = "cm", padding = 0.2 }, message_ui),
},
}),
})
end
-- Overlay message function (moved from misc/utils.lua)
function MP.UI.UTILS.overlay_message(message, no_back)
G.SETTINGS.paused = true
local message_table = MP.UTILS.string_split(message, "\n")
local message_ui = {
MP.UI.UTILS.create_row({ align = "cm", padding = 0.2 }, {
MP.UI.UTILS.create_text_node("MULTIPLAYER", {
scale = 0.8,
colour = G.C.UI.TEXT_LIGHT,
}),
}),
}
for _, v in ipairs(message_table) do
table.insert(
message_ui,
MP.UI.UTILS.create_row({ align = "cm", padding = 0.1 }, {
MP.UI.UTILS.create_text_node(v, {
scale = 0.6,
colour = G.C.UI.TEXT_LIGHT,
}),
})
)
end
G.FUNCS.overlay_menu({
definition = create_UIBox_generic_options({
no_back = no_back,
no_esc = no_back,
contents = {
MP.UI.UTILS.create_column({ align = "cm", padding = 0.2 }, message_ui),
},
}),
})
end