aboutsummaryrefslogtreecommitdiff
path: root/bin/main.lua
blob: 96898cf34de077f27484593331d4be186fb9c2fe (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
local boundary = {
    x = 200,
    y = 100, 
    w = 100, 
    h = 80,
}

local bg = {
    x = 200,
    y = 100, 
    w = 300, 
    h = 200
}
local p = {
    x = boundary.x + 10,
    y = boundary.y + 10,
    speed = 100,
}

function jin.core.onLoad()

end

local function clamp(x, a, b)
    return math.min(math.max(x, a), b)
end

function jin.core.onEvent(e)
    if e.type == "Quit" then 
        jin.core.stop()
    end
    if e.type == "KeyDown" then 
        if e.key == "Escape" then 
            jin.core.stop()
        end 
        if e.key == "Left" then 
            p.x = p.x - p.speed
        elseif e.key == "Right" then 
            p.x = p.x + p.speed
        elseif e.key == "Up" then 
            p.y = p.y - p.speed
        elseif e.key == "Down" then 
            p.y = p.y + p.speed
        end
        p.x = clamp(p.x, boundary.x, boundary.x + boundary.w)
        p.y = clamp(p.y, boundary.y, boundary.y + boundary.h)
    end 
end

local function updateBg()
    local x0 = boundary.x
    local x1 = boundary.x + boundary.w
    local tx = (p.x - x0) / (x1 - x0)
    bg.x = tx * (x1 - x0 - bg.w) + x0
    local y0 = boundary.y
    local y1 = boundary.y + boundary.h
    local ty = (p.y - y0) / (y1 - y0)
    bg.y = ty * (y1 - y0 - bg.h) + y0
end

function jin.core.onUpdate(dt)
    updateBg()
end

function jin.core.onDraw()
    jin.graphics.setColor(100, 100, 100, 255)
    jin.graphics.rect("fill", bg.x, bg.y, bg.w, bg.h)
    jin.graphics.setColor(255,255,255,255)
    jin.graphics.rect("line", boundary.x, boundary.y, boundary.w, boundary.h)
    jin.graphics.setColor(255,0,0,255)
    jin.graphics.rect("fill", p.x, p.y, 3, 3)
end