rainbow friends

This commit is contained in:
Ronja 2020-08-30 10:31:57 +02:00
parent 42ecec5e7f
commit 853d153fb6
7 changed files with 48 additions and 28 deletions

View file

@ -27,7 +27,7 @@ class Human {
//in the world and respond to them here. //in the world and respond to them here.
class HumanSystem is ModifierSystem { class HumanSystem is ModifierSystem {
player_start{[26, 90]} player_start{[26, 89]}
player_size{[10, 12]} player_size{[10, 12]}
construct new() { construct new() {
@ -59,7 +59,7 @@ class HumanSystem is ModifierSystem {
//called usually once every frame. //called usually once every frame.
//called when the world that this modifier lives in, is ticked //called when the world that this modifier lives in, is ticked
each {|entity, data| each {|entity, data|
System.print("%(Transform.get_pos(entity))")
} }
} //tick } //tick
@ -73,7 +73,7 @@ class HumanSystem is ModifierSystem {
Sprite.destroy(entity) Sprite.destroy(entity)
return return
} }
var pos = start var pos = Vector.new(start)
pos.x = pos.x + size.x * i pos.x = pos.x + size.x * i
if(!Transform.has(entity)){ if(!Transform.has(entity)){
Transform.create(entity) Transform.create(entity)

View file

@ -11,13 +11,12 @@ import "outline/app" for App
import "outline/Renderer" for Renderer import "outline/Renderer" for Renderer
import "blocks/ui" for Ui import "blocks/ui" for Ui
import "blocks/debug" for DrawDebug, Holder import "blocks/debug" for DrawDebug, Holder
import "globals" for Globals import "globals" for Globals, RandomInst
import "math/vector" for Vector import "math/vector" for Vector
import "math/rect" for AABB import "math/rect" for AABB
import "math/util" for Util import "math/util" for Util
import "blocks/tooltip" for Tooltip import "blocks/tooltip" for Tooltip
import "blocks/human/human" for Human import "blocks/human/human" for Human
import "random" for Random
class game is Game { class game is Game {
construct ready() { construct ready() {
@ -39,9 +38,9 @@ class game is Game {
tick(delta) { tick(delta) {
var mouse_pos = Vector.new(Input.mouse_x(), Input.mouse_y()) var mouse_pos = Vector.new(Input.mouse_x(), Input.mouse_y())
var game_mouse = Globals["Renderer"].game_mouse(mouse_pos) var game_mouse = [0, 0]//Globals["Renderer"].game_mouse(mouse_pos)
Globals["GameMouse"] = Camera.screen_point_to_world(app.camera, game_mouse.x, game_mouse.y) Globals["GameMouse"] = Camera.screen_point_to_world(app.camera, game_mouse.x, game_mouse.y)
var ui_mouse = Globals["Renderer"].ui_mouse(mouse_pos) var ui_mouse = [0, 0]//Globals["Renderer"].ui_mouse(mouse_pos)
Globals["UiMouse"] = Camera.screen_point_to_world(app.ui_camera, ui_mouse.x, ui_mouse.y) Globals["UiMouse"] = Camera.screen_point_to_world(app.ui_camera, ui_mouse.x, ui_mouse.y)
if(Input.key_state_released(Key.escape)) { if(Input.key_state_released(Key.escape)) {
@ -58,6 +57,7 @@ class game is Game {
_tooltip.tick() _tooltip.tick()
app.tick(delta) app.tick(delta)
} //tick } //tick
destroy() { destroy() {
@ -79,15 +79,15 @@ class game is Game {
create_human() create_human()
create_human() create_human()
create_human()
create_human()
} }
create_human(){ create_human(){
var human = Entity.create(app.world, "human") var human = Entity.create(app.world, "human")
var humanMat = Util.material_from_image_path("assets/wip/Human") var humanMat = Util.material_from_image_path("assets/wip/Human")
Human.create(human) Human.create(human)
System.print(Util.hsv(Random.new().float(), 1, 1)) Human.set_color(human, Util.hsv(RandomInst.float(), 0.5, 1))
//var rand = Random.new().float()
//Human.set_color(human, Util.hsv(rand, 1, 1))
} }
app { _app } app { _app }

View file

@ -1,3 +1,4 @@
import "random" for Random
var RandomInst = Random.new()
var Globals = {} var Globals = {}

View file

@ -1,30 +1,49 @@
import "math/vector" for Vector import "math/vector" for Vector
import "luxe: math" for Math import "luxe: math" for Math
import "math/repNum" for RepNum import "math/repVal" for RepVal
import "math/Util" for Util import "math/Util" for Util
class M{ class M{
static inv_lerp(from, to, inter){ static inv_lerp(from, to, value){
return (inter - from) / (to - from) //if the range are numbers, we assume the interpolation value is too
if(from is Num && to is Num) return (value - from) / (to - from)
//if only one of the range qualifiers is a sequence, we make the other one a endless sequence of itself
//(will do a union to take the shortest length anyways)
if(from is Sequence != to is Sequence) {
if(from is Sequence){
to = RepVal.new(to)
} else {
from = RepVal.new(from)
}
}
//if the interpolation value is a number, make it infinite
if(value is Num) value = RepVal.new(value)
var result = []
Util.for_all([from, to, value]) { |v|
result.add(lerp(v[0], v[1], v[2]))
}
return result
} }
static lerp(from, to, value){ static lerp(from, to, value){
//if the range are numbers, we assume the interpolation value is too
if(from is Num && to is Num) return from + (to - from) * value if(from is Num && to is Num) return from + (to - from) * value
//if only one of the range qualifiers is a sequence, we make the other one a endless sequence of itself
//(will do a union to take the shortest length anyways)
if(from is Sequence != to is Sequence) { if(from is Sequence != to is Sequence) {
if(from is Sequence){ if(from is Sequence){
to = RepNum.new(to, from.count) to = RepVal.new(to)
} else { } else {
from = RepNum.new(from, to.count) from = RepVal.new(from)
} }
} }
if(value is Num) value = RepNum.new(value) //if the interpolation value is a number, make it infinite
if(value is Num) value = RepVal.new(value)
System.print("%(from.toList) %(to.toList)")
var result = [] var result = []
Util.for_all([from, to, value]) { |from, to, value| Util.for_all([from, to, value]) { |v|
System.print(from) result.add(lerp(v[0], v[1], v[2]))
result.add(lerp(from, to, value))
} }
return result return result
} }
@ -47,8 +66,8 @@ class M{
} }
if(min is Sequence && max is Sequence){ if(min is Sequence && max is Sequence){
var result = [] var result = []
Util.for_all([value, min, max]) { |value, min, max| Util.for_all([value, min, max]) { |v|
result.add(clamp(value, min, max)) result.add(clamp(v[0], v[1], v[2]))
} }
return result return result
} }

View file

@ -1,5 +1,5 @@
class RepNum is Sequence{ class RepVal is Sequence{
static new(value){ static new(value){
return new(value, -1) return new(value, -1)
} }

View file

@ -27,7 +27,7 @@ class Util{
var iterators = List.filled(count, null) var iterators = List.filled(count, null)
counter.each{|i| iterators[i] = sequences[i].iterate(iterators[i])} counter.each{|i| iterators[i] = sequences[i].iterate(iterators[i])}
while(iterators.all{|iter| iter}){ while(iterators.all{|iter| iter}){
var values = (0...count).map{|i| sequences[i].iteratorValue(iterators[i])} var values = (0...count).map{|i| sequences[i].iteratorValue(iterators[i])}.toList
fn.call(values) fn.call(values)
counter.each{|i| iterators[i] = sequences[i].iterate(iterators[i])} counter.each{|i| iterators[i] = sequences[i].iterate(iterators[i])}
} }
@ -48,6 +48,6 @@ class Util{
//and value //and value
col = col.map{|comp| comp * v} col = col.map{|comp| comp * v}
return col.toList + [1] //poor womans add return col.toList + [1]
} }
} }

View file

@ -65,7 +65,7 @@ class Vector is Sequence{
iterate(iter){ iterate(iter){
if(!iter) return 0 if(!iter) return 0
if(iter > 1) return null if(iter > 1) return false
return iter + 1 return iter + 1
} }