aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2019-11-19 21:47:01 +0000
committers-ol <s-ol@users.noreply.github.com>2019-11-19 22:03:16 +0000
commit687bd8a762994be432859331c6bf5b795be44c30 (patch)
treec68d38bfedce0cf778358be1d8a6ddfbaf48b887
parentadd EX mode, script name display (diff)
downloadwatch-cad-687bd8a762994be432859331c6bf5b795be44c30.tar.gz
watch-cad-687bd8a762994be432859331c6bf5b795be44c30.zip
a touch of color
-rw-r--r--api.moon33
-rw-r--r--examples/create_star.lua5
-rw-r--r--object.moon4
-rw-r--r--session.moon15
4 files changed, 42 insertions, 15 deletions
diff --git a/api.moon b/api.moon
index 62a1b16..7fdd0bf 100644
--- a/api.moon
+++ b/api.moon
@@ -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'