CabinGame/Luxe/blocks/ui.wren
2020-09-03 17:31:23 +02:00

189 lines
No EOL
5.5 KiB
Text

import "luxe: draw" for Draw, PathStyle
import "luxe: world" for Entity, Transform, UI, UIRenderMode
import "luxe: ui/control" for Control
import "luxe: ui/panel" for UIPanel
import "luxe: ui/list" for UIList
import "luxe: ui/button" for UIButton
import "luxe: ui/image" for UIImage
import "luxe: assets" for Assets
import "globals" for Globals
import "blocks/ui/image_button" for ImageButton
import "math/observable" for Observable
class Ui{
static Planning{"planning"}
static Info {"info"}
ui_mode{_ui_mode.value}
ui_mode=(v){_ui_mode.value = v}
construct new(app){
var ui_rect = Globals["UiRect"]
_ui_mode = Observable.new(Ui.Info)
_ui = Entity.create(app.ui, "UI Root")
UI.create(_ui, ui_rect.x, ui_rect.y, ui_rect.width, ui_rect.height, 0, app.ui_camera)
UI.set_render_mode(_ui, UIRenderMode.world)
_info = setup_info()
_planning = setup_planning()
_ui_mode.on_change(true) {|val|
Control.set_visible(_planning, val == Ui.Planning)
Control.set_visible(_info, val == Ui.Info)
UI.commit(_ui)
}
UI.commit(_ui)
}
setup_info(){
var ui_rect = Globals["UiRect"]
var game = Globals["Game"]
var root = Control.create(_ui)
Control.set_size(root, ui_rect.width, ui_rect.height)
//list
var list = UIList.create(_ui)
Control.set_id(list, "info list")
Control.child_add(root, list)
//todo: make list horizontal?
Control.set_pos(list, 0, ui_rect.height-16)
Control.set_size(list, ui_rect.width, 16)
var adventureButtons = Assets.image("assets/AdventureButtons")
var tiles = [10, 1]
var button
//plan adventure
button = list_button(0)
Control.set_id(button, "info button %(0)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Adventure!")
ImageButton.set_tile_uv(button, tiles, [1, 0])
ImageButton.set_state_change(button) { |data|
if(data["press"]){
ui_mode = Ui.Planning
}
}
UIList.add(list, button)
//info
button = list_button(1)
Control.set_id(button, "info button %(1)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Stats")
ImageButton.set_tile_uv(button, tiles, [2, 0])
UIList.add(list, button)
//read diary
button = list_button(2)
Control.set_id(button, "info button %(2)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Diary")
ImageButton.set_tile_uv(button, tiles, [1, 0])
UIList.add(list, button)
//UIList.refresh(list) //uncomment this when list learns not to be vertical
return root
}
setup_planning(){
var ui_rect = Globals["UiRect"]
var game = Globals["Game"]
var root = Control.create(_ui)
Control.set_size(root, ui_rect.width, ui_rect.height)
//list
var list = UIList.create(_ui)
Control.child_add(root, list)
//todo: make list horizontal?
Control.set_pos(list, 0, ui_rect.height-16)
Control.set_size(list, ui_rect.width, 16)
var adventureButtons = Assets.image("assets/AdventureButtons")
var tiles = [10, 1]
var button
var list_id = 0
//back to info
button = list_button(list_id)
Control.set_id(button, "plan button %(list_id)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Info")
ImageButton.set_tile_uv(button, tiles, [1, 0])
ImageButton.set_state_change(button) { |data|
if(data["press"]){
ui_mode = Ui.Info
}
}
UIList.add(list, button)
list_id = list_id+1
//abort
button = list_button(list_id)
Control.set_id(button, "plan button %(list_id)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Abort")
ImageButton.set_tile_uv(button, tiles, [0, 0])
UIList.add(list, button)
list_id = list_id+1
//people
button = list_button(list_id)
Control.set_id(button, "plan button %(list_id)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Adventurers")
ImageButton.set_tile_uv(button, tiles, [2, 0])
UIList.add(list, button)
list_id = list_id+1
//stuff
button = list_button(list_id)
Control.set_id(button, "plan button %(list_id)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Stuff")
ImageButton.set_tile_uv(button, tiles, [4, 0])
UIList.add(list, button)
list_id = list_id+1
//direction
button = list_button(list_id)
Control.set_id(button, "plan button %(list_id)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Direction")
ImageButton.set_tile_uv(button, tiles, [3, 0])
UIList.add(list, button)
list_id = list_id+1
//go
button = list_button(list_id)
Control.set_id(button, "plan button %(list_id)")
UIImage.set_image(button, adventureButtons)
ImageButton.set_tooltip(button, "Depart")
ImageButton.set_tile_uv(button, tiles, [5, 0])
UIList.add(list, button)
list_id = list_id+1
//UIList.refresh(list) //uncomment this when list learns not to be vertical
return root
}
list_button(i){
var button = ImageButton.create(_ui)
Control.set_size(button, 16, 16)
Control.set_pos(button, i*16, 0) //let list handle this in future
return button
}
test(){
ImageButton.get_data(_test)
}
}