Examples - JanSharp/JanSharpsGuiLibrary GitHub Wiki
Examples
Note that all examples are isolated.
The examples (will) cover all features of the library
More to come!
hello world
-- new:
-- registering a class (see 1)
-- creating a class (see 2)
local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
gui_handler.register_class{ -- 1
class_name = "hello-world",
create = function()
return {
type = "frame",
caption = "hello world!",
}
end,
}
script.on_event(defines.events.on_player_created, function(event)
local player = game.get_player(event.player_index)
gui_handler.create(player.gui.screen, "hello-world") -- 2
end)
elem and style mods
-- new:
-- use of elem_mods (see 1)
-- use of style_mods (see 2)
local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
gui_handler.register_class{
class_name = "hello-world",
create = function()
return {
type = "frame",
caption = "hello world!",
elem_mods = { -- 1
auto_center = true,
},
style_mods = { -- 2
height = 200,
},
}
end,
}
script.on_event(defines.events.on_player_created, function(event)
local player = game.get_player(event.player_index)
gui_handler.create(player.gui.screen, "hello-world")
end)
parameters
-- new:
-- use of parameters (see 1)
local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
gui_handler.register_class{
class_name = "hello-world",
create = function(player)
return {
type = "frame",
caption = "hello " .. player.name .. "!",
elem_mods = {
auto_center = true,
},
}
end,
}
script.on_event(defines.events.on_player_created, function(event)
local player = game.get_player(event.player_index)
-- nil for the name, could be any string too, doesn't matter in this case
gui_handler.create(player.gui.screen, "hello-world", nil, player) -- 1
end)
simple events
-- new:
-- multiple classes (see 1 x2)
-- on_click event handling (see 2)
-- use of children (in simple-events class) (see 3)
local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
gui_handler.register_class{ -- 1
class_name = "simple-button",
create = function()
return {
type = "button",
caption = "hello?",
}
end,
on_click = function(self, event) -- 2
if event.button == defines.mouse_button_type.left then
self.elem.caption = "hello world!"
else
self.elem.caption = "hello?"
end
end,
}
gui_handler.register_class{ -- 1
class_name = "simple-events",
create = function()
return {
type = "frame",
caption = "simple events",
children = { -- 3
{class_name = "simple-button"},
},
}
end,
}
script.on_event(defines.events.on_player_created, function(event)
local player = game.get_player(event.player_index)
gui_handler.create(player.gui.screen, "simple-events")
end)
basic classes
-- new:
-- use of basic classes (see 1)
-- use of basic class event handling (see 2)
-- use of GuiClassInstChildDefinition parameters (see 3)
local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
require("__JanSharpsGuiLibrary__/basic-classes.lua")
gui_handler.register_class{
class_name = "basic-classes",
create = function()
return {
type = "frame",
caption = "simple events",
children = {
{class_name = "button", name = "simple_btn", { -- 1 and 3
caption = "hello?"
}},
},
}
end,
on_click_simple_btn = function(self, simple_btn, event) -- 2
if event.button == defines.mouse_button_type.left then
simple_btn.elem.caption = "hello world!"
else
simple_btn.elem.caption = "hello?"
end
end,
}
script.on_event(defines.events.on_player_created, function(event)
local player = game.get_player(event.player_index)
gui_handler.create(player.gui.screen, "basic-classes")
end)
passed parent
-- new:
-- use of parent_pass_count (see 1 x2)
-- in combination with basic classes (see 2 x2)
-- destroy function (see 3)
local gui_handler = require("__JanSharpsGuiLibrary__/gui-handler.lua")
require("__JanSharpsGuiLibrary__/basic-classes.lua")
gui_handler.register_class{
class_name = "passed-parent",
create = function()
return {
type = "frame",
caption = "passed parent",
elem_mods = {
auto_center = true,
},
children = {
{class_name = "table", {
column_count = 2,
children = {
{class_name = "button", name = "hi_btn", parent_pass_count = 1, {
caption = "hi", -- 1 and 2
}},
{class_name = "button", name = "bye_btn", parent_pass_count = 1, {
caption = "bye", -- 1 and 2
}},
},
}},
},
}
end,
-- the basic classes look at the passed_parent,
-- which got evaluated using parent_pass_count
on_click_hi_btn = function(self, hi_btn, event)
hi_btn.elem.caption = hi_btn.elem.caption .. "!"
end,
on_click_bye_btn = function(self, bye_btn, event)
self:destroy() -- 3
end,
}
script.on_event(defines.events.on_player_created, function(event)
local player = game.get_player(event.player_index)
gui_handler.create(player.gui.screen, "passed-parent")
end)