summaryrefslogtreecommitdiff
path: root/src/main.lua
blob: 20c532aafcceb8e48ee806b6bbf00ff3b05925a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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