From 37c6b5a180787a8b5389f79b699e4f9de8bbf98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ritzl?= Date: Mon, 11 Sep 2017 22:12:03 +0200 Subject: [PATCH] Improved example --- README.md | 1 + assets/fonts/example.font | 3 + assets/gooey.atlas | 111 -- example/controller.collection | 91 ++ example/controller.script | 27 + example/dirtylarry.collection | 37 + example/dirtylarry.gui | 1184 +++++++++++++++++ example/dirtylarry.gui_script | 34 + example/kenneyblue.collection | 37 + example/{example.gui => kenneyblue.gui} | 1033 +++----------- example/kenneyblue.gui_script | 51 + .../{example.collection => menu.collection} | 6 +- example/menu.gui | 254 ++++ example/menu.gui_script | 19 + game.project | 9 +- gooey/gooey.lua | 55 +- gooey/themes/dirtylarry/components/button.gui | 141 ++ .../themes/dirtylarry/components/checkbox.gui | 140 ++ gooey/themes/dirtylarry/components/input.gui | 196 +++ gooey/themes/dirtylarry/components/radio.gui | 140 ++ gooey/themes/dirtylarry/dirtylarry.lua | 85 ++ gooey/themes/dirtylarry/fonts/dirtylarry.font | 16 + .../dirtylarry/images/button_normal.png | Bin 0 -> 1873 bytes .../dirtylarry/images/button_pressed.png | Bin 0 -> 1851 bytes .../images/checkbox_checked_normal.png | Bin 0 -> 2283 bytes .../images/checkbox_checked_pressed.png | Bin 0 -> 2930 bytes .../dirtylarry/images/checkbox_normal.png | Bin 0 -> 1723 bytes .../dirtylarry/images/checkbox_pressed.png | Bin 0 -> 2333 bytes .../themes/dirtylarry/images/dirtylarry.atlas | 36 + gooey/themes/dirtylarry/images/input.png | Bin 0 -> 2785 bytes .../images/radio_checked_normal.png | Bin 0 -> 3503 bytes .../images/radio_checked_pressed.png | Bin 0 -> 4083 bytes .../themes/dirtylarry/images/radio_normal.png | Bin 0 -> 2958 bytes .../dirtylarry/images/radio_pressed.png | Bin 0 -> 3604 bytes .../themes/kenneyblue/components}/button.gui | 4 +- .../kenneyblue/components}/checkbox.gui | 8 +- .../themes/kenneyblue/components}/input.gui | 4 +- .../kenneyblue/components}/listitem.gui | 4 +- .../kenneyblue/components}/radiobutton.gui | 8 +- .../themes/kenneyblue/fonts/kenneyblue.font | 2 +- .../kenneyblue/fonts/kenvector_future.ttf | Bin 0 -> 34136 bytes .../kenneyblue}/images/blue_boxCheckmark.png | Bin .../kenneyblue}/images/blue_boxCross.png | Bin .../kenneyblue}/images/blue_boxTick.png | Bin .../kenneyblue}/images/blue_button00.png | Bin .../kenneyblue}/images/blue_button01.png | Bin .../kenneyblue}/images/blue_button02.png | Bin .../kenneyblue}/images/blue_button03.png | Bin .../kenneyblue}/images/blue_button04.png | Bin .../kenneyblue}/images/blue_button05.png | Bin .../kenneyblue}/images/blue_button06.png | Bin .../kenneyblue}/images/blue_button07.png | Bin .../kenneyblue}/images/blue_button08.png | Bin .../kenneyblue}/images/blue_button09.png | Bin .../kenneyblue}/images/blue_button10.png | Bin .../kenneyblue}/images/blue_button11.png | Bin .../kenneyblue}/images/blue_button12.png | Bin .../kenneyblue}/images/blue_button13.png | Bin .../kenneyblue}/images/blue_checkmark.png | Bin .../themes/kenneyblue}/images/blue_circle.png | Bin .../themes/kenneyblue}/images/blue_cross.png | Bin .../themes/kenneyblue}/images/blue_panel.png | Bin .../kenneyblue}/images/blue_sliderDown.png | Bin .../kenneyblue}/images/blue_sliderLeft.png | Bin .../kenneyblue}/images/blue_sliderRight.png | Bin .../kenneyblue}/images/blue_sliderUp.png | Bin .../themes/kenneyblue}/images/blue_tick.png | Bin .../kenneyblue}/images/dropdownBottom.png | Bin .../themes/kenneyblue}/images/dropdownMid.png | Bin .../themes/kenneyblue}/images/dropdownTop.png | Bin .../themes/kenneyblue}/images/grey_box.png | Bin .../kenneyblue}/images/grey_boxCheckmark.png | Bin .../kenneyblue}/images/grey_boxCross.png | Bin .../kenneyblue}/images/grey_boxTick.png | Bin .../kenneyblue}/images/grey_button02.png | Bin .../themes/kenneyblue}/images/grey_circle.png | Bin .../themes/kenneyblue/images/kenneyblue.atlas | 111 ++ .../kenneyblue}/images/transparent1px.png | Bin .../themes/kenneyblue/kenneyblue.lua | 134 +- 79 files changed, 2935 insertions(+), 1046 deletions(-) create mode 100644 assets/fonts/example.font delete mode 100644 assets/gooey.atlas create mode 100644 example/controller.collection create mode 100644 example/controller.script create mode 100644 example/dirtylarry.collection create mode 100644 example/dirtylarry.gui create mode 100644 example/dirtylarry.gui_script create mode 100644 example/kenneyblue.collection rename example/{example.gui => kenneyblue.gui} (76%) create mode 100644 example/kenneyblue.gui_script rename example/{example.collection => menu.collection} (83%) create mode 100644 example/menu.gui create mode 100644 example/menu.gui_script create mode 100644 gooey/themes/dirtylarry/components/button.gui create mode 100644 gooey/themes/dirtylarry/components/checkbox.gui create mode 100644 gooey/themes/dirtylarry/components/input.gui create mode 100644 gooey/themes/dirtylarry/components/radio.gui create mode 100644 gooey/themes/dirtylarry/dirtylarry.lua create mode 100644 gooey/themes/dirtylarry/fonts/dirtylarry.font create mode 100644 gooey/themes/dirtylarry/images/button_normal.png create mode 100644 gooey/themes/dirtylarry/images/button_pressed.png create mode 100644 gooey/themes/dirtylarry/images/checkbox_checked_normal.png create mode 100644 gooey/themes/dirtylarry/images/checkbox_checked_pressed.png create mode 100644 gooey/themes/dirtylarry/images/checkbox_normal.png create mode 100644 gooey/themes/dirtylarry/images/checkbox_pressed.png create mode 100644 gooey/themes/dirtylarry/images/dirtylarry.atlas create mode 100644 gooey/themes/dirtylarry/images/input.png create mode 100644 gooey/themes/dirtylarry/images/radio_checked_normal.png create mode 100644 gooey/themes/dirtylarry/images/radio_checked_pressed.png create mode 100644 gooey/themes/dirtylarry/images/radio_normal.png create mode 100644 gooey/themes/dirtylarry/images/radio_pressed.png rename {example/templates => gooey/themes/kenneyblue/components}/button.gui (93%) rename {example/templates => gooey/themes/kenneyblue/components}/checkbox.gui (92%) rename {example/templates => gooey/themes/kenneyblue/components}/input.gui (95%) rename {example/templates => gooey/themes/kenneyblue/components}/listitem.gui (94%) rename {example/templates => gooey/themes/kenneyblue/components}/radiobutton.gui (92%) rename assets/example.font => gooey/themes/kenneyblue/fonts/kenneyblue.font (82%) create mode 100644 gooey/themes/kenneyblue/fonts/kenvector_future.ttf rename {assets => gooey/themes/kenneyblue}/images/blue_boxCheckmark.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_boxCross.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_boxTick.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button00.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button01.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button02.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button03.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button04.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button05.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button06.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button07.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button08.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button09.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button10.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button11.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button12.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_button13.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_checkmark.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_circle.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_cross.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_panel.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_sliderDown.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_sliderLeft.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_sliderRight.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_sliderUp.png (100%) rename {assets => gooey/themes/kenneyblue}/images/blue_tick.png (100%) rename {assets => gooey/themes/kenneyblue}/images/dropdownBottom.png (100%) rename {assets => gooey/themes/kenneyblue}/images/dropdownMid.png (100%) rename {assets => gooey/themes/kenneyblue}/images/dropdownTop.png (100%) rename {assets => gooey/themes/kenneyblue}/images/grey_box.png (100%) rename {assets => gooey/themes/kenneyblue}/images/grey_boxCheckmark.png (100%) rename {assets => gooey/themes/kenneyblue}/images/grey_boxCross.png (100%) rename {assets => gooey/themes/kenneyblue}/images/grey_boxTick.png (100%) rename {assets => gooey/themes/kenneyblue}/images/grey_button02.png (100%) rename {assets => gooey/themes/kenneyblue}/images/grey_circle.png (100%) create mode 100644 gooey/themes/kenneyblue/images/kenneyblue.atlas rename {assets => gooey/themes/kenneyblue}/images/transparent1px.png (100%) rename example/example.gui_script => gooey/themes/kenneyblue/kenneyblue.lua (57%) diff --git a/README.md b/README.md index 5e47a96..5ef4183 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,7 @@ The state table contains the following fields: * ```over_now``` (boolean) - true if user action moved inside the node this call * ```out_now``` (boolean) - true if user action moved outside the node this call * ```selected``` (boolean) - The radio button state +* ```selected_now``` (boolean) - true if the radio button was selected this call * ```pressed``` (boolean) - true if the radio button is pressed (ie mouse/touch down but not yet released) * ```pressed_now``` (boolean) - true if the radio button was pressed this call * ```released_now``` (boolean) - true if the radio button was released this call diff --git a/assets/fonts/example.font b/assets/fonts/example.font new file mode 100644 index 0000000..4929518 --- /dev/null +++ b/assets/fonts/example.font @@ -0,0 +1,3 @@ +font: "/builtins/fonts/vera_mo_bd.ttf" +material: "/builtins/fonts/font.material" +size: 15 diff --git a/assets/gooey.atlas b/assets/gooey.atlas deleted file mode 100644 index 0aba447..0000000 --- a/assets/gooey.atlas +++ /dev/null @@ -1,111 +0,0 @@ -images { - image: "/assets/images/blue_boxCheckmark.png" -} -images { - image: "/assets/images/blue_boxCross.png" -} -images { - image: "/assets/images/blue_boxTick.png" -} -images { - image: "/assets/images/blue_button00.png" -} -images { - image: "/assets/images/blue_button01.png" -} -images { - image: "/assets/images/blue_button02.png" -} -images { - image: "/assets/images/blue_button03.png" -} -images { - image: "/assets/images/blue_button04.png" -} -images { - image: "/assets/images/blue_button05.png" -} -images { - image: "/assets/images/blue_button06.png" -} -images { - image: "/assets/images/blue_button07.png" -} -images { - image: "/assets/images/blue_button08.png" -} -images { - image: "/assets/images/blue_button09.png" -} -images { - image: "/assets/images/blue_button10.png" -} -images { - image: "/assets/images/blue_button11.png" -} -images { - image: "/assets/images/blue_button12.png" -} -images { - image: "/assets/images/blue_button13.png" -} -images { - image: "/assets/images/blue_checkmark.png" -} -images { - image: "/assets/images/blue_circle.png" -} -images { - image: "/assets/images/blue_cross.png" -} -images { - image: "/assets/images/blue_panel.png" -} -images { - image: "/assets/images/blue_sliderDown.png" -} -images { - image: "/assets/images/blue_sliderLeft.png" -} -images { - image: "/assets/images/blue_sliderRight.png" -} -images { - image: "/assets/images/blue_sliderUp.png" -} -images { - image: "/assets/images/blue_tick.png" -} -images { - image: "/assets/images/dropdownBottom.png" -} -images { - image: "/assets/images/dropdownMid.png" -} -images { - image: "/assets/images/dropdownTop.png" -} -images { - image: "/assets/images/grey_box.png" -} -images { - image: "/assets/images/grey_circle.png" -} -images { - image: "/assets/images/grey_boxTick.png" -} -images { - image: "/assets/images/grey_boxCheckmark.png" -} -images { - image: "/assets/images/grey_boxCross.png" -} -images { - image: "/assets/images/transparent1px.png" -} -images { - image: "/assets/images/grey_button02.png" -} -margin: 0 -extrude_borders: 1 -inner_padding: 1 diff --git a/example/controller.collection b/example/controller.collection new file mode 100644 index 0000000..2c474ed --- /dev/null +++ b/example/controller.collection @@ -0,0 +1,91 @@ +name: "controller" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"controller\"\n" + " component: \"/example/controller.script\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"menuproxy\"\n" + " type: \"collectionproxy\"\n" + " data: \"collection: \\\"/example/menu.collection\\\"\\n" + "exclude: false\\n" + "\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"dirtylarryproxy\"\n" + " type: \"collectionproxy\"\n" + " data: \"collection: \\\"/example/dirtylarry.collection\\\"\\n" + "exclude: false\\n" + "\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"kenneyblueproxy\"\n" + " type: \"collectionproxy\"\n" + " data: \"collection: \\\"/example/kenneyblue.collection\\\"\\n" + "exclude: false\\n" + "\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} diff --git a/example/controller.script b/example/controller.script new file mode 100644 index 0000000..6580f82 --- /dev/null +++ b/example/controller.script @@ -0,0 +1,27 @@ +local function show(self, proxy) + if self.current_proxy then + msg.post(self.current_proxy, "unload") + end + msg.post(proxy, "async_load") +end + +function init(self) + msg.post(".", "acquire_input_focus") + show(self, "#menuproxy") + msg.post("@render:", "clear_color", { color = vmath.vector4(0.15, 0.15, 0.15, 1.0) }) +end + +function on_message(self, message_id, message, sender) + if message_id == hash("proxy_loaded") then + self.current_proxy = sender + msg.post(sender, "enable") + elseif message_id == hash("show_menu") then + show(self, "#menuproxy") + elseif message_id == hash("show_dirtylarry") then + show(self, "#dirtylarryproxy") + elseif message_id == hash("show_kenneyblue") then + show(self, "#kenneyblueproxy") + else + print(message_id) + end +end diff --git a/example/dirtylarry.collection b/example/dirtylarry.collection new file mode 100644 index 0000000..98d0ce0 --- /dev/null +++ b/example/dirtylarry.collection @@ -0,0 +1,37 @@ +name: "dirtylarry" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"dirtylarry\"\n" + " component: \"/example/dirtylarry.gui\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} diff --git a/example/dirtylarry.gui b/example/dirtylarry.gui new file mode 100644 index 0000000..a3a1979 --- /dev/null +++ b/example/dirtylarry.gui @@ -0,0 +1,1184 @@ +script: "/example/dirtylarry.gui_script" +fonts { + name: "dirtylarry" + font: "/gooey/themes/dirtylarry/fonts/dirtylarry.font" +} +textures { + name: "dirtylarry" + texture: "/gooey/themes/dirtylarry/images/dirtylarry.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 129.675 + y: 579.61 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "button" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/button.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 220.0 + y: 64.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/button_normal" + id: "button/bg" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "button" + layer: "below" + inherit_alpha: true + slice9 { + x: 12.0 + y: 12.0 + z: 12.0 + w: 12.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "BUTTON" + font: "dirtylarry" + id: "button/label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "button/bg" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 51.084 + y: 495.125 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "checkbox" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/checkbox.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 64.0 + y: 68.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/checkbox_normal" + id: "checkbox/box" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "checkbox" + layer: "below" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 50.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "CHECKBOX" + font: "dirtylarry" + id: "checkbox/label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "checkbox" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 51.084 + y: 412.604 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "radio1" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/radio.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 64.0 + y: 68.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/radio_normal" + id: "radio1/button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "radio1" + layer: "below" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 60.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "RADIO 1" + font: "dirtylarry" + id: "radio1/label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "radio1" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 51.084 + y: 342.604 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "radio2" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/radio.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 64.0 + y: 68.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/radio_normal" + id: "radio2/button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "radio2" + layer: "below" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 60.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "RADIO 2" + font: "dirtylarry" + id: "radio2/label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "radio2" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 51.084 + y: 272.604 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "radio3" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/radio.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 64.0 + y: 68.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/radio_normal" + id: "radio3/button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "radio3" + layer: "below" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 60.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "RADIO 3" + font: "dirtylarry" + id: "radio3/label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "radio3" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 17.683 + y: 188.619 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "input" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/input.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 400.0 + y: 64.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/input" + id: "input/bg" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + adjust_mode: ADJUST_MODE_FIT + parent: "input" + layer: "below" + inherit_alpha: true + slice9 { + x: 12.0 + y: 12.0 + z: 12.0 + w: 15.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 12.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "" + font: "dirtylarry" + id: "input/text" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "input/bg" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 12.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 2.0 + y: 40.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.5019608 + y: 0.5019608 + z: 0.5019608 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "" + id: "input/cursor" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "input/bg" + layer: "" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 129.675 + y: 1081.551 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "back" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/gooey/themes/dirtylarry/components/button.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 220.0 + y: 64.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/button_normal" + id: "back/bg" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "back" + layer: "below" + inherit_alpha: true + slice9 { + x: 12.0 + y: 12.0 + z: 12.0 + w: 12.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "< BACK" + font: "dirtylarry" + id: "back/label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "back/bg" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + overridden_fields: 8 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +layers { + name: "below" +} +layers { + name: "text" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/example/dirtylarry.gui_script b/example/dirtylarry.gui_script new file mode 100644 index 0000000..baef2ba --- /dev/null +++ b/example/dirtylarry.gui_script @@ -0,0 +1,34 @@ +local dirtylarry = require "gooey.themes.dirtylarry.dirtylarry" + +function init(self) + dirtylarry.acquire_input() +end + +function on_input(self, action_id, action) + dirtylarry.button("button", action_id,action, function(button) + print("button1 pressed") + end) + + dirtylarry.button("back", action_id,action, function(button) + msg.post("controller:/go", "show_menu") + end) + + dirtylarry.checkbox("checkbox", action_id, action, function(checkbox) + print("checkbox", checkbox.checked) + end) + + dirtylarry.radiogroup("MYGROUP", action_id, action, function(group_id, action_id, action) + dirtylarry.radio("radio1", group_id, action_id, action, function(radio) + print("radio 1", radio.selected) + end) + dirtylarry.radio("radio2", group_id, action_id, action, function(radio) + print("radio 2", radio.selected) + end) + dirtylarry.radio("radio3", group_id, action_id, action, function(radio) + print("radio 3", radio.selected) + end) + + end) + + local input = dirtylarry.input("input", gui.KEYBOARD_TYPE_DEFAULT, action_id, action, "EMPTY") +end diff --git a/example/kenneyblue.collection b/example/kenneyblue.collection new file mode 100644 index 0000000..0d5d1ca --- /dev/null +++ b/example/kenneyblue.collection @@ -0,0 +1,37 @@ +name: "kenneyblue" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"kenneyblue\"\n" + " component: \"/example/kenneyblue.gui\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} diff --git a/example/example.gui b/example/kenneyblue.gui similarity index 76% rename from example/example.gui rename to example/kenneyblue.gui index 609d3d5..3008cdc 100644 --- a/example/example.gui +++ b/example/kenneyblue.gui @@ -1,11 +1,11 @@ -script: "/example/example.gui_script" +script: "/example/kenneyblue.gui_script" fonts { name: "system_font" font: "/builtins/fonts/system_font.font" } textures { name: "gooey" - texture: "/assets/gooey.atlas" + texture: "/gooey/themes/kenneyblue/images/kenneyblue.atlas" } background_color { x: 0.0 @@ -15,8 +15,8 @@ background_color { } nodes { position { - x: 911.434 - y: 616.743 + x: 299.85 + y: 1039.61 z: 0.0 w: 1.0 } @@ -34,7 +34,7 @@ nodes { } size { x: 420.0 - y: 600.0 + y: 320.0 z: 0.0 w: 1.0 } @@ -88,7 +88,7 @@ nodes { } size { x: 420.0 - y: 580.0 + y: 300.0 z: 0.0 w: 1.0 } @@ -143,7 +143,7 @@ nodes { } size { x: 0.0 - y: 580.0 + y: 300.0 z: 0.0 w: 1.0 } @@ -214,7 +214,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -372,7 +372,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -530,7 +530,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -688,7 +688,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -846,7 +846,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -1004,7 +1004,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -1162,7 +1162,7 @@ nodes { layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/listitem.gui" template_node_child: false } nodes { @@ -1285,8 +1285,62 @@ nodes { } nodes { position { + x: 298.859 + y: 383.431 + z: 0.0 + w: 1.0 + } + rotation { x: 0.0 - y: -449.311 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 420.0 + y: 400.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "gooey/blue_panel" + id: "panel" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "" + inherit_alpha: true + slice9 { + x: 5.0 + y: 5.0 + z: 5.0 + w: 5.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 1.381 + y: 75.166 z: 0.0 w: 1.0 } @@ -1315,12 +1369,12 @@ nodes { w: 1.0 } type: TYPE_TEMPLATE - id: "listitem8" - parent: "listroot" + id: "button" + parent: "panel" layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/button.gui" template_node_child: false } nodes { @@ -1343,8 +1397,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 192.0 + y: 51.0 z: 0.0 w: 1.0 } @@ -1357,30 +1411,30 @@ nodes { type: TYPE_BOX blend_mode: BLEND_MODE_ALPHA texture: "gooey/blue_button04" - id: "listitem8/bg" + id: "button/bg" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_FIT - parent: "listitem8" + parent: "button" layer: "below" inherit_alpha: true slice9 { - x: 10.0 - y: 10.0 - z: 10.0 - w: 11.0 + x: 6.0 + y: 6.0 + z: 6.0 + w: 10.0 } clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL + size_mode: SIZE_MODE_AUTO } nodes { position { - x: -185.0 + x: 0.0 y: 0.0 z: 0.0 w: 1.0 @@ -1398,8 +1452,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -1411,12 +1465,12 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "LIST ITEM" + text: "BUTTON" font: "example" - id: "listitem8/text" + id: "button/label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE - pivot: PIVOT_W + pivot: PIVOT_CENTER outline { x: 1.0 y: 1.0 @@ -1431,7 +1485,7 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false - parent: "listitem8/bg" + parent: "button/bg" layer: "text" inherit_alpha: true alpha: 1.0 @@ -1443,8 +1497,8 @@ nodes { } nodes { position { - x: 0.0 - y: -509.311 + x: -68.482 + y: 12.823 z: 0.0 w: 1.0 } @@ -1473,12 +1527,12 @@ nodes { w: 1.0 } type: TYPE_TEMPLATE - id: "listitem9" - parent: "listroot" + id: "checkbox" + parent: "panel" layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/checkbox.gui" template_node_child: false } nodes { @@ -1501,8 +1555,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 40.0 + y: 38.0 z: 0.0 w: 1.0 } @@ -1514,31 +1568,31 @@ nodes { } type: TYPE_BOX blend_mode: BLEND_MODE_ALPHA - texture: "gooey/blue_button04" - id: "listitem9/bg" + texture: "gooey/grey_box" + id: "checkbox/box" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_FIT - parent: "listitem9" + parent: "checkbox" layer: "below" inherit_alpha: true slice9 { - x: 10.0 - y: 10.0 - z: 10.0 - w: 11.0 + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 } clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL + size_mode: SIZE_MODE_AUTO } nodes { position { - x: -185.0 + x: 30.0 y: 0.0 z: 0.0 w: 1.0 @@ -1556,8 +1610,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -1569,9 +1623,9 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "LIST ITEM" + text: "CHECKBOX" font: "example" - id: "listitem9/text" + id: "checkbox/label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_W @@ -1589,7 +1643,7 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false - parent: "listitem9/bg" + parent: "checkbox" layer: "text" inherit_alpha: true alpha: 1.0 @@ -1601,8 +1655,8 @@ nodes { } nodes { position { - x: 0.0 - y: -569.311 + x: -68.666 + y: -42.672 z: 0.0 w: 1.0 } @@ -1631,12 +1685,12 @@ nodes { w: 1.0 } type: TYPE_TEMPLATE - id: "listitem10" - parent: "listroot" + id: "radio1" + parent: "panel" layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/radiobutton.gui" template_node_child: false } nodes { @@ -1659,8 +1713,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 38.0 + y: 38.0 z: 0.0 w: 1.0 } @@ -1672,31 +1726,31 @@ nodes { } type: TYPE_BOX blend_mode: BLEND_MODE_ALPHA - texture: "gooey/blue_button04" - id: "listitem10/bg" + texture: "gooey/grey_circle" + id: "radio1/button" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_FIT - parent: "listitem10" + parent: "radio1" layer: "below" inherit_alpha: true slice9 { - x: 10.0 - y: 10.0 - z: 10.0 - w: 11.0 + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 } clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL + size_mode: SIZE_MODE_AUTO } nodes { position { - x: -185.0 + x: 30.0 y: 0.0 z: 0.0 w: 1.0 @@ -1714,8 +1768,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -1727,9 +1781,9 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "LIST ITEM" + text: "RADIO" font: "example" - id: "listitem10/text" + id: "radio1/label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_W @@ -1747,7 +1801,7 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false - parent: "listitem10/bg" + parent: "radio1" layer: "text" inherit_alpha: true alpha: 1.0 @@ -1759,8 +1813,8 @@ nodes { } nodes { position { - x: 0.0 - y: -629.311 + x: -68.666 + y: -92.672 z: 0.0 w: 1.0 } @@ -1789,12 +1843,12 @@ nodes { w: 1.0 } type: TYPE_TEMPLATE - id: "listitem11" - parent: "listroot" + id: "radio2" + parent: "panel" layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/radiobutton.gui" template_node_child: false } nodes { @@ -1817,8 +1871,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 38.0 + y: 38.0 z: 0.0 w: 1.0 } @@ -1830,31 +1884,31 @@ nodes { } type: TYPE_BOX blend_mode: BLEND_MODE_ALPHA - texture: "gooey/blue_button04" - id: "listitem11/bg" + texture: "gooey/grey_circle" + id: "radio2/button" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_FIT - parent: "listitem11" + parent: "radio2" layer: "below" inherit_alpha: true slice9 { - x: 10.0 - y: 10.0 - z: 10.0 - w: 11.0 + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 } clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL + size_mode: SIZE_MODE_AUTO } nodes { position { - x: -185.0 + x: 30.0 y: 0.0 z: 0.0 w: 1.0 @@ -1872,8 +1926,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -1885,9 +1939,9 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "LIST ITEM" + text: "RADIO" font: "example" - id: "listitem11/text" + id: "radio2/label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_W @@ -1905,7 +1959,7 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false - parent: "listitem11/bg" + parent: "radio2" layer: "text" inherit_alpha: true alpha: 1.0 @@ -1917,8 +1971,8 @@ nodes { } nodes { position { - x: 0.0 - y: -689.311 + x: -68.666 + y: -142.672 z: 0.0 w: 1.0 } @@ -1947,12 +2001,12 @@ nodes { w: 1.0 } type: TYPE_TEMPLATE - id: "listitem12" - parent: "listroot" + id: "radio3" + parent: "panel" layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/listitem.gui" + template: "/gooey/themes/kenneyblue/components/radiobutton.gui" template_node_child: false } nodes { @@ -1975,8 +2029,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 38.0 + y: 38.0 z: 0.0 w: 1.0 } @@ -1988,31 +2042,31 @@ nodes { } type: TYPE_BOX blend_mode: BLEND_MODE_ALPHA - texture: "gooey/blue_button04" - id: "listitem12/bg" + texture: "gooey/grey_circle" + id: "radio3/button" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER adjust_mode: ADJUST_MODE_FIT - parent: "listitem12" + parent: "radio3" layer: "below" inherit_alpha: true slice9 { - x: 10.0 - y: 10.0 - z: 10.0 - w: 11.0 + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 } clipping_mode: CLIPPING_MODE_NONE clipping_visible: true clipping_inverted: false alpha: 1.0 template_node_child: true - size_mode: SIZE_MODE_MANUAL + size_mode: SIZE_MODE_AUTO } nodes { position { - x: -185.0 + x: 30.0 y: 0.0 z: 0.0 w: 1.0 @@ -2030,8 +2084,8 @@ nodes { w: 1.0 } size { - x: 400.0 - y: 60.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -2043,9 +2097,9 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "LIST ITEM" + text: "RADIO" font: "example" - id: "listitem12/text" + id: "radio3/label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_W @@ -2063,7 +2117,7 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false - parent: "listitem12/bg" + parent: "radio3" layer: "text" inherit_alpha: true alpha: 1.0 @@ -2075,8 +2129,8 @@ nodes { } nodes { position { - x: 227.618 - y: 581.439 + x: 0.0 + y: 149.191 z: 0.0 w: 1.0 } @@ -2106,10 +2160,11 @@ nodes { } type: TYPE_TEMPLATE id: "input" + parent: "panel" layer: "" inherit_alpha: true alpha: 1.0 - template: "/example/templates/input.gui" + template: "/gooey/themes/kenneyblue/components/input.gui" template_node_child: false } nodes { @@ -2287,8 +2342,8 @@ nodes { } nodes { position { - x: 180.98 - y: 228.339 + x: 113.214 + y: 1090.268 z: 0.0 w: 1.0 } @@ -2305,8 +2360,8 @@ nodes { w: 1.0 } size { - x: 300.0 - y: 400.0 + x: 200.0 + y: 100.0 z: 0.0 w: 1.0 } @@ -2316,33 +2371,18 @@ nodes { z: 1.0 w: 1.0 } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "gooey/blue_panel" - id: "panel" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT + type: TYPE_TEMPLATE + id: "back" layer: "" inherit_alpha: true - slice9 { - x: 5.0 - y: 5.0 - z: 5.0 - w: 5.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false alpha: 1.0 + template: "/gooey/themes/kenneyblue/components/button.gui" template_node_child: false - size_mode: SIZE_MODE_MANUAL } nodes { position { - x: 1.381 - y: 118.723 + x: 0.0 + y: 0.0 z: 0.0 w: 1.0 } @@ -2359,8 +2399,8 @@ nodes { w: 1.0 } size { - x: 200.0 - y: 100.0 + x: 192.0 + y: 51.0 z: 0.0 w: 1.0 } @@ -2370,56 +2410,16 @@ nodes { z: 1.0 w: 1.0 } - type: TYPE_TEMPLATE - id: "button" - parent: "panel" - layer: "" - inherit_alpha: true - alpha: 1.0 - template: "/example/templates/button.gui" - template_node_child: false -} -nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 192.0 - y: 51.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "gooey/blue_button04" - id: "button/bg" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "button" - layer: "below" + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "gooey/blue_button04" + id: "back/bg" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "back" + layer: "below" inherit_alpha: true slice9 { x: 6.0 @@ -2467,167 +2467,9 @@ nodes { } type: TYPE_TEXT blend_mode: BLEND_MODE_ALPHA - text: "BUTTON" - font: "example" - id: "button/label" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "button/bg" - layer: "text" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 1.0 - shadow_alpha: 1.0 - template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 -} -nodes { - position { - x: -68.482 - y: 56.38 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEMPLATE - id: "checkbox" - parent: "panel" - layer: "" - inherit_alpha: true - alpha: 1.0 - template: "/example/templates/checkbox.gui" - template_node_child: false -} -nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 40.0 - y: 38.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "gooey/grey_box" - id: "checkbox/box" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "checkbox" - layer: "below" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: true - size_mode: SIZE_MODE_AUTO -} -nodes { - position { - x: 60.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "CHECKBOX" + text: "< BACK" font: "example" - id: "checkbox/label" + id: "back/label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE pivot: PIVOT_CENTER @@ -2645,486 +2487,13 @@ nodes { } adjust_mode: ADJUST_MODE_FIT line_break: false - parent: "checkbox" - layer: "text" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 1.0 - shadow_alpha: 1.0 - template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 -} -nodes { - position { - x: -68.666 - y: 0.885 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEMPLATE - id: "radio1" - parent: "panel" - layer: "" - inherit_alpha: true - alpha: 1.0 - template: "/example/templates/radiobutton.gui" - template_node_child: false -} -nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 38.0 - y: 38.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "gooey/grey_circle" - id: "radio1/button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "radio1" - layer: "below" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: true - size_mode: SIZE_MODE_AUTO -} -nodes { - position { - x: 60.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "RADIO" - font: "example" - id: "radio1/label" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "radio1" - layer: "text" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 1.0 - shadow_alpha: 1.0 - template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 -} -nodes { - position { - x: -68.666 - y: -49.115 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEMPLATE - id: "radio2" - parent: "panel" - layer: "" - inherit_alpha: true - alpha: 1.0 - template: "/example/templates/radiobutton.gui" - template_node_child: false -} -nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 38.0 - y: 38.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "gooey/grey_circle" - id: "radio2/button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "radio2" - layer: "below" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: true - size_mode: SIZE_MODE_AUTO -} -nodes { - position { - x: 60.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "RADIO" - font: "example" - id: "radio2/label" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "radio2" - layer: "text" - inherit_alpha: true - alpha: 1.0 - outline_alpha: 1.0 - shadow_alpha: 1.0 - template_node_child: true - text_leading: 1.0 - text_tracking: 0.0 -} -nodes { - position { - x: -68.666 - y: -99.115 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEMPLATE - id: "radio3" - parent: "panel" - layer: "" - inherit_alpha: true - alpha: 1.0 - template: "/example/templates/radiobutton.gui" - template_node_child: false -} -nodes { - position { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 38.0 - y: 38.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_BOX - blend_mode: BLEND_MODE_ALPHA - texture: "gooey/grey_circle" - id: "radio3/button" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - adjust_mode: ADJUST_MODE_FIT - parent: "radio3" - layer: "below" - inherit_alpha: true - slice9 { - x: 0.0 - y: 0.0 - z: 0.0 - w: 0.0 - } - clipping_mode: CLIPPING_MODE_NONE - clipping_visible: true - clipping_inverted: false - alpha: 1.0 - template_node_child: true - size_mode: SIZE_MODE_AUTO -} -nodes { - position { - x: 60.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - rotation { - x: 0.0 - y: 0.0 - z: 0.0 - w: 1.0 - } - scale { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - size { - x: 200.0 - y: 100.0 - z: 0.0 - w: 1.0 - } - color { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - type: TYPE_TEXT - blend_mode: BLEND_MODE_ALPHA - text: "RADIO" - font: "example" - id: "radio3/label" - xanchor: XANCHOR_NONE - yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER - outline { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - shadow { - x: 1.0 - y: 1.0 - z: 1.0 - w: 1.0 - } - adjust_mode: ADJUST_MODE_FIT - line_break: false - parent: "radio3" + parent: "back/bg" layer: "text" inherit_alpha: true alpha: 1.0 outline_alpha: 1.0 shadow_alpha: 1.0 + overridden_fields: 8 template_node_child: true text_leading: 1.0 text_tracking: 0.0 diff --git a/example/kenneyblue.gui_script b/example/kenneyblue.gui_script new file mode 100644 index 0000000..07c0113 --- /dev/null +++ b/example/kenneyblue.gui_script @@ -0,0 +1,51 @@ +local gooey = require "gooey.gooey" +local kenneyblue = require "gooey.themes.kenneyblue.kenneyblue" + + + + +function init(self) + gooey.acquire_input() + self.list_ids = { + "listitem1/bg", "listitem2/bg", "listitem3/bg", "listitem4/bg", "listitem5/bg", + "listitem6/bg", "listitem7/bg" + } + kenneyblue.input("input", gui.KEYBOARD_TYPE_DEFAULT, nil, { x=0, y=0 }, "EMPTY TEXT") +end + +function on_input(self, action_id, action) + kenneyblue.button("button", action_id, action, function(button) + print("pressed button") + end) + + kenneyblue.button("back", action_id, action, function(button) + msg.post("controller:/go", "show_menu") + end) + + kenneyblue.checkbox("checkbox", action_id, action, function(checkbox) + print("checked", checkbox.checked) + end) + + kenneyblue.radiogroup("GROUP1", action_id, action, function(group_id, action_id, action) + kenneyblue.radio("radio1", group_id, action_id, action, function(radio) + print("selected 1", radio.selected) + end) + kenneyblue.radio("radio2", group_id, action_id, action, function(radio) + print("selected 2", radio.selected) + end) + kenneyblue.radio("radio3", group_id, action_id, action, function(radio) + print("selected 3", radio.selected) + end) + end) + + kenneyblue.list("listroot", self.list_ids, action_id, action, function(list) + print("selected list item", list.selected_item) + end) + + kenneyblue.input("input", gui.KEYBOARD_TYPE_DEFAULT, action_id, action, "EMPTY TEXT") +end + +function on_reload(self) + -- Add input-handling code here + -- Remove this function if not needed +end diff --git a/example/example.collection b/example/menu.collection similarity index 83% rename from example/example.collection rename to example/menu.collection index addc5ec..fe2aa46 100644 --- a/example/example.collection +++ b/example/menu.collection @@ -1,10 +1,10 @@ -name: "example" +name: "menu" scale_along_z: 0 embedded_instances { id: "go" data: "components {\n" - " id: \"example\"\n" - " component: \"/example/example.gui\"\n" + " id: \"menu\"\n" + " component: \"/example/menu.gui\"\n" " position {\n" " x: 0.0\n" " y: 0.0\n" diff --git a/example/menu.gui b/example/menu.gui new file mode 100644 index 0000000..3b0f2b2 --- /dev/null +++ b/example/menu.gui @@ -0,0 +1,254 @@ +script: "/example/menu.gui_script" +fonts { + name: "example" + font: "/assets/fonts/example.font" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 320.0 + y: 568.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 50.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "" + id: "dirtybutton" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.2 + y: 0.2 + z: 0.2 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "DIRTY LARRY" + font: "example" + id: "dirtytext" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "dirtybutton" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 320.0 + y: 498.151 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 50.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "" + id: "kenneybutton" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.2 + y: 0.2 + z: 0.2 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "KENNEY" + font: "example" + id: "kenneytext" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "kenneybutton" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +layers { + name: "below" +} +layers { + name: "text" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/example/menu.gui_script b/example/menu.gui_script new file mode 100644 index 0000000..acf6924 --- /dev/null +++ b/example/menu.gui_script @@ -0,0 +1,19 @@ +local gooey = require "gooey.gooey" + +function init(self) + gooey.acquire_input() +end + +function on_input(self, action_id, action) + gooey.button("dirtybutton", action_id, action, function() + msg.post("controller:/go", "show_dirtylarry") + end) + gooey.button("kenneybutton", action_id, action, function() + msg.post("controller:/go", "show_kenneyblue") + end) +end + +function on_reload(self) + -- Add input-handling code here + -- Remove this function if not needed +end diff --git a/game.project b/game.project index eefbb2a..a9e3e23 100644 --- a/game.project +++ b/game.project @@ -2,15 +2,18 @@ title = Gooey [bootstrap] -main_collection = /example/example.collectionc +main_collection = /example/controller.collectionc [input] game_binding = /input/game.input_bindingc [display] -width = 1136 -height = 640 +width = 640 +height = 1136 [script] shared_state = 1 +[library] +include_dirs = gooey + diff --git a/gooey/gooey.lua b/gooey/gooey.lua index ee5a2d8..be88303 100644 --- a/gooey/gooey.lua +++ b/gooey/gooey.lua @@ -13,13 +13,15 @@ local radiobuttons = {} local lists = {} local inputfields = {} +local groups = {} + local utf8_gfind = "([%z\1-\127\194-\244][\128-\191]*)" -- Convert string to hash, unless it's already a hash -- @param str String to convert -- @return The hashed string local function to_hash(str) - return type(str) == "string" and hash(str) or id + return type(str) == "string" and hash(str) or str end --- Create a unique key for an hash by combining the id with the current url @@ -33,13 +35,13 @@ local function to_key(hsh) .. hash_to_hex(hsh) end ---- Get an instance (table) for a node or create one if it doesn't +--- Get an instance (table) for an id or create one if it doesn't -- exist --- @param node_id +-- @param id (hash|string) -- @param instances -- @return Instance for the node -local function instance(node_id, instances) - local key = to_key(node_id) +local function instance(id, instances) + local key = to_key(id) instances[key] = instances[key] or {} return instances[key] end @@ -147,6 +149,40 @@ function M.checkbox(node_id, action_id, action, fn) end + +function M.radiogroup(group_id, action_id, action, fn) + local group_id = to_hash(group_id) + + fn(group_id, action_id, action) + + -- get the group and empty it + local group = instance(group_id, groups) + for k,_ in pairs(group) do + group[k] = nil + end + + local selected_radio + local group_key = to_key(group_id) + for _,radio in pairs(radiobuttons) do + if radio.group == group_key then + if radio.selected_now then + selected_radio = radio + end + table.insert(group, radio) + end + end + + if selected_radio then + for _,radio in ipairs(group) do + if radio ~= selected_radio then + radio.selected = false + end + end + end + return group +end + + function M.radio(node_id, group_id, action_id, action, fn) node_id = to_hash(node_id) group_id = to_hash(group_id) @@ -166,6 +202,7 @@ function M.radio(node_id, group_id, action_id, action, fn) if not radio.enabled then radio.pressed_now = false radio.released_now = false + radio.selected_now = false else local touch = action_id == M.TOUCH local pressed = touch and action.pressed and radio.over @@ -173,13 +210,9 @@ function M.radio(node_id, group_id, action_id, action, fn) radio.pressed_now = pressed and not radio.pressed radio.released_now = released and radio.pressed radio.pressed = pressed or (radio.pressed and not released) - if radio.released_now and radio.over then + radio.selected_now = radio.released_now and radio.over + if radio.selected_now then radio.selected = true - for _,rb in pairs(radiobuttons) do - if rb ~= radio and rb.group == radio.group and rb.selected then - rb.selected = false - end - end fn(radio) end end diff --git a/gooey/themes/dirtylarry/components/button.gui b/gooey/themes/dirtylarry/components/button.gui new file mode 100644 index 0000000..68510be --- /dev/null +++ b/gooey/themes/dirtylarry/components/button.gui @@ -0,0 +1,141 @@ +script: "" +fonts { + name: "dirtylarry" + font: "/gooey/themes/dirtylarry/fonts/dirtylarry.font" +} +textures { + name: "dirtylarry" + texture: "/gooey/themes/dirtylarry/images/dirtylarry.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 220.0 + y: 64.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/button_normal" + id: "bg" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "below" + inherit_alpha: true + slice9 { + x: 12.0 + y: 12.0 + z: 12.0 + w: 12.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "LABEL" + font: "dirtylarry" + id: "label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "bg" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +layers { + name: "below" +} +layers { + name: "text" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/gooey/themes/dirtylarry/components/checkbox.gui b/gooey/themes/dirtylarry/components/checkbox.gui new file mode 100644 index 0000000..416748a --- /dev/null +++ b/gooey/themes/dirtylarry/components/checkbox.gui @@ -0,0 +1,140 @@ +script: "" +fonts { + name: "dirtylarry" + font: "/gooey/themes/dirtylarry/fonts/dirtylarry.font" +} +textures { + name: "dirtylarry" + texture: "/gooey/themes/dirtylarry/images/dirtylarry.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 64.0 + y: 68.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/checkbox_normal" + id: "box" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "below" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 50.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "LABEL" + font: "dirtylarry" + id: "label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +layers { + name: "below" +} +layers { + name: "text" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/gooey/themes/dirtylarry/components/input.gui b/gooey/themes/dirtylarry/components/input.gui new file mode 100644 index 0000000..c096743 --- /dev/null +++ b/gooey/themes/dirtylarry/components/input.gui @@ -0,0 +1,196 @@ +script: "" +fonts { + name: "dirtylarry" + font: "/gooey/themes/dirtylarry/fonts/dirtylarry.font" +} +textures { + name: "dirtylarry" + texture: "/gooey/themes/dirtylarry/images/dirtylarry.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 400.0 + y: 64.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/input" + id: "bg" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + adjust_mode: ADJUST_MODE_FIT + layer: "below" + inherit_alpha: true + slice9 { + x: 12.0 + y: 12.0 + z: 12.0 + w: 15.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 12.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "" + font: "dirtylarry" + id: "text" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "bg" + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 12.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 2.0 + y: 40.0 + z: 0.0 + w: 1.0 + } + color { + x: 0.5019608 + y: 0.5019608 + z: 0.5019608 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "" + id: "cursor" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "bg" + layer: "" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +layers { + name: "below" +} +layers { + name: "text" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/gooey/themes/dirtylarry/components/radio.gui b/gooey/themes/dirtylarry/components/radio.gui new file mode 100644 index 0000000..90eb2c1 --- /dev/null +++ b/gooey/themes/dirtylarry/components/radio.gui @@ -0,0 +1,140 @@ +script: "" +fonts { + name: "dirtylarry" + font: "/gooey/themes/dirtylarry/fonts/dirtylarry.font" +} +textures { + name: "dirtylarry" + texture: "/gooey/themes/dirtylarry/images/dirtylarry.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 64.0 + y: 68.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "dirtylarry/radio_normal" + id: "button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "below" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 60.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "LABEL" + font: "dirtylarry" + id: "label" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_W + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + layer: "text" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +layers { + name: "below" +} +layers { + name: "text" +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/gooey/themes/dirtylarry/dirtylarry.lua b/gooey/themes/dirtylarry/dirtylarry.lua new file mode 100644 index 0000000..3ee9cb1 --- /dev/null +++ b/gooey/themes/dirtylarry/dirtylarry.lua @@ -0,0 +1,85 @@ +local gooey = require "gooey.gooey" + + +local M = {} + + +function M.acquire_input() + gooey.acquire_input() +end + +function M.button(node_id, action_id, action, fn) + local button = gooey.button(node_id .. "/bg", action_id, action, fn) + if button.pressed then + gui.play_flipbook(button.node, "button_pressed") + else + gui.play_flipbook(button.node, "button_normal") + end + return button +end + + +function M.checkbox(node_id, action_id, action, fn) + local checkbox = gooey.checkbox(node_id .. "/box", action_id, action, fn) + if checkbox.pressed and not checkbox.checked then + gui.play_flipbook(checkbox.node, "checkbox_pressed") + elseif checkbox.pressed and checkbox.checked then + gui.play_flipbook(checkbox.node, "checkbox_checked_pressed") + elseif checkbox.checked then + gui.play_flipbook(checkbox.node, "checkbox_checked_normal") + else + gui.play_flipbook(checkbox.node, "checkbox_normal") + end + return checkbox +end + + +local function update_radiobutton(radio) + if radio.pressed and not radio.selected then + gui.play_flipbook(radio.node, "radio_pressed") + elseif radio.pressed and radio.selected then + gui.play_flipbook(radio.node, "radio_checked_pressed") + elseif radio.selected then + gui.play_flipbook(radio.node, "radio_checked_normal") + else + gui.play_flipbook(radio.node, "radio_normal") + end +end + +function M.radiogroup(group_id, action_id, action, fn) + local radiobuttons = gooey.radiogroup(group_id, action_id, action, fn) + for _,radio in ipairs(radiobuttons) do + update_radiobutton(radio) + end + return radiobuttons +end + +function M.radio(node_id, group_id, action_id, action, fn) + local radio = gooey.radio(node_id .. "/button", group_id, action_id, action, fn) + update_radiobutton(radio) + return radio +end + + +function M.input(node_id, keyboard_type, action_id, action, empty_text) + local input = gooey.input(node_id .. "/text", keyboard_type, action_id, action) + + if input.empty and not input.selected then + gui.set_text(input.node, empty_text) + end + + local cursor = gui.get_node(node_id .. "/cursor") + if input.selected then + gui.set_enabled(cursor, true) + gui.set_position(cursor, vmath.vector3(14 + input.text_width, 0, 0)) + gui.cancel_animation(cursor, gui.PROP_COLOR) + gui.set_color(cursor, vmath.vector4(1)) + gui.animate(cursor, gui.PROP_COLOR, vmath.vector4(1,1,1,0), gui.EASING_INSINE, 0.8, 0, nil, gui.PLAYBACK_LOOP_PINGPONG) + else + gui.set_enabled(cursor, false) + gui.cancel_animation(cursor, gui.PROP_COLOR) + end + return input +end + +return M \ No newline at end of file diff --git a/gooey/themes/dirtylarry/fonts/dirtylarry.font b/gooey/themes/dirtylarry/fonts/dirtylarry.font new file mode 100644 index 0000000..712decd --- /dev/null +++ b/gooey/themes/dirtylarry/fonts/dirtylarry.font @@ -0,0 +1,16 @@ +font: "/builtins/fonts/vera_mo_bd.ttf" +material: "/builtins/fonts/font.material" +size: 32 +antialias: 1 +alpha: 1.0 +outline_alpha: 0.0 +outline_width: 0.0 +shadow_alpha: 0.0 +shadow_blur: 0 +shadow_x: 0.0 +shadow_y: 0.0 +extra_characters: "" +output_format: TYPE_BITMAP +all_chars: false +cache_width: 0 +cache_height: 0 diff --git a/gooey/themes/dirtylarry/images/button_normal.png b/gooey/themes/dirtylarry/images/button_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..b5790204a2c65cc801c27f03005553eba3e51af2 GIT binary patch literal 1873 zcma)72~ZPP7!HAg71WGW5o~oE5Jk-$60=D>l5nIZh!8OPzEDAz-n6-sy$1PC?qXeb1d zE0f}?Ar1y(k5@~ih*T^B6|jaVw_%7zjSgjFFq~yZom>$EA;2amTCL^c2gr z5G00+|6ocg4hHzJ9s+!cG=hRmp#Tg9kwW)nFer-wDw#qhkhwbi8r`_8)-bwF=!TJuavh06B-=_F1B%7}4b^DI(FP<0 z`snvxg$7PujNrv$P^dK^a;*Xq3b=Swfv8q1K>>@(CkuE>=q$<-3dN7XqcWL%CX3Ib^8A^8 z6#5uf04w4(kQN!^DnD{r6LM{>pwXe31(05y04e?Tum%_@8B|Z~g)yPtC|5bL7v_Xq z5^9EIJJ?SSdTa^p9$Prxw&-NM@gXhR?RvDWYvV~>=+{yq6s(XKTY6h=2f41EWgVnl z{c&dCvtmIW`x2MWB(7Un9FTKk=Ury7+uJXU*RwOH0p(a=p>@2dVfG~|8Z%H`5` z7aA)fB(lEq5!IZ1nHTbxuZqtWb?w|y8ZVbkZ#?_uA*G{~-Tn=`Rgu}dJ%!qJqh!JE zx*MN`uZ!q9N`FPyJDHYo4sL(g-R!1pa5vR;i-|e3L1UZoSY^nmv;n6V@vaW(KIWDA z(#1#gmwF>kt>7Lw8auT3{A*gHf7ws8pP9RB>g#c5Ccn}lh%(_#LY~%b{;S-xhO9pt zvSVVAJ(g|GE>ov6He^~hZhh2tJ^y=exH|4$>YUl`bJXQHYe^z?7#R%WrQT_dgQ&Sx zmJBO%#-%5mfi1N5G`Fk@5!Fo16coqIUvzB8vFeKjtSM)4Ev+wy&M~=Wx3?u8XR^xO zs_qxAF$H>y`~595G?hd3c_+-`mS}x*c#mIsq$kmOQmmTYU6Q9!%RFDZ4=;EeRwR*% zfsEE&t$SxZu=3t-=t-@spt<2{G@c#o4#^$}`|c~O{UjHFjB#+p%~~$Q*y3$g%t)MW zHxgs*(e-pYhnv$!K$!na_y^e$6}1sMLvy39h{hpJ<~MbBip|RTlbrE-iHcK zZ%VM0= zoDM0=HQft+Q#|nb(BPV`)NT>Zp@zlbkSi+#yuYhCB3bxoEB{(pR*PeL`DMcWnRNR; zerH1j*taC?%JYKi)|a=ZDN@?^-v>M6!dxw0ksXEAj>>}DZP`WVirycHT-uy=*V%Kk z1Mcgdy(?21O2M*+hTK!bjfGdNZ&JdhS!CUX36*PNnGY@#4mOlNI}f-fTMLCU^X8Hv zZ_XAwLQ4kfQP3Oiaf?^x)7kv=j%XF(*3+V=&Z_qHebpS3tgKS{+BT1pmm%2pyjvB=*#NKw?@v9X=q>^=9n-_LoT=Y7BLd%ttz_qgpa zHZ(UR5D3P?odS2fZNVWn(8s^2-*8!Yvlep^V;)E_rk0=(!BK_;L4Z&p34z=pi7YC- z94G%X^K$ry3D8gVBPh(G<^X1`v?KFi5%u%pI z_Qb!F5{vc#&Ik$tERaE#QfV}R%?4>q7Mo2Y0dy*jPNCv2n@nT!SZp4h1H5~Pcr;WN z%ySpGzKeyA?1`ZmrsPp5YPA|vGe86lq0qQouGWK2C*usVDhkFV8ZxZ1ns*RDDk&;g zVsZoqw2qP>Bm%Q1;+g)v1ch?J7FNC6CVayv8i|rZ1F702%@akU|EDSx3v3nU4*iqw z2aQ#pQA&v74ylj`REi&5u$4BHlIM&<5)45-5hQGW7x#oB7@`VAlz_7b8`$C_hh>Ob zwRMg!67htv3X{N6NGPx;;trr(F5|f{S+)WJ!eJ=pgSdVUJ89&LA_Z1KTD;X^Q9?I>Q>uWGVO@Y_--6gYZnT8CSkU<)s^*ryDs zwef~i#M4D2gGi>ZaD&Aef2U`9)x|+^T_&-5elA-}EH;9%=yJtC%D9!c!gpiRcfXId z9IlJ_Rl^gu0_>@%bA>&L*8Yjl2OBSWB)Vo}DGlisraekluuWe^+Lg5B%Yq*TG-lDN z>Sk7{ChoMyRApk}_tvy*yhsV^NEj&1RsJYBMe4h3Fp|vBO(-p>eHy*{?)77-`yM+a z-mc8gB3Xp{C)B*`KAL)U)r5%oJbcJ-4N|fGgkK=d>ws?#ock@0=CZdmsj=P)odNDKV|tbAGyWi z^C_UMGsnC>zr+qa!VS2=<~;2Dy64!dBVi8S1qG#Dofl=(kH_-;?nT-cjAj13so=0f zVQ8eJu~-t8ccCT5E9trqoO8*#L8RzUxtaqG+r7Q==(t#CJ2dboed0Hv6}KpN_Q=7j z%~>XhO<+|3zgfQIOwA{z=NRSB?5b?@`)$03Le8$g*_Pl~9&AAll;-zVyUn&a#elYI zi;2wHE`G=5k92h7w1}%F;P~u7EDnIG#Y!_R42i&(=CROTM2>gBf7~C9(mU#pR7)J+}EFCgxlT=!~zbrr7YpD6K|7`n-WXqh4j8D}o?ug4! zo2I_aqVqw_=ogZn-ln7x+b6gC2Yo;i>D+mr)cf7t-BZ4o-z>9gd}2w8&bzQ}WOOvw zI_8V}H*Pq#u}2PG4CoZ;vEzsLt*dmajQvVAX*waSoqTXFKCgQ7Y5(||$+XPZdX&o5 z3DaA;f7#2Qe)9Qh)0vegCetcvr*(|nI6su2d24-!3?GV{z`p+awEUU%wH20({!Ds} siF7>Ie0l{F&JD?0<6t|`U8QG6XlXU3ue~-@sr{V^UEBl(P6v+u1^aB_nE(I) literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/checkbox_checked_normal.png b/gooey/themes/dirtylarry/images/checkbox_checked_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b05e5f3a2f9db8198beb3c164d78efcc01bc2b GIT binary patch literal 2283 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 N4>xb(4VSRA{{RU+=7InK literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/checkbox_normal.png b/gooey/themes/dirtylarry/images/checkbox_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ba79705f64dc9369763cb48472cab0950fe900fd GIT binary patch literal 1723 zcmb7Dc~BEq99}^qBVegl3wUfp5gaASh9r<}A_)mc&?rYlbnpn91!Bl<*ep$e&>|EN ztO1l_J4jKSQ4rC#0#5G8Xq8js4q0^eTCYb$$%&_0*@sPN&*GMDm(@SWm;t%8jdPe z$%#Ls0sye3s})gXlzcUe;97>#ieVVFI*JVd0zacpiD*y~j6vhnn2_FAe~u2SRYLlD zuAC*;Nziz8a0-D&q^waODH?>YqWi4`1xA<>(4wRgG-?wtJ!}-x$8=%pY`tdE!7&J_ z5z^lV6(tV^B{+eCT!yz7!h#@>$74VoE{_MT0NE^v&16vz&kN$fTprB!0mm1e@?lSm<*iu7#?THT~9rXMd8RWPPesbfM6mNlgbpj`gnP_1?nttZ3Lck%wK zuwId@Lz&^I9#0|=s&TPyR#!S$LZC_#ClolIFj2+Oc$~!b@wg6@MDRe*^=eFo8}!S@ z@NzjU!}O#QLr|GiNT(DSYPAaH`0~A3Twi|9ViLp__DbyHj5(;oZw1v zBuR^6zb?3?wy*20T#{tTZ#8|f)H5|K zt5cjmxF`AAh>(LDH$3{FD8&6pWR>D<=%Hvvkh$y27pA_!iaWjGRX58)yNdaB17)Wy z$M=_Q+u%T?Z?x3sT@PEmW#6I7%4JnKufIzS9!%*d@_bk@b7+tIGl90VY_Qs=1>!@p zvwbDSjZH?{ini|K5(jki1nr+cx_(*36#$XHh}{@nKT2ws4?C{7jUs4E}>~Piq%^QX(u| zoJo6JFQLU~9;L;t6;wq$s6RL~WWJc&w=j))dY~)^Z~|;ZfE_Rm1g59|KO_C9tzFKh z)|0pH@?S27()~QJkeg1=4UKhyr~9&BR@`&gYPcmIsrG7uE!m&B()2lg#iP?ZLYhf< z(JzP3I^^H(ZMb|nnvFEn#2q{&M)1m8_cL-ezQg4n($VJ5x|Xh>0N3tQPsR32$;OVm zw@0%xYv;O|?Hy~5?rK(B7HWEg&Vz?Jo*%<`PChlz;0ad$1GQy)zu@bkXkk{Y`|Ixe zwJjHEBLzzLI%Mz6*7b{%p4KaWZ@-e)Z;JNWF}G@`eQlGksrq52Z^>^Th4CV7OFp-$ zb}?k6KU;8ZQAJ^ce978ZIULV@g4E>>c277JZX4HqbA9O1GN!)u)j)o;Ur~$2mLbkc xY)Nfp);8P;#eWnwit=gT8`_L?;EHKv{#IbuHaNjGKoAK~OBS$3ddz=o#@||^nf3qx literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/checkbox_pressed.png b/gooey/themes/dirtylarry/images/checkbox_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..9db76749a853110d68874ad380efbab5b13b7367 GIT binary patch literal 2333 zcmaJ@dstFw9tK8AN!RhxO(#8Kk!{IEi3CAK0WXCqQI=M6J1QC+1}Lx=!^@6ZrlwiW zOq1qh*0ZUYc5yVJS;v~eo@C0+w0hdgqSCa?YgT(~vYkJ+JdoABG%+N@3uiERtxN&45eRy)Rv{FpfoebmCQIcE>`;pl3rHml zY}{%tk*f#;Q=}2QmEeZm(R}glG%;0z4Gse6S{f`M1Jy!6E88Jg(XHZ~pb-cfjRvpr$3x0w0*Okc&S?1g`N9ZaRk~a))cVR* z-m?lUP$gDM6>2FY2WAw7B50?YfrTUeBL$h_ldN3zu}pBm2wI_nK*AGeQkn&Fx&I$3 zlYK&~)I9LN@%~R?6+c}85_q5r+Nl)7jZ5;LaiySzDM6tcQt}~a$7~g2QXn;?N`VwW z*aiyV6DO5RAdPCp2RxTciLb(`>WHGR?0$wVW(8#PX7L&;2kf|gJiNvN**RV)b zBAXP-Vfs<2Wm;Dd5_+LiEFLqk=i2n70IB#X({ z_6{UmDspGLR&0U()}RtpD96w-C=53bpU*p4z~UZJ#4wrcOlxuFkNOB^6Dw*hGjn2I z1h1Nj#Vpkv2NGG$^QieN@#Fsv+@pn{j`WPc#+E|eb4D^}_jh-1*H6BEJbv%{bIH}b zsEfayE?r(2GV0Z{#qdzzV6clFIExvx9YFT1HdL5iyeyT!dzs8PH>;kAH08!dy~&6U zbll{;r$tS+OVl&S2d)%da_P=QPw$Dji+UrlH@O$&^`Ea3&s{Nby>bdYFrSnGIuC>! zu1m!cCZl8bxOKs6n-$fzCdrqqbN{%SBW{T;5yj0dJRO}}^Mc_RIJu-pJh&hb(-pM$ z+iU{TsuTJ|Rr40oQRf!xLaV5CL-D_j9#X^w8|r(WoEl*?IkNTCa%xs# z5IUNvGWmJf<QK-5a{nwzPiBst7YCeX_ObM61Uz z3(0x+7qo2+N|Z^=&uM*PW0U9GZyA&)7%_&-3+P{j{nKs3Bgo3X0)2;UNCuRa*mMo8 zi>x`WRT@!)c$Ai(t(}6dt(vr$+P_~Lj$oq1)5g6>INTY!sGgm$WOs)If(Gvb_ zR|~=jJk0TlLl+Btq(m}-NglKW6tj_$%|TL100wP)gy;Vt-D{!sU~gW{&vylbc^k8v zL!u-{7ANu^86F)Y`X8zrDVVpkH9j}8k?^!+;oP70M=6|Y1Dsq}T|?o*S|jWuyps+= zIdzMQ?~E3Z1U|v>kJvx!mqm>1m8x>9rai3XdCQ{jd{e8xw4IJTrau!*dolXJL@q|{ z3n_h#zi&5eqea0V5bO2JO)h^jL+Wf!p%5`Gp?coKH8;1sU-S|`eAWr59%wyt-)Rp5 z+)vqMjY@0e_VO(vbRt2L`n%@Fzl3ku1I*^F865Z9q6eYLSs4}A8ob6T<7?}>I%>(N zp7`mWjAQpFtu;O+;;;ec+wNX*6fT3`)!Vzze5{#M;Ho>?N7Q%NS3pm*YwMFdNezxT zS3#mZ4u?C8b6gix9ZsRFVVe#8g6?Kz_P1_bJH|T)FjHIGv&vJLoqCJe-FEZL%FwCiVv-wj^vzaQR+Q zYE_lyEUJ7p=S3bewkfymykOWc^c8(U`#u;yr_Sjo%-FAd-Lu5JlKvXA8JhR%i2Kwv zT5tKIcTcl#?DgJs?e<2#sRYL)pL8#}ryU&aEB5RY2RudI_KZ)VxV^XH+FK=?^0%P^ zzu0uTJJnnk)qkOS`TD}TpafZ-Xxffmd_`aitGIQxDD-H@oo%?>l8d%u^HCixMPCKc z9W$EV8_UWb_fEwxIq#^4%Dk*svx=Hf=nIOH4YmBZXXo5FZ+0#S#iw>Mp4-&xxtY3D z&XW9cDdlD9NbbW|Jo~YKPXF-tm5)c#+hSfN8`uWI*Hz>sA!4K6Gx~k1sbza^eYWn* z{No*xn@;9%+hd+;-!k_5iTJtuG?$~ZFQGRrj5Me1k5ypy53Ly|U4Ncpw9+Q`BIh8U X)s;oq9rS>IWe|u+b~LLlRFL%_sUEy5 literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/dirtylarry.atlas b/gooey/themes/dirtylarry/images/dirtylarry.atlas new file mode 100644 index 0000000..0fee867 --- /dev/null +++ b/gooey/themes/dirtylarry/images/dirtylarry.atlas @@ -0,0 +1,36 @@ +images { + image: "/gooey/themes/dirtylarry/images/button_normal.png" +} +images { + image: "/gooey/themes/dirtylarry/images/button_pressed.png" +} +images { + image: "/gooey/themes/dirtylarry/images/checkbox_checked_normal.png" +} +images { + image: "/gooey/themes/dirtylarry/images/checkbox_checked_pressed.png" +} +images { + image: "/gooey/themes/dirtylarry/images/checkbox_normal.png" +} +images { + image: "/gooey/themes/dirtylarry/images/checkbox_pressed.png" +} +images { + image: "/gooey/themes/dirtylarry/images/input.png" +} +images { + image: "/gooey/themes/dirtylarry/images/radio_checked_normal.png" +} +images { + image: "/gooey/themes/dirtylarry/images/radio_checked_pressed.png" +} +images { + image: "/gooey/themes/dirtylarry/images/radio_normal.png" +} +images { + image: "/gooey/themes/dirtylarry/images/radio_pressed.png" +} +margin: 0 +extrude_borders: 1 +inner_padding: 0 diff --git a/gooey/themes/dirtylarry/images/input.png b/gooey/themes/dirtylarry/images/input.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2b9c9e507707a8daba1ef5ccd790e0b189b4dc GIT binary patch literal 2785 zcmaJ@30RWp7XGZ6w8d;%E^R8&HJeF6Tu2ZkcP*E+8l4;$6hcfE0Rwk4%WIZg$J;`V zTBD7omP=!~fLdhUGIz5Qp(gLuT&WRU2faU)&ArbvT^=6z{`0@*{oZrV%lDIZ(9=bC z)z(!209`j%M;`!|jX-NxofXjMRg;cz=xYnt$&Y)8d5p^=u_?fg%nYHx-RLAL#fL&7 zM@K%Q-~m{UpdI$(`gyqHLYZ_VNrOT1=`1K406dY;B848OaN!{oDvd!vDC!yza2lC_ z@U`+V^I$np!f38BY|5b+&%>cH$3wAX1ko0b=i?v(I)zJu^XU-`4vtSiyywM1YfTu1 zfWL=uj}s6dMEQ9fggY?V6u1@A!Zg$jjfP_|NVKID27@+%o13A{QD)E^V~V!KSz&PI zd*L5n2xvDp`54Z}(fQ+E&=mm@#^thbC=`#!L-H(;Og0sT#$vG=4s&x;2w}>JW^hS- zQwC?}5`!a!6UwHsxHKjMu3;pFFr&Bx1f=vs33S#cS_bE1o1liF_#_qzjWpAgv;_3< z`2SEk{S%tQ^`ZQs_fLsAhoe~(ln;f&jADmEgFCiUvlR>Hz^0J6O!i?WGh(TW2g8_L zCMS%^f;$|-z<2x77-S}o^YweYhX>A$!Qqk^p%gbq0s>+{(r9EH*3#YzYj1|O#G?bkpVwmc*<2JP2BjJ7e+_ym1i44E{A63`;*;?y49M+l$kw-; zzSsqT_7OKnyTkmxFUZ_+fInu zcZy%ggkr++?zoAkJZekrt#sRQ=ABWg%D)vA0`N97`+=X{s5UG&VK97}d?8I)b~?Ku zHOi@AIcQ9~ab+;U)Nq|JvQJVU_8ETKNi|revmM2c;bO z*=u)8Wzqd_O2QR)ys$&t0We9A&eO_C;i$-!i8gA{=5AEVuEgp4-R+{dbtA3ra|dLu zK`SHcD=RAx{@w7(XtDuF5>QXJ6XRV`&1Ns9Gi&4ZSI6>rcc16D*M6<`37aH76sk_R zsEwNzF3z8{Mp zP_B4pmNnFh5c&#;8+qN`u+fLnFDCV%1M%!B{TbYbaawtEfJ!#(Cyq7{_?*#M&?3uaiN-L>QiRtLJ zR-Bo2Pmu;_gW#1%WU2_Ns7_}XWUDt$OpyhrrQjs(}z7B+M!udaX6 z99vtLJ63wPZbVqJC-B_0dhDi=NDM*uoo6ZUmTY&g7J!GMo>Rj>O4vQ$FLh7bTZDEA(jSqByr6#&`-p@xJ@}Cw4=>U){rj6vb#~Cn{ zMk{}-87f@87}gHS6x570?x&u+J{B8jGuOpS2rMeR{*p&~*w4`d!CRE{@1Mznz4Gzm zkpq*}GiDYesb7j*wLy}5Bh~rQknz-4)E4S%s7DLzD_RbKp>0oVF4O>ZXSck$&->CO04(#H5y~$CFtE4R2OtG1 z0=|U))4)22QG)>2)&ihG{7*n9>O-J$`C3)qyfy&FU5{rEmKj+C(4Y5H8BBBk)k%%2 zw`ONzzPq@A38}*4L-Kv^iIuMkZY>gL_3D|~N#+@|yvH+A-o!?pOTO^r^bNf$TVu6AQpDB5y3rb$vO3Ek+h$WX{!VoD z{I_dVM7>mr&99Bbx(0Z!y6vWalk6=b>k%2#o7J2QHTtBSm|xF}y42B=-x*d`QI~1Z zv`auYn5f6;EJhoZDt?q%&oA)t1_`Wzhp=>Vu~Az~e@4qZG$!N0{=#3y3EuYIBja3t zyye#T*9}ss|6Rt*KAma9Z1-J~+FPe>AjcM&wA2Z}zS|Zc}xfOp|+)}-gwa~Nek?}$SOh?Uu@L;>2!1Qbi8FBoctfV7}1pg literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/radio_checked_normal.png b/gooey/themes/dirtylarry/images/radio_checked_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..f64bf605dc80819141e45944eb2345c4c65a2637 GIT binary patch literal 3503 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 literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/radio_normal.png b/gooey/themes/dirtylarry/images/radio_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a82f06efd79988f3a79d8d7a5aa09082c5f5fba1 GIT binary patch literal 2958 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 pzwN$K literal 0 HcmV?d00001 diff --git a/gooey/themes/dirtylarry/images/radio_pressed.png b/gooey/themes/dirtylarry/images/radio_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..0fccea1b918301d2aa516485e4bedca24ba1b341 GIT binary patch literal 3604 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 WG9^jHwC{)iX~z2I=wiJaA^!&9Bvh~f literal 0 HcmV?d00001 diff --git a/example/templates/button.gui b/gooey/themes/kenneyblue/components/button.gui similarity index 93% rename from example/templates/button.gui rename to gooey/themes/kenneyblue/components/button.gui index 34edb18..551a0c0 100644 --- a/example/templates/button.gui +++ b/gooey/themes/kenneyblue/components/button.gui @@ -1,11 +1,11 @@ script: "" fonts { name: "example" - font: "/assets/example.font" + font: "/gooey/themes/kenneyblue/fonts/kenneyblue.font" } textures { name: "gooey" - texture: "/assets/gooey.atlas" + texture: "/gooey/themes/kenneyblue/images/kenneyblue.atlas" } background_color { x: 0.0 diff --git a/example/templates/checkbox.gui b/gooey/themes/kenneyblue/components/checkbox.gui similarity index 92% rename from example/templates/checkbox.gui rename to gooey/themes/kenneyblue/components/checkbox.gui index 95cd1f6..7aa7477 100644 --- a/example/templates/checkbox.gui +++ b/gooey/themes/kenneyblue/components/checkbox.gui @@ -1,11 +1,11 @@ script: "" fonts { name: "example" - font: "/assets/example.font" + font: "/gooey/themes/kenneyblue/fonts/kenneyblue.font" } textures { name: "gooey" - texture: "/assets/gooey.atlas" + texture: "/gooey/themes/kenneyblue/images/kenneyblue.atlas" } background_color { x: 0.0 @@ -69,7 +69,7 @@ nodes { } nodes { position { - x: 60.0 + x: 30.0 y: 0.0 z: 0.0 w: 1.0 @@ -105,7 +105,7 @@ nodes { id: "label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER + pivot: PIVOT_W outline { x: 1.0 y: 1.0 diff --git a/example/templates/input.gui b/gooey/themes/kenneyblue/components/input.gui similarity index 95% rename from example/templates/input.gui rename to gooey/themes/kenneyblue/components/input.gui index 20dce70..9288f51 100644 --- a/example/templates/input.gui +++ b/gooey/themes/kenneyblue/components/input.gui @@ -1,11 +1,11 @@ script: "" fonts { name: "example" - font: "/assets/example.font" + font: "/gooey/themes/kenneyblue/fonts/kenneyblue.font" } textures { name: "gooey" - texture: "/assets/gooey.atlas" + texture: "/gooey/themes/kenneyblue/images/kenneyblue.atlas" } background_color { x: 0.0 diff --git a/example/templates/listitem.gui b/gooey/themes/kenneyblue/components/listitem.gui similarity index 94% rename from example/templates/listitem.gui rename to gooey/themes/kenneyblue/components/listitem.gui index 2779338..300f69a 100644 --- a/example/templates/listitem.gui +++ b/gooey/themes/kenneyblue/components/listitem.gui @@ -1,11 +1,11 @@ script: "" fonts { name: "example" - font: "/assets/example.font" + font: "/gooey/themes/kenneyblue/fonts/kenneyblue.font" } textures { name: "gooey" - texture: "/assets/gooey.atlas" + texture: "/gooey/themes/kenneyblue/images/kenneyblue.atlas" } background_color { x: 0.0 diff --git a/example/templates/radiobutton.gui b/gooey/themes/kenneyblue/components/radiobutton.gui similarity index 92% rename from example/templates/radiobutton.gui rename to gooey/themes/kenneyblue/components/radiobutton.gui index ce1b6bd..3724dc1 100644 --- a/example/templates/radiobutton.gui +++ b/gooey/themes/kenneyblue/components/radiobutton.gui @@ -1,11 +1,11 @@ script: "" fonts { name: "example" - font: "/assets/example.font" + font: "/gooey/themes/kenneyblue/fonts/kenneyblue.font" } textures { name: "gooey" - texture: "/assets/gooey.atlas" + texture: "/gooey/themes/kenneyblue/images/kenneyblue.atlas" } background_color { x: 0.0 @@ -69,7 +69,7 @@ nodes { } nodes { position { - x: 60.0 + x: 30.0 y: 0.0 z: 0.0 w: 1.0 @@ -105,7 +105,7 @@ nodes { id: "label" xanchor: XANCHOR_NONE yanchor: YANCHOR_NONE - pivot: PIVOT_CENTER + pivot: PIVOT_W outline { x: 1.0 y: 1.0 diff --git a/assets/example.font b/gooey/themes/kenneyblue/fonts/kenneyblue.font similarity index 82% rename from assets/example.font rename to gooey/themes/kenneyblue/fonts/kenneyblue.font index 73cc36b..32c66f1 100644 --- a/assets/example.font +++ b/gooey/themes/kenneyblue/fonts/kenneyblue.font @@ -1,4 +1,4 @@ -font: "/builtins/fonts/vera_mo_bd.ttf" +font: "/gooey/themes/kenneyblue/fonts/kenvector_future.ttf" material: "/builtins/fonts/font-df.material" size: 15 antialias: 1 diff --git a/gooey/themes/kenneyblue/fonts/kenvector_future.ttf b/gooey/themes/kenneyblue/fonts/kenvector_future.ttf new file mode 100644 index 0000000000000000000000000000000000000000..39ebdfaa904e4b08df8791f4c99fa1e379c408da GIT binary patch literal 34136 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 PiOjzua{P-TkKXowY>-!K literal 0 HcmV?d00001 diff --git a/assets/images/blue_boxCheckmark.png b/gooey/themes/kenneyblue/images/blue_boxCheckmark.png similarity index 100% rename from assets/images/blue_boxCheckmark.png rename to gooey/themes/kenneyblue/images/blue_boxCheckmark.png diff --git a/assets/images/blue_boxCross.png b/gooey/themes/kenneyblue/images/blue_boxCross.png similarity index 100% rename from assets/images/blue_boxCross.png rename to gooey/themes/kenneyblue/images/blue_boxCross.png diff --git a/assets/images/blue_boxTick.png b/gooey/themes/kenneyblue/images/blue_boxTick.png similarity index 100% rename from assets/images/blue_boxTick.png rename to gooey/themes/kenneyblue/images/blue_boxTick.png diff --git a/assets/images/blue_button00.png b/gooey/themes/kenneyblue/images/blue_button00.png similarity index 100% rename from assets/images/blue_button00.png rename to gooey/themes/kenneyblue/images/blue_button00.png diff --git a/assets/images/blue_button01.png b/gooey/themes/kenneyblue/images/blue_button01.png similarity index 100% rename from assets/images/blue_button01.png rename to gooey/themes/kenneyblue/images/blue_button01.png diff --git a/assets/images/blue_button02.png b/gooey/themes/kenneyblue/images/blue_button02.png similarity index 100% rename from assets/images/blue_button02.png rename to gooey/themes/kenneyblue/images/blue_button02.png diff --git a/assets/images/blue_button03.png b/gooey/themes/kenneyblue/images/blue_button03.png similarity index 100% rename from assets/images/blue_button03.png rename to gooey/themes/kenneyblue/images/blue_button03.png diff --git a/assets/images/blue_button04.png b/gooey/themes/kenneyblue/images/blue_button04.png similarity index 100% rename from assets/images/blue_button04.png rename to gooey/themes/kenneyblue/images/blue_button04.png diff --git a/assets/images/blue_button05.png b/gooey/themes/kenneyblue/images/blue_button05.png similarity index 100% rename from assets/images/blue_button05.png rename to gooey/themes/kenneyblue/images/blue_button05.png diff --git a/assets/images/blue_button06.png b/gooey/themes/kenneyblue/images/blue_button06.png similarity index 100% rename from assets/images/blue_button06.png rename to gooey/themes/kenneyblue/images/blue_button06.png diff --git a/assets/images/blue_button07.png b/gooey/themes/kenneyblue/images/blue_button07.png similarity index 100% rename from assets/images/blue_button07.png rename to gooey/themes/kenneyblue/images/blue_button07.png diff --git a/assets/images/blue_button08.png b/gooey/themes/kenneyblue/images/blue_button08.png similarity index 100% rename from assets/images/blue_button08.png rename to gooey/themes/kenneyblue/images/blue_button08.png diff --git a/assets/images/blue_button09.png b/gooey/themes/kenneyblue/images/blue_button09.png similarity index 100% rename from assets/images/blue_button09.png rename to gooey/themes/kenneyblue/images/blue_button09.png diff --git a/assets/images/blue_button10.png b/gooey/themes/kenneyblue/images/blue_button10.png similarity index 100% rename from assets/images/blue_button10.png rename to gooey/themes/kenneyblue/images/blue_button10.png diff --git a/assets/images/blue_button11.png b/gooey/themes/kenneyblue/images/blue_button11.png similarity index 100% rename from assets/images/blue_button11.png rename to gooey/themes/kenneyblue/images/blue_button11.png diff --git a/assets/images/blue_button12.png b/gooey/themes/kenneyblue/images/blue_button12.png similarity index 100% rename from assets/images/blue_button12.png rename to gooey/themes/kenneyblue/images/blue_button12.png diff --git a/assets/images/blue_button13.png b/gooey/themes/kenneyblue/images/blue_button13.png similarity index 100% rename from assets/images/blue_button13.png rename to gooey/themes/kenneyblue/images/blue_button13.png diff --git a/assets/images/blue_checkmark.png b/gooey/themes/kenneyblue/images/blue_checkmark.png similarity index 100% rename from assets/images/blue_checkmark.png rename to gooey/themes/kenneyblue/images/blue_checkmark.png diff --git a/assets/images/blue_circle.png b/gooey/themes/kenneyblue/images/blue_circle.png similarity index 100% rename from assets/images/blue_circle.png rename to gooey/themes/kenneyblue/images/blue_circle.png diff --git a/assets/images/blue_cross.png b/gooey/themes/kenneyblue/images/blue_cross.png similarity index 100% rename from assets/images/blue_cross.png rename to gooey/themes/kenneyblue/images/blue_cross.png diff --git a/assets/images/blue_panel.png b/gooey/themes/kenneyblue/images/blue_panel.png similarity index 100% rename from assets/images/blue_panel.png rename to gooey/themes/kenneyblue/images/blue_panel.png diff --git a/assets/images/blue_sliderDown.png b/gooey/themes/kenneyblue/images/blue_sliderDown.png similarity index 100% rename from assets/images/blue_sliderDown.png rename to gooey/themes/kenneyblue/images/blue_sliderDown.png diff --git a/assets/images/blue_sliderLeft.png b/gooey/themes/kenneyblue/images/blue_sliderLeft.png similarity index 100% rename from assets/images/blue_sliderLeft.png rename to gooey/themes/kenneyblue/images/blue_sliderLeft.png diff --git a/assets/images/blue_sliderRight.png b/gooey/themes/kenneyblue/images/blue_sliderRight.png similarity index 100% rename from assets/images/blue_sliderRight.png rename to gooey/themes/kenneyblue/images/blue_sliderRight.png diff --git a/assets/images/blue_sliderUp.png b/gooey/themes/kenneyblue/images/blue_sliderUp.png similarity index 100% rename from assets/images/blue_sliderUp.png rename to gooey/themes/kenneyblue/images/blue_sliderUp.png diff --git a/assets/images/blue_tick.png b/gooey/themes/kenneyblue/images/blue_tick.png similarity index 100% rename from assets/images/blue_tick.png rename to gooey/themes/kenneyblue/images/blue_tick.png diff --git a/assets/images/dropdownBottom.png b/gooey/themes/kenneyblue/images/dropdownBottom.png similarity index 100% rename from assets/images/dropdownBottom.png rename to gooey/themes/kenneyblue/images/dropdownBottom.png diff --git a/assets/images/dropdownMid.png b/gooey/themes/kenneyblue/images/dropdownMid.png similarity index 100% rename from assets/images/dropdownMid.png rename to gooey/themes/kenneyblue/images/dropdownMid.png diff --git a/assets/images/dropdownTop.png b/gooey/themes/kenneyblue/images/dropdownTop.png similarity index 100% rename from assets/images/dropdownTop.png rename to gooey/themes/kenneyblue/images/dropdownTop.png diff --git a/assets/images/grey_box.png b/gooey/themes/kenneyblue/images/grey_box.png similarity index 100% rename from assets/images/grey_box.png rename to gooey/themes/kenneyblue/images/grey_box.png diff --git a/assets/images/grey_boxCheckmark.png b/gooey/themes/kenneyblue/images/grey_boxCheckmark.png similarity index 100% rename from assets/images/grey_boxCheckmark.png rename to gooey/themes/kenneyblue/images/grey_boxCheckmark.png diff --git a/assets/images/grey_boxCross.png b/gooey/themes/kenneyblue/images/grey_boxCross.png similarity index 100% rename from assets/images/grey_boxCross.png rename to gooey/themes/kenneyblue/images/grey_boxCross.png diff --git a/assets/images/grey_boxTick.png b/gooey/themes/kenneyblue/images/grey_boxTick.png similarity index 100% rename from assets/images/grey_boxTick.png rename to gooey/themes/kenneyblue/images/grey_boxTick.png diff --git a/assets/images/grey_button02.png b/gooey/themes/kenneyblue/images/grey_button02.png similarity index 100% rename from assets/images/grey_button02.png rename to gooey/themes/kenneyblue/images/grey_button02.png diff --git a/assets/images/grey_circle.png b/gooey/themes/kenneyblue/images/grey_circle.png similarity index 100% rename from assets/images/grey_circle.png rename to gooey/themes/kenneyblue/images/grey_circle.png diff --git a/gooey/themes/kenneyblue/images/kenneyblue.atlas b/gooey/themes/kenneyblue/images/kenneyblue.atlas new file mode 100644 index 0000000..eae48f1 --- /dev/null +++ b/gooey/themes/kenneyblue/images/kenneyblue.atlas @@ -0,0 +1,111 @@ +images { + image: "/gooey/themes/kenneyblue/images/blue_boxCheckmark.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_boxCross.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_boxTick.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button00.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button01.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button02.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button03.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button04.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button05.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button06.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button07.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button08.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button09.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button10.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button11.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button12.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_button13.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_checkmark.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_circle.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_cross.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_panel.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_sliderDown.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_sliderLeft.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_sliderRight.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_sliderUp.png" +} +images { + image: "/gooey/themes/kenneyblue/images/blue_tick.png" +} +images { + image: "/gooey/themes/kenneyblue/images/dropdownBottom.png" +} +images { + image: "/gooey/themes/kenneyblue/images/dropdownMid.png" +} +images { + image: "/gooey/themes/kenneyblue/images/dropdownTop.png" +} +images { + image: "/gooey/themes/kenneyblue/images/grey_box.png" +} +images { + image: "/gooey/themes/kenneyblue/images/grey_circle.png" +} +images { + image: "/gooey/themes/kenneyblue/images/grey_boxTick.png" +} +images { + image: "/gooey/themes/kenneyblue/images/grey_boxCheckmark.png" +} +images { + image: "/gooey/themes/kenneyblue/images/grey_boxCross.png" +} +images { + image: "/gooey/themes/kenneyblue/images/transparent1px.png" +} +images { + image: "/gooey/themes/kenneyblue/images/grey_button02.png" +} +margin: 0 +extrude_borders: 1 +inner_padding: 1 diff --git a/assets/images/transparent1px.png b/gooey/themes/kenneyblue/images/transparent1px.png similarity index 100% rename from assets/images/transparent1px.png rename to gooey/themes/kenneyblue/images/transparent1px.png diff --git a/example/example.gui_script b/gooey/themes/kenneyblue/kenneyblue.lua similarity index 57% rename from example/example.gui_script rename to gooey/themes/kenneyblue/kenneyblue.lua index 1110223..63fdf19 100644 --- a/example/example.gui_script +++ b/gooey/themes/kenneyblue/kenneyblue.lua @@ -1,5 +1,9 @@ local gooey = require "gooey.gooey" + +local M = {} + + local function shake(node, initial_scale) gui.cancel_animation(node, "scale.x") gui.cancel_animation(node, "scale.y") @@ -12,7 +16,14 @@ local function shake(node, initial_scale) end) end -local function update_button(button) + +function M.acquire_input() + gooey.acquire_input() +end + + +function M.button(node_id, action_id, action, fn) + local button = gooey.button(node_id .. "/bg", action_id, action, fn) if button.pressed_now or button.released_now then shake(button.node, vmath.vector3(1)) end @@ -21,9 +32,12 @@ local function update_button(button) else gui.play_flipbook(button.node, hash("blue_button04")) end + return button end -local function update_checkbox(checkbox) + +function M.checkbox(node_id, action_id, action, fn) + local checkbox = gooey.checkbox(node_id .. "/box", action_id, action, fn) if checkbox.pressed_now or checkbox.released_now then shake(checkbox.node, vmath.vector3(1)) end @@ -33,10 +47,12 @@ local function update_checkbox(checkbox) gui.play_flipbook(checkbox.node, hash("blue_boxCross")) else gui.play_flipbook(checkbox.node, hash("grey_box")) - end + end + return checkbox end -local function update_radio(radio) + +local function update_radiobutton(radio) if radio.pressed_now or radio.released_now then shake(radio.node, vmath.vector3(1)) end @@ -49,41 +65,35 @@ local function update_radio(radio) end end -local function update_list(list) - for i,item in pairs(list.items) do - local pos = gui.get_position(item) - if i == list.selected_item then - pos.x = 4 - gui.play_flipbook(item, hash("blue_button03")) - elseif i == list.pressed_item then - pos.x = 1 - gui.play_flipbook(item, hash("blue_button03")) - elseif i == list.over_item_now then - pos.x = 1 - gui.play_flipbook(item, hash("blue_button04")) - elseif i == list.out_item_now then - pos.x = 0 - gui.play_flipbook(item, hash("blue_button04")) - elseif i ~= list.over_item then - pos.x = 0 - gui.play_flipbook(item, hash("blue_button04")) - end - gui.set_position(item, pos) +function M.radiogroup(group_id, action_id, action, fn) + local radiobuttons = gooey.radiogroup(group_id, action_id, action, fn) + for _,radio in ipairs(radiobuttons) do + update_radiobutton(radio) end + return radiobuttons +end + +function M.radio(node_id, group_id, action_id, action, fn) + local radio = gooey.radio(node_id .. "/button", group_id, action_id, action, fn) + update_radiobutton(radio) + return radio end -local function update_input(input, empty_text, cursor_id, bg_id) + +function M.input(node_id, keyboard_type, action_id, action, empty_text) + local input = gooey.input(node_id .. "/text", keyboard_type, action_id, action) + if input.selected_now then - gui.play_flipbook(gui.get_node(bg_id), hash("blue_button05")) + gui.play_flipbook(gui.get_node(node_id .. "/bg"), hash("blue_button05")) elseif input.deselected_now then - gui.play_flipbook(gui.get_node(bg_id), hash("blue_button03")) + gui.play_flipbook(gui.get_node(node_id .. "/bg"), hash("blue_button03")) end - + if input.empty and not input.selected then gui.set_text(input.node, empty_text) end - local cursor = gui.get_node(cursor_id) + local cursor = gui.get_node(node_id .. "/cursor") if input.selected then gui.set_enabled(cursor, true) gui.set_position(cursor, vmath.vector3(4 + input.text_width, 0, 0)) @@ -94,50 +104,32 @@ local function update_input(input, empty_text, cursor_id, bg_id) gui.set_enabled(cursor, false) gui.cancel_animation(cursor, gui.PROP_COLOR) end + return input end -function init(self) - gooey.acquire_input() - self.list_ids = { - "listitem1/bg", "listitem2/bg", "listitem3/bg", "listitem4/bg", "listitem5/bg", - "listitem6/bg", "listitem7/bg", "listitem8/bg", "listitem9/bg", "listitem10/bg", - "listitem11/bg", "listitem12/bg" - } - update_input(gooey.input("input/text", gui.KEYBOARD_TYPE_DEFAULT, nil, { x=0, y=0 }), "EMPTY TEXT", "input/cursor", "input/bg") - msg.post("@render:", "clear_color", { color = vmath.vector4(0.1, 0.15, 0.25, 1.0) }) -end - -function on_input(self, action_id, action) - update_button(gooey.button("button/bg", action_id, action, function(button) - print("pressed button") - end)) - - update_checkbox(gooey.checkbox("checkbox/box", action_id, action, function(checkbox) - print("checked", checkbox.checked) - end)) - - local radio1 = gooey.radio("radio1/button", "GROUP1", action_id, action, function(radio) - print("selected 1", radio.selected) - end) - local radio2 = gooey.radio("radio2/button", "GROUP1", action_id, action, function(radio) - print("selected 2", radio.selected) - end) - local radio3 = gooey.radio("radio3/button", "GROUP1", action_id, action, function(radio) - print("selected 3", radio.selected) - end) - update_radio(radio1) - update_radio(radio2) - update_radio(radio3) - - update_list(gooey.list("listroot", self.list_ids, action_id, action, function(list) - print("selected list item", list.selected_item) - end)) - - update_input(gooey.input("input/text", gui.KEYBOARD_TYPE_DEFAULT, action_id, action), "EMPTY TEXT", "input/cursor", "input/bg") +function M.list(root_id, item_ids, action_id, action, fn) + local list = gooey.list(root_id, item_ids, action_id, action, fn) + for i,item in pairs(list.items) do + local pos = gui.get_position(item) + if i == list.selected_item then + pos.x = 4 + gui.play_flipbook(item, hash("blue_button03")) + elseif i == list.pressed_item then + pos.x = 1 + gui.play_flipbook(item, hash("blue_button03")) + elseif i == list.over_item_now then + pos.x = 1 + gui.play_flipbook(item, hash("blue_button04")) + elseif i == list.out_item_now then + pos.x = 0 + gui.play_flipbook(item, hash("blue_button04")) + elseif i ~= list.over_item then + pos.x = 0 + gui.play_flipbook(item, hash("blue_button04")) + end + gui.set_position(item, pos) + end end -function on_reload(self) - -- Add input-handling code here - -- Remove this function if not needed -end +return M \ No newline at end of file