Initial commit.
This commit is contained in:
commit
ce6cb893bf
58 changed files with 3866 additions and 0 deletions
129
views/meta_menu.lua
Normal file
129
views/meta_menu.lua
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
|
||||
return function(state)
|
||||
imfs.begin(size.x, size.y)
|
||||
:padding(0, 0)
|
||||
:bgcolor("#151618", true)
|
||||
|
||||
imfs.image(0, size.y * 0.08, size.x, size.x * (72/672), default_textures.."menu_header.png")
|
||||
|
||||
local games = state.games
|
||||
|
||||
if #games < 1 then
|
||||
imfs.hypertext(0, 0, size.x, size.y, [[
|
||||
<global valign=middle halign=center>
|
||||
<tag name=action color=#222 hovercolor=#444>
|
||||
<style size=72 color=#222><b>No games installed.</b></style>
|
||||
<style size=36 color=#222>
|
||||
<action name=content>Click here to install a game.</action>
|
||||
</style>
|
||||
]])
|
||||
return imfs.end_()
|
||||
end
|
||||
|
||||
imfs.scroll_container(0, 0, size.x, size.y, "horizontal", 0, "")
|
||||
:scrollbar(function()
|
||||
imfs.scrollbar(-800, -800, 0, 0, "horizontal", state.scroll_pos)
|
||||
:options({
|
||||
min = 1,
|
||||
max = #games,
|
||||
smallstep = 1,
|
||||
})
|
||||
:onchange(function(action, value)
|
||||
if action == "CHG" then
|
||||
state.scroll_pos(value)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
local center = size.x / 2
|
||||
|
||||
for i, x in ipairs(games) do
|
||||
imfs.button(center + (i - #games / 2) * 0.25, size.y - 0.5, 0.25, 0.25)
|
||||
:image(theme.icon(i == state.scroll_pos() and "circle_active" or "circle"))
|
||||
:onclick(function()
|
||||
state.scroll_pos(i)
|
||||
end)
|
||||
|
||||
local dist = i - state.scroll_pos()
|
||||
local scale = 4 / (math.abs(dist) + 1)
|
||||
if scale > 0.1 then
|
||||
--This looks neat, but is useless for UI purposes: center +10^(1 /math.abs(dist)) *math.sign(dist)
|
||||
local lc = center + math.abs(dist * 10) ^ 0.55 * math.sign(dist)
|
||||
if x.menuicon_path == "" then
|
||||
x.menuicon_path = theme.icon("games")
|
||||
end
|
||||
--TODO: Do these need some kind of background?
|
||||
imfs.button(lc - scale /2, size.y / 2 - scale / 2 + (4 - scale) / 2 + 2, scale, scale)
|
||||
:image(x.menuicon_path)
|
||||
:tooltip(x.title, "#444", "#aaa")
|
||||
if dist == 0 then
|
||||
imfs.button(lc - scale / 2, size.y / 2 + 4, 4, 0.5, x.title)
|
||||
:styles(styles_no_background)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
imfs.scroll_container_end()
|
||||
|
||||
imfs.button("5%", "30%", 4, 4)
|
||||
:style({
|
||||
border = false,
|
||||
bgimg = theme.icon("menu_servers"),
|
||||
bgimg_middle = 0,
|
||||
})
|
||||
:style("hovered", {
|
||||
bgimg = theme.icon("menu_servers_hovered"),
|
||||
bgimg_middle = 0,
|
||||
})
|
||||
:style("pressed", {
|
||||
bgimg = theme.icon("menu_servers_hovered"),
|
||||
bgimg_middle = 0,
|
||||
})
|
||||
:onclick(show_servers_menu)
|
||||
imfs.button("5%", size.y * 0.3 + 4, 4, 0.5, "Servers")
|
||||
:styles(styles_no_background)
|
||||
|
||||
imfs.button(size.x * 0.95 - 4, "30%", 4, 4)
|
||||
:style({
|
||||
border = false,
|
||||
bgimg = theme.icon("menu_content"),
|
||||
bgimg_middle = 0,
|
||||
})
|
||||
:style("hovered", {
|
||||
bgimg = theme.icon("menu_content_hovered"),
|
||||
bgimg_middle = 0,
|
||||
})
|
||||
:style("pressed", {
|
||||
bgimg = theme.icon("menu_content_hovered"),
|
||||
bgimg_middle = 0,
|
||||
})
|
||||
:onclick(show_content_menu)
|
||||
imfs.button(size.x * 0.95 - 4, size.y * 0.3 + 4, 4, 0.5, "Content")
|
||||
:styles(styles_no_background)
|
||||
|
||||
imfs.button(1, 0, 2, 0.5, "About")
|
||||
:style({
|
||||
bgimg = theme.get_background_image("tab")
|
||||
})
|
||||
:style("hovered", {
|
||||
bgimg = theme.get_background_image("tab", "hovered")
|
||||
})
|
||||
:style("pressed", {
|
||||
bgimg = theme.get_background_image("tab", "active"),
|
||||
})
|
||||
:onclick(show_about_menu)
|
||||
|
||||
imfs.button(size.x - 3, 0, 2, 0.5, "Settings")
|
||||
:style({
|
||||
bgimg = theme.get_background_image("tab"),
|
||||
})
|
||||
:style("hovered", {
|
||||
bgimg = theme.get_background_image("tab", "hovered"),
|
||||
})
|
||||
:style("pressed", {
|
||||
bgimg = theme.get_background_image("tab", "active"),
|
||||
})
|
||||
:onclick(show_settings_menu)
|
||||
|
||||
return imfs.end_()
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue