105 lines
2.2 KiB
Plaintext
105 lines
2.2 KiB
Plaintext
import graphics from love
|
|
|
|
slab = {
|
|
types: { "menu", "spinner" }
|
|
screen: { x: 0, y: 0, width: graphics.getWidth!, height: graphics.getHeight! }
|
|
}
|
|
|
|
slab.generic = class
|
|
new: (element={}, parent=slab.screen) =>
|
|
for k,v in pairs element
|
|
@[k] = v
|
|
|
|
if @width
|
|
if @width <= 1
|
|
@w = parent.w * @width
|
|
else
|
|
@w = @width
|
|
|
|
if @height
|
|
if @height <= 1
|
|
@h = parent.h * @height
|
|
else
|
|
@h = @height
|
|
|
|
slab.menu = class
|
|
new: (parent=slab.screen) =>
|
|
for child in *@
|
|
if @menu.width
|
|
child.width = @menu.width
|
|
if @menu.height
|
|
child.height = @menu.height
|
|
if @menu.align
|
|
child.align = @menu.align
|
|
|
|
-- TODO menus are a vertical structure
|
|
|
|
slab.make = (element={}, parent=slab.screen) ->
|
|
element = slab.generic element, parent
|
|
for t in *slab.types
|
|
element = slab[t](parent) if element[t]
|
|
return element
|
|
|
|
-- b = slab.make sample_value: true
|
|
-- print(b.sample_value)
|
|
|
|
clickers = {
|
|
width: 1/3
|
|
height: 1
|
|
menu: { -- block elements default to minimum space required
|
|
height: 1/3 -- defined here applies to children
|
|
align: "center" -- defined here means the children are aligned this way
|
|
{
|
|
name: "cash_clicker"
|
|
clicked: (btn, x, y) ->
|
|
-- stuff
|
|
spinner: {
|
|
value: 0 -- a defined value means it is set instead of just spinning constantly ?
|
|
{
|
|
width: 0.8
|
|
align: "center"
|
|
background: graphics.newImage "gfx/banknote.png"
|
|
}
|
|
{
|
|
align: "bottom-left"
|
|
text: "Lv. 0"
|
|
}
|
|
}
|
|
}
|
|
{
|
|
name: "danger_clicker"
|
|
clicked: (btn, x, y) ->
|
|
-- stuff
|
|
spinner: {
|
|
value: 0
|
|
{
|
|
width: 0.8
|
|
align: "center"
|
|
background: graphics.newImage "gfx/hazard-sign.png"
|
|
}
|
|
{
|
|
align: "bottom-left"
|
|
text: "Lv. 0"
|
|
}
|
|
}
|
|
}
|
|
{
|
|
name: "research_clicker"
|
|
clicked: (btn, x, y) ->
|
|
-- stuff
|
|
spinner: {
|
|
value: 0
|
|
{
|
|
width: 0.8
|
|
align: "center"
|
|
background: graphics.newImage "gfx/fizzing-flask.png"
|
|
}
|
|
{
|
|
align: "bottom-left"
|
|
text: "Lv. 0"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|