diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2019-11-19 21:47:01 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2019-11-19 22:03:16 +0000 |
| commit | 687bd8a762994be432859331c6bf5b795be44c30 (patch) | |
| tree | c68d38bfedce0cf778358be1d8a6ddfbaf48b887 | |
| parent | add EX mode, script name display (diff) | |
| download | watch-cad-687bd8a762994be432859331c6bf5b795be44c30.tar.gz watch-cad-687bd8a762994be432859331c6bf5b795be44c30.zip | |
a touch of color
| -rw-r--r-- | api.moon | 33 | ||||
| -rw-r--r-- | examples/create_star.lua | 5 | ||||
| -rw-r--r-- | object.moon | 4 | ||||
| -rw-r--r-- | session.moon | 15 |
4 files changed, 42 insertions, 15 deletions
@@ -2,6 +2,13 @@ import vec2, bound2 from require 'cpml' import is_once, is_live, are_live, Once from require 'state' +import Object from require 'object' + +pushpop = (fn) -> + (...) -> + lg.push 'all' + with fn ... + lg.pop! random = point: -> @@ -39,14 +46,12 @@ draw = mx, my = (pos - hs)\unpack! Mx, My = (pos + hs)\unpack! - lg.setColor 1, 1, 1 lg.line mx, my, Mx, My lg.line mx, My, Mx, my hit.radius2 pos, hs\len2! line: (frm, to) -> - lg.setColor 1, 1, 1 lg.line frm.x, frm.y, to.x, to.y hit.line frm, to @@ -62,14 +67,12 @@ draw = rect: (min, max) -> x, y = min\unpack! w, h = (max - min)\unpack! - lg.setColor 1, 1, 1 lg.rectangle 'line', x, y, w, h hit.rect min, max circle: (center, r) -> x, y = center\unpack! - lg.setColor 1, 1, 1 lg.circle 'line', x, y, r hit.radius2 center, r*r @@ -211,9 +214,27 @@ input = table.remove selection, to_remove[i] op = - move: (obj, to) -> + move: pushpop (obj, to) -> draw.arrow obj.pos, to - obj\draw! + + lg.setColor .8, .8, 0 + copy = obj\copy! + copy.pos = to + copy\draw! + + if COMMIT + obj.pos = to + + add: pushpop (pos, size) -> + tmp = Object pos, size + + lg.setColor 0, .8, 0 + tmp\draw! + + if COMMIT + table.insert SESSION.objects, tmp + + tmp { :hit diff --git a/examples/create_star.lua b/examples/create_star.lua index 078f5df..197180c 100644 --- a/examples/create_star.lua +++ b/examples/create_star.lua @@ -15,12 +15,9 @@ function draw_star(S) local r = (i % 2 == 0) and inner.radius or outer.radius local pos = inner.center + vec2.from_cartesian(r, step * i) - draw.cross(pos) + op.add(pos, vec2(20, 20)) draw.line(pos, lag) - -- obj = Object("object_"..i, pos, vec2(20, 20)) - -- op.add(obj) - lag = pos end end diff --git a/object.moon b/object.moon index a5bbd88..18b546f 100644 --- a/object.moon +++ b/object.moon @@ -1,9 +1,11 @@ import vec2 from require 'cpml' -import random, hit, draw from require 'api' +-- import random, hit, draw from require 'api' class Object new: (@pos=random.point!, @size=random.size!) => + copy: => Object @pos, @size + minmax: => @pos - @size/2, @pos + @size/2 diff --git a/session.moon b/session.moon index da22d80..91fc60f 100644 --- a/session.moon +++ b/session.moon @@ -70,9 +70,6 @@ class Session FONTSIZE = 20 new: (scriptfile) => @objects = {} - for i=1,4 - print - -- table.insert @objects, Object nil, random.size!/8 if scriptfile @script = Script scriptfile @@ -85,9 +82,11 @@ class Session when 'quit' love.event.quit! when 'run' - @script = Script command\match '^run%s+(.+)' + arg = command\match '^run%s+(.+)' + @script = arg and Script arg frame: => + lg.setColor 1, 1, 1 for obj in *@objects obj\draw! @@ -98,12 +97,19 @@ class Session lg.setFont @font if @script + lg.setColor .5, .5, .5 + depth = lg.getStackDepth! + @script\reload_and_run! if INPUT\key_down 'space' @script\commit! STATE\reset! + + while lg.getStackDepth! > depth + lg.pop! + lg.setColor 1, 1, 1 lg.print "script: #{@script.file}", 10, 10 if (INPUT\key_down ':') or (INPUT\key_down ';') and INPUT\key_held 'lshift' @@ -111,6 +117,7 @@ class Session @ex = true if @ex + lg.setColor 1, 1, 1 lg.print ":#{INPUT.text}", 10, h - 10 - FONTSIZE apply = INPUT\key_down 'return' |
