Skip to content

Instantly share code, notes, and snippets.

@Ruin0x11
Created July 10, 2020 05:50
Show Gist options
  • Save Ruin0x11/7633a7bbe0857dea2cf4f0fc86594b07 to your computer and use it in GitHub Desktop.
Save Ruin0x11/7633a7bbe0857dea2cf4f0fc86594b07 to your computer and use it in GitHub Desktop.
IUiLayer template
local Gui = require("api.Gui")
local Draw = require("api.Draw")
local I18N = require("api.I18N")
local Ui = require("api.Ui")
local data = require("internal.data")
local IUiLayer = require("api.gui.IUiLayer")
local UiList = require("api.gui.UiList")
local UiWindow = require("api.gui.UiWindow")
local InputHandler = require("api.gui.InputHandler")
local IInput = require("api.gui.IInput")
local UiTheme = require("api.gui.UiTheme")
local SpellsMenu = class.class("SpellsMenu", IUiLayer)
SpellsMenu:delegate("input", IInput)
local UiListExt = function(spells_menu)
local E = {}
function E:get_item_text(item)
local text = ""
return text or ""
end
function E:can_choose(item)
return item.type == "can_acquire"
end
function E:draw_select_key(item, i, key_name, x, y)
UiList.draw_select_key(self, item, i, key_name, x, y)
end
function E:draw_item_text(text, item, i, x, y, x_offset)
UiList.draw_item_text(self, text, item, i, x, y, x_offset)
end
return E
end
function SpellsMenu.generate_list(chara)
local list = {}
return list
end
function SpellsMenu:init(chara)
self.chara = chara
self.win = UiWindow:new("trait.window.title", true, "key help", 55, 40)
self.data = SpellsMenu.generate_list(self.chara)
self.pages = UiList:new_paged(self.data, 15)
table.merge(self.pages, UiListExt(self))
self.input = InputHandler:new()
self.input:forward_to(self.pages)
self.input:bind_keys(self:make_keymap())
end
function SpellsMenu:make_keymap()
return {
escape = function() self.canceled = true end,
cancel = function() self.canceled = true end
}
end
function SpellsMenu:relayout(x, y)
self.width = 730
self.height = 430
self.x, self.y = Ui.params_centered(self.width, self.height)
self.t = UiTheme.load(self)
self.win:relayout(self.x, self.y, self.width, self.height)
self.pages:relayout(self.x + 58, self.y + 66)
self.win:set_pages(self.pages)
end
function SpellsMenu:charamake_result()
return {}
end
function SpellsMenu:draw()
self.win:draw()
self.pages:draw()
end
function SpellsMenu:update()
if self.canceled then
return nil, "canceled"
end
if self.pages.changed then
self.win:set_pages(self.pages)
elseif self.pages.chosen then
return true
end
self.win:update()
self.pages:update()
end
return SpellsMenu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment