Compare commits

...

3 commits

Author SHA1 Message Date
Ronja
3aab658b1e init resource number with correct amount 2020-10-26 13:52:28 +01:00
Ronja
a5bf54f0d1 bunch of minor tweaks and fixes 2020-10-25 22:20:01 +01:00
Ronja
09419908cf upgrade version 2020-10-25 22:19:21 +01:00
10 changed files with 31 additions and 11 deletions

View file

@ -7,7 +7,7 @@ import "globals" for Globals
import "math/vector" for Vector import "math/vector" for Vector
class Tooltip{ class Tooltip{
depth{100} depth{127}
color{[1, 1, 1, 1]} color{[1, 1, 1, 1]}
background{[0, 0, 0, 1]} background{[0, 0, 0, 1]}
@ -25,6 +25,7 @@ class Tooltip{
_shadows = [] _shadows = []
for(i in offsets){ for(i in offsets){
var shadow = Entity.create(app.ui) var shadow = Entity.create(app.ui)
var mat = Material.create("shaders/pixel_text")
Text.create(shadow, mat, 8, "assets/fonts/BabyBlocks", background) Text.create(shadow, mat, 8, "assets/fonts/BabyBlocks", background)
Transform.create(shadow) Transform.create(shadow)
Transform.set_snap(shadow, 1, 1, 0) Transform.set_snap(shadow, 1, 1, 0)
@ -51,7 +52,7 @@ class Tooltip{
var offsets = shadowOffsets var offsets = shadowOffsets
for(i in 0...offsets.count){ 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)
} }
} }
} }

View file

@ -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 "blocks/ui/number_field" for NumberField
import "math/math" for M import "math/math" for M
import "math/util" for Util import "math/util" for Util
import "math/event" for MultiListenerToken
import "blocks/human/human" for Human import "blocks/human/human" for Human
class UiAdventure{ class UiAdventure{
@ -296,12 +297,14 @@ class UiAdventure{
var x_image = Assets.image("assets/wip/8Cross") var x_image = Assets.image("assets/wip/8Cross")
_itemListItems = [] _itemListItems = []
_itemEvents = MultiListenerToken.new()
adventure.on_change(true) {|adventure| adventure.on_change(true) {|adventure|
//cleanup //cleanup
_itemListItems.each{|item| _itemListItems.each{|item|
Control.destroy(item) Control.destroy(item)
} }
_itemListItems.clear() _itemListItems.clear()
_itemEvents.discard()
if(!adventure) return if(!adventure) return
@ -324,6 +327,7 @@ class UiAdventure{
UILayout.set_margin(_ent, name, 2, 1, 0, 1) UILayout.set_margin(_ent, name, 2, 1, 0, 1)
var amount = NumberField.create(_ent) var amount = NumberField.create(_ent)
NumberField.set_value(amount, adventure.resources.get(resource["name"]))
UILayout.set_margin(_ent, amount, 0, 1, 2, 1) UILayout.set_margin(_ent, amount, 0, 1, 2, 1)
Control.child_add(item, amount) Control.child_add(item, amount)
//change resource data //change resource data
@ -334,10 +338,10 @@ class UiAdventure{
} }
} }
//change ui on resource data change //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"])) NumberField.set_value(amount, Math.clamp(value.get(resource["name"]), 0, resource["amount"]))
} }
_itemEvents.add(token)
_itemListItems.add(item) _itemListItems.add(item)
} }
UILayout.commit(_ent) UILayout.commit(_ent)

View file

@ -36,18 +36,23 @@ class UiCompass{
Control.set_process(compass){|control, state, event, x,y,w,h| Control.set_process(compass){|control, state, event, x,y,w,h|
if(event.control != control) return if(event.control != control) return
System.print("event: %(event) - currently captured: %(UI.get_captured(ent))")
if(event.type == UIEvent.press){ if(event.type == UIEvent.press){
var relative_pos = AABB.new(x, y, w, h).relative_pos([event.x, event.y]) 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 var inside = M.length(relative_pos.map{|comp| comp - 0.5}) < 0.5
if(inside) { if(inside) {
state["pressed"] = true state["pressed"] = true
UI.capture(control) UI.capture(control)
System.print("CAPTURE COMPASS")
} }
} else if(event.type == UIEvent.release){ }
if(event.type == UIEvent.release){
state["pressed"] = false state["pressed"] = false
UI.uncapture(control) 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 center = [x + w/2, y + h/2]
var diff = [event.x - center.x, event.y - center.y] 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° 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°

View file

@ -65,7 +65,7 @@ class UiScrollBox{
if(event.type == UIEvent.move && Control.get_state_data(childContainer)){ if(event.type == UIEvent.move && Control.get_state_data(childContainer)){
var state = Control.get_state_data(box) var state = Control.get_state_data(box)
var scrollPos = state["position"] var scrollPos = state["position"]
scrollPos = scrollPos + event.y_rel + 128 scrollPos = scrollPos + event.y_rel / 5
set_position(box, scrollPos) set_position(box, scrollPos)
} }
} }

View file

@ -77,6 +77,11 @@ class MultiListenerToken{
events{_events} events{_events}
indices{_indices} indices{_indices}
construct new(){
_events = []
_indices = []
}
construct new(tokens){ construct new(tokens){
_events = [] _events = []
_indices = [] _indices = []
@ -92,5 +97,7 @@ class MultiListenerToken{
Util.for_all([events, indices]) {|event, index| Util.for_all([events, indices]) {|event, index|
event.unlisten(index) event.unlisten(index)
} }
events.clear()
indices.clear()
} }
} }

View file

@ -48,8 +48,8 @@ class App {
} //new } //new
update_cam(){ update_cam(){
Camera.ortho(_camera, 0, 128, 128, 0, -2000, 2000) Camera.ortho(_camera, 0, 128, 128, 0, -128, 128)
Camera.ortho(_ui_camera, 0, Globals["Renderer"].height, Globals["Renderer"].width, 0, -2000, 2000) Camera.ortho(_ui_camera, 0, Globals["Renderer"].height, Globals["Renderer"].width, 0, -128, 128)
} }
destroy() { destroy() {

View file

@ -115,6 +115,7 @@ class Renderer {
game_render_path(ctx) { game_render_path(ctx) {
var layer = RenderLayerDesc.new() var layer = RenderLayerDesc.new()
layer.sort = SortType.front_to_back
layer.dest.color[0].render_target = target 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].clear_color = ctx.get("clear_color", [1,1,1,1])
layer.dest.color[0].load_action = LoadAction.clear layer.dest.color[0].load_action = LoadAction.clear
@ -127,6 +128,7 @@ class Renderer {
ui_render_path(ctx) { ui_render_path(ctx) {
var layer = RenderLayerDesc.new() var layer = RenderLayerDesc.new()
layer.sort = SortType.sort_by_z_reverse
layer.dest.color[0].render_target = target layer.dest.color[0].render_target = target
layer.dest.color[0].load_action = LoadAction.dont_care layer.dest.color[0].load_action = LoadAction.dont_care
layer.dest.depth.load_action = LoadAction.clear layer.dest.depth.load_action = LoadAction.clear

View file

@ -5,6 +5,7 @@ engine = {
height = 768 height = 768
resizable = false resizable = false
fullscreen = false fullscreen = false
title = "Cabin Game"
} }
} }

View file

@ -5,7 +5,7 @@ class Project is Entry {
construct entry(target) { construct entry(target) {
name = "Cabin Game" name = "Cabin Game"
version = "0.0.0" version = "0.1"
renderer = "outline/renderer" renderer = "outline/renderer"
settings = "outline/settings" settings = "outline/settings"

View file

@ -1,3 +1,3 @@
modules = { modules = {
luxe = "2020.3.0" luxe = "2020.3.2"
} //modules } //modules