From a5bf54f0d1527582d870ea0d9f1dbfb803a9e442 Mon Sep 17 00:00:00 2001 From: Ronja Date: Sun, 25 Oct 2020 22:20:01 +0100 Subject: [PATCH] bunch of minor tweaks and fixes --- Luxe/blocks/tooltip.wren | 5 +++-- Luxe/blocks/ui/adventure.wren | 7 +++++-- Luxe/blocks/ui/compass.wren | 9 +++++++-- Luxe/math/event.wren | 7 +++++++ Luxe/outline/app.wren | 4 ++-- Luxe/outline/renderer.wren | 2 ++ Luxe/outline/settings.settings.lx | 1 + Luxe/project.luxe | 2 +- 8 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Luxe/blocks/tooltip.wren b/Luxe/blocks/tooltip.wren index bb1e8fe..a21d31f 100644 --- a/Luxe/blocks/tooltip.wren +++ b/Luxe/blocks/tooltip.wren @@ -7,7 +7,7 @@ import "globals" for Globals import "math/vector" for Vector class Tooltip{ - depth{100} + depth{127} color{[1, 1, 1, 1]} background{[0, 0, 0, 1]} @@ -25,6 +25,7 @@ class Tooltip{ _shadows = [] for(i in offsets){ var shadow = Entity.create(app.ui) + var mat = Material.create("shaders/pixel_text") Text.create(shadow, mat, 8, "assets/fonts/BabyBlocks", background) Transform.create(shadow) Transform.set_snap(shadow, 1, 1, 0) @@ -51,7 +52,7 @@ class Tooltip{ var offsets = shadowOffsets for(i in 0...offsets.count){ - Transform.set_pos(_shadows[i], pos.x+offsets[i].x, pos.y+offsets[i].y, depth-5) + Transform.set_pos(_shadows[i], pos.x+offsets[i].x, pos.y+offsets[i].y, depth-1) } } } diff --git a/Luxe/blocks/ui/adventure.wren b/Luxe/blocks/ui/adventure.wren index c048254..05f4cc1 100644 --- a/Luxe/blocks/ui/adventure.wren +++ b/Luxe/blocks/ui/adventure.wren @@ -25,6 +25,7 @@ import "blocks/ui/info" for UiInfo //this is a cyclic dependency waiting to happ import "blocks/ui/number_field" for NumberField import "math/math" for M import "math/util" for Util +import "math/event" for MultiListenerToken import "blocks/human/human" for Human class UiAdventure{ @@ -296,12 +297,14 @@ class UiAdventure{ var x_image = Assets.image("assets/wip/8Cross") _itemListItems = [] + _itemEvents = MultiListenerToken.new() adventure.on_change(true) {|adventure| //cleanup _itemListItems.each{|item| Control.destroy(item) } _itemListItems.clear() + _itemEvents.discard() if(!adventure) return @@ -334,10 +337,10 @@ class UiAdventure{ } } //change ui on resource data change - adventure.resources.on_change{|value| + var token = adventure.resources.on_change{|value| NumberField.set_value(amount, Math.clamp(value.get(resource["name"]), 0, resource["amount"])) } - + _itemEvents.add(token) _itemListItems.add(item) } UILayout.commit(_ent) diff --git a/Luxe/blocks/ui/compass.wren b/Luxe/blocks/ui/compass.wren index 38a0074..7c2f021 100644 --- a/Luxe/blocks/ui/compass.wren +++ b/Luxe/blocks/ui/compass.wren @@ -36,18 +36,23 @@ class UiCompass{ Control.set_process(compass){|control, state, event, x,y,w,h| if(event.control != control) return + System.print("event: %(event) - currently captured: %(UI.get_captured(ent))") + if(event.type == UIEvent.press){ var relative_pos = AABB.new(x, y, w, h).relative_pos([event.x, event.y]) var inside = M.length(relative_pos.map{|comp| comp - 0.5}) < 0.5 if(inside) { state["pressed"] = true UI.capture(control) + System.print("CAPTURE COMPASS") } - } else if(event.type == UIEvent.release){ + } + if(event.type == UIEvent.release){ state["pressed"] = false UI.uncapture(control) + System.print("UNCAPTURE COMPASS") } - if((event.type == UIEvent.move || event.type == event.type == UIEvent.press) && state["pressed"]){ + if((event.type == UIEvent.move || event.type == UIEvent.press) && state["pressed"]){ var center = [x + w/2, y + h/2] var diff = [event.x - center.x, event.y - center.y] var angle = Math.atan2(-diff.y, diff.x) - Num.tau / 4 //flip y because ui coordinates are different; shift by 1/4 circle constant to make up 0° diff --git a/Luxe/math/event.wren b/Luxe/math/event.wren index e6ffef2..eed82ef 100644 --- a/Luxe/math/event.wren +++ b/Luxe/math/event.wren @@ -77,6 +77,11 @@ class MultiListenerToken{ events{_events} indices{_indices} + construct new(){ + _events = [] + _indices = [] + } + construct new(tokens){ _events = [] _indices = [] @@ -92,5 +97,7 @@ class MultiListenerToken{ Util.for_all([events, indices]) {|event, index| event.unlisten(index) } + events.clear() + indices.clear() } } \ No newline at end of file diff --git a/Luxe/outline/app.wren b/Luxe/outline/app.wren index 111dd24..35b71fa 100644 --- a/Luxe/outline/app.wren +++ b/Luxe/outline/app.wren @@ -48,8 +48,8 @@ class App { } //new update_cam(){ - Camera.ortho(_camera, 0, 128, 128, 0, -2000, 2000) - Camera.ortho(_ui_camera, 0, Globals["Renderer"].height, Globals["Renderer"].width, 0, -2000, 2000) + Camera.ortho(_camera, 0, 128, 128, 0, -128, 128) + Camera.ortho(_ui_camera, 0, Globals["Renderer"].height, Globals["Renderer"].width, 0, -128, 128) } destroy() { diff --git a/Luxe/outline/renderer.wren b/Luxe/outline/renderer.wren index 4dc3d02..55bf8df 100644 --- a/Luxe/outline/renderer.wren +++ b/Luxe/outline/renderer.wren @@ -115,6 +115,7 @@ class Renderer { game_render_path(ctx) { var layer = RenderLayerDesc.new() + layer.sort = SortType.front_to_back layer.dest.color[0].render_target = target layer.dest.color[0].clear_color = ctx.get("clear_color", [1,1,1,1]) layer.dest.color[0].load_action = LoadAction.clear @@ -127,6 +128,7 @@ class Renderer { ui_render_path(ctx) { var layer = RenderLayerDesc.new() + layer.sort = SortType.sort_by_z_reverse layer.dest.color[0].render_target = target layer.dest.color[0].load_action = LoadAction.dont_care layer.dest.depth.load_action = LoadAction.clear diff --git a/Luxe/outline/settings.settings.lx b/Luxe/outline/settings.settings.lx index ac44b4e..064bd76 100644 --- a/Luxe/outline/settings.settings.lx +++ b/Luxe/outline/settings.settings.lx @@ -5,6 +5,7 @@ engine = { height = 768 resizable = false fullscreen = false + title = "Cabin Game" } } diff --git a/Luxe/project.luxe b/Luxe/project.luxe index b343f2b..9073e37 100644 --- a/Luxe/project.luxe +++ b/Luxe/project.luxe @@ -5,7 +5,7 @@ class Project is Entry { construct entry(target) { name = "Cabin Game" - version = "0.0.0" + version = "0.1" renderer = "outline/renderer" settings = "outline/settings"