slab/prototypes/scp-clicker/main.moon
Paul Liverman III f0a9da387a init wip
2018-04-05 15:43:24 -07:00

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"
}
}
}
}
}