summaryrefslogtreecommitdiff
path: root/src/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.lua')
-rw-r--r--src/main.lua132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/main.lua b/src/main.lua
new file mode 100644
index 0000000..20c532a
--- /dev/null
+++ b/src/main.lua
@@ -0,0 +1,132 @@
+local plr={
+ x=250,
+ y=250,
+}
+
+local bump = require "bump"
+
+
+local PL_SPEED = 170
+local PL_SPRINT_SPEED = 280
+
+local font, title
+local world
+local jerma
+function love.load()
+ font = love.graphics.newFont("APL333.ttf",72)
+ title = love.graphics.newText(font, "room A9")
+ jerma = love.graphics.newImage("jerma.jpg")
+ world = bump.newWorld()
+ world:add("player", plr.x, plr.y, 10,10)
+ world:add("jerma", 30,400, 400, 50)
+end
+
+local function player_movement(dt)
+ local speed =
+ (love.keyboard.isScancodeDown("lshift","rshift") and PL_SPRINT_SPEED or PL_SPEED)
+ local vx = 0
+ local vy = 0
+
+ if love.keyboard.isScancodeDown('w','up') then vy = vy - 1 end
+ if love.keyboard.isScancodeDown('s','down') then vy = vy + 1 end
+ if love.keyboard.isScancodeDown('a','left') then vx = vx - 1 end
+ if love.keyboard.isScancodeDown('d','right') then vx = vx + 1 end
+
+ local sf = math.sqrt(vx*vx+vy*vy)
+ if sf == 0 then return end
+ vx = vx / sf
+ vy = vy / sf
+
+ local tx = plr.x + vx * dt * speed
+ local ty = plr.y + vy * dt * speed
+
+ local ax, ay = world:move("player",tx,ty)
+ plr.x = ax
+ plr.y = ay
+
+end
+
+local function draw_player()
+ love.graphics.setColor(0.91,0.62,0)
+ love.graphics.rectangle("fill", plr.x,plr.y, 10,10)
+end
+
+local function draw_room()
+ 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)
+end
+
+local draw_thing = coroutine.wrap(function()
+ local t = 0
+ local angry = false
+
+ local tri_a = 100
+ local tri_h = (math.sqrt(3)/2)*tri_a
+
+ local ell_l = 20
+ local ell_r = 30
+
+ while true do
+ local theta = t/10
+ local c = math.cos(theta)
+ local s = math.sin(theta)
+
+ local dist = math.sqrt((420-plr.x)^2 + (240-plr.y)^2)
+ if not angry and dist < 100 then
+ angry = true
+ elseif angry and dist > 200 then
+ angry = false
+ end
+
+
+ love.graphics.push()
+ love.graphics.translate(420,240)
+
+ love.graphics.push()
+ love.graphics.setLineWidth(10)
+ love.graphics.setColor(angry and {1,0,0,0.8} or {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.pop()
+
+ 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)
+
+ love.graphics.pop()
+
+
+
+ t = t + (angry and 1.8 or 1)
+
+ coroutine.yield()
+ end
+end)
+
+function draw_jerma()
+ love.graphics.setColor(1,1,1,1)
+ local sx = 400/jerma:getWidth()
+ local sy = 50/jerma:getHeight()
+ local px =
+ love.graphics.draw(jerma,30,400, 0, sx,sy)
+end
+
+function love.update(dt)
+ player_movement(dt)
+end
+
+function love.draw()
+ love.graphics.clear(1,1,1)
+ love.graphics.setColor(0,0,0)
+ -- love.graphics.print("bees "..plr.x.." "..plr.y,10,10)
+ draw_room()
+ draw_jerma()
+ draw_player()
+ draw_thing()
+
+
+end