CabinGame/Luxe/blocks/ui/image_button.wren

54 lines
1.3 KiB
Text
Raw Normal View History

import "luxe: ui/image" for UIImage
import "luxe: world" for UIEvent
import "luxe: ui/control" for Control
class ImageButton{
static create(ent){
var button = UIImage.create(ent)
var data = {
"hover": false,
"press": false,
"state_change": null
}
Control.set_state_data(button, data)
Control.set_events(button) {|event|
var change = true
var data
if(event.type == UIEvent.enter){
data = Control.get_state_data(button)
data["hover"] = true
} else if(event.type == UIEvent.exit) {
data = Control.get_state_data(button)
data["hover"] = false
} else if(event.type == UIEvent.press) {
data = Control.get_state_data(button)
data["press"] = true
} else if(event.type == UIEvent.release) {
data = Control.get_state_data(button)
data["press"] = false
} else {
change = false
}
if(change){
var func = data["state_change"]
if(func){
func.call(data, button)
}
}
}
return button
}
static set_state_change(control, fn){
var data = Control.get_state_data(control)
data["state_change"] = fn
}
static get_data(control){
//System.print(Control.get_state_data(control))
}
}