-
Notifications
You must be signed in to change notification settings - Fork 1
/
binds.lua
85 lines (37 loc) · 1.39 KB
/
binds.lua
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
local TCamera = require("camera")
require("keyconfig")
local inspect = require("inspect")
local CameraSettings = {}
local cameraSettings = {
dx = 20,
dy = 20,
relativedx = 0,
relativedy = 0,
}
local Shortcut = KeyConfig.Shortcut
local animTimer = require("Timer").new()
local function bindCameraControl(camera)
local cam = camera
print("bindCameraControl", inspect(cam))
local function makeMoveFunction(xc, yc)
return function(sc)
local reldx, reldy = cameraSettings.dx / cam.scale, cameraSettings.dy / cam.scale
cameraSettings.relativedx, cameraSettings.relativedy = reldx, reldy
animTimer:during(0.4, function(_, time, delay)
cam:move(-reldx * (delay - time) * xc, -reldy * (delay - time) * yc)
end)
return true, sc
end
end
KeyConfig.bind("isdown", { key = "left" }, makeMoveFunction(1., 0), "move left", "camleft")
KeyConfig.bind("isdown", { key = "right" }, makeMoveFunction(-1.0, 0.), "move right", "camright")
KeyConfig.bind("isdown", { key = "up" }, makeMoveFunction(0., 1.), "move up", "camup")
KeyConfig.bind("isdown", { key = "down" }, makeMoveFunction(0., -1.), "move down", "camdown")
end
local function cameraControlUpdate(dt)
animTimer:update(dt)
end
return {
bindCameraControl = bindCameraControl,
cameraControlUpdate = cameraControlUpdate,
}