summaryrefslogtreecommitdiff
path: root/src/mansion.fnl
diff options
context:
space:
mode:
authorubq323 <ubq323@ubq323.website>2022-04-05 04:14:51 +0100
committerubq323 <ubq323@ubq323.website>2022-04-05 04:14:51 +0100
commit4ec2e421bd05fb178c5bf8317606b4fadd622b54 (patch)
tree192d4e36bf73921407831a2283939c69531b1779 /src/mansion.fnl
parent14e94c7da39fe99dcf3e3f34ed8f6d29ecac4983 (diff)
convert mansion to fennel
Diffstat (limited to 'src/mansion.fnl')
-rw-r--r--src/mansion.fnl86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/mansion.fnl b/src/mansion.fnl
new file mode 100644
index 0000000..067c679
--- /dev/null
+++ b/src/mansion.fnl
@@ -0,0 +1,86 @@
+(local bump (require :bump))
+(local player (require :player))
+
+(local world (bump.newWorld))
+
+(macro inpush [...]
+ `(do
+ (love.graphics.push)
+ (do ,...)
+ (love.graphics.pop)))
+
+
+
+(local draw_thing (coroutine.wrap
+ (fn draw_thing []
+ (var t 0)
+ (var angry false)
+
+ (local tri-a 100)
+ (local tri-h (* tri-a (/ (math.sqrt 3) 2)))
+ (local ell-l 20)
+ (local ell-r 30)
+
+ (while true
+ (let [theta (/ t 10)
+ c (math.cos theta)
+ s (math.sin theta)]
+ (let [dist (math.sqrt (+ (^ (- 420 player.x) 2)
+ (^ (- 240 player.y) 2)))]
+ (if (and (< dist 100) (not angry))
+ (set angry true)
+ (and (> dist 200) angry)
+ (set angry false)))
+ (inpush
+ (love.graphics.translate 420 240)
+
+ (inpush
+ (love.graphics.setLineWidth 10)
+ (love.graphics.setColor (if angry [1 0 0 0.8] [0.7 0 0.5 0.8]))
+ (love.graphics.rotate (/ (- theta) 1.618))
+ (love.graphics.polygon :line (- (/ tri-a 2)) (- (/ tri-h 3))
+ (/ tri-a 2) (- (/ tri-h 3))
+ 0 (* 2 (/ tri-h 3))))
+
+ (love.graphics.setLineWidth 7)
+ (love.graphics.setColor 0.8 0.8 0 0.7)
+ (love.graphics.ellipse :line (* ell-l c) (* ell-l s) ell-r (* 2 ell-r))
+ (love.graphics.setColor 0 0.8 0.8 0.7)
+ (love.graphics.ellipse :line (- (* ell-l c)) (- (* ell-l s)) ell-r (* 2 ell-r)))
+
+ (set t (+ t (if angry 1.8 1)))
+ (coroutine.yield))))))
+
+(var font nil)
+(var title nil)
+(var jerma nil)
+(fn theload []
+ (set font (love.graphics.newFont :APL333.ttf 72))
+ (set title (love.graphics.newText font :mansion))
+ (set jerma (love.graphics.newImage :jerma.jpg))
+ (world:add :jerma 30 400 400 50))
+
+(fn draw_jerma []
+ (love.graphics.setColor 1 1 1 1)
+ (let [sx (/ 400 (jerma:getWidth))
+ sy (/ 50 (jerma:getHeight))]
+ (love.graphics.draw jerma 30 400 0 sx sy)))
+
+(fn draw []
+ (love.graphics.setColor 0.8 0.8 0.8)
+ (love.graphics.setLineWidth 10)
+ (love.graphics.rectangle :line 30 80 580 370)
+ (love.graphics.draw title (- 610 (title:getWidth)) -10)
+
+ (draw_thing)
+ (draw_jerma))
+
+{ : world
+ : draw
+ :load theload }
+
+
+
+
+
+