mirror of
https://github.com/TangentFoxy/Pop.Box.git
synced 2024-12-15 12:44:20 +00:00
87 lines
2.5 KiB
Plaintext
87 lines
2.5 KiB
Plaintext
|
import filesystem, graphics from love
|
||
|
import insert from table
|
||
|
|
||
|
path = ...
|
||
|
|
||
|
class Pop
|
||
|
new: =>
|
||
|
@elements = {}
|
||
|
@window = {child: {}} --TODO eliminate this crap
|
||
|
--@focused = @window --TODO redo better
|
||
|
|
||
|
elements = filesystem.getDirectoryItems "#{path}/elements"
|
||
|
for i in elements
|
||
|
name = elements[i]\sub 1, -5
|
||
|
@elements[name] = require "#{path}/elements/#{name}"
|
||
|
print "loaded element: #{name}"
|
||
|
|
||
|
if not @name
|
||
|
@name = (...) -> return @create(name, ...)
|
||
|
print "wrapped created: #{name}()"
|
||
|
|
||
|
@window = @create("element")\setSize(graphics.getWidth!, graphics.getHeight!)
|
||
|
print "created window"
|
||
|
|
||
|
create: (elementType, parent=@window, ...) =>
|
||
|
newElement = @elements[elementType](@, parent, ...)
|
||
|
insert parent.child, newElement
|
||
|
return newElement
|
||
|
|
||
|
update: (dt, element=@window) =>
|
||
|
if not element.excludeUpdating
|
||
|
if element.update
|
||
|
element\update dt
|
||
|
|
||
|
for i in element.child
|
||
|
@update dt, element.child[i]
|
||
|
|
||
|
draw: (element=@window) =>
|
||
|
if not element.excludeRendering
|
||
|
if element.draw
|
||
|
element\draw
|
||
|
|
||
|
for i in element.child
|
||
|
@draw element.child[i]
|
||
|
|
||
|
mousepressed: (button, x, y, element) =>
|
||
|
error "Unimplemented."
|
||
|
|
||
|
mousereleased: (button, x, y, element) =>
|
||
|
error "Unimplemented."
|
||
|
|
||
|
keypressed: (key) =>
|
||
|
error "Unimplemented."
|
||
|
|
||
|
keyreleased: (key) =>
|
||
|
error "Unimplemented."
|
||
|
|
||
|
textinput: (text) =>
|
||
|
error "Unimplemented."
|
||
|
|
||
|
skin: (element, skin, apply_to_children=false) =>
|
||
|
if element.background
|
||
|
element.background = skin.background
|
||
|
if element.color
|
||
|
element.color = skin.color
|
||
|
if element.font
|
||
|
element.font = skin.font
|
||
|
|
||
|
if not apply_to_children
|
||
|
for i in element.child
|
||
|
@skin element.child[i], skin
|
||
|
|
||
|
debugDraw: (element=@window) =>
|
||
|
if element.debugDraw
|
||
|
element\debugDraw!
|
||
|
else
|
||
|
graphics.setLineWidth 1
|
||
|
graphics.setColor 0, 0, 0, 100
|
||
|
graphics.rectangle "fill", element.x, element.y, element.w, element.h
|
||
|
graphics.setColor 150, 150, 150, 150
|
||
|
graphics.rectangle "line", element.x, element.y, element.w, element.h
|
||
|
graphics.setColor 200, 200, 200, 255
|
||
|
graphics.print ".", element.x, element.y
|
||
|
|
||
|
for i in element.child
|
||
|
@debugDraw element.child[i]
|