summaryrefslogtreecommitdiff
path: root/client/camera.lua
diff options
context:
space:
mode:
Diffstat (limited to 'client/camera.lua')
-rw-r--r--client/camera.lua25
1 files changed, 25 insertions, 0 deletions
diff --git a/client/camera.lua b/client/camera.lua
new file mode 100644
index 0000000..bc65044
--- /dev/null
+++ b/client/camera.lua
@@ -0,0 +1,25 @@
+local coords = require"common.coords"
+
+-- in screen units
+local screen_width, screen_height = love.graphics.getDimensions()
+
+-- zoom is screen pixels per world unit
+local Camera = {}
+Camera.__index = Camera
+function Camera.make(pos,zoom)
+ pos = pos or coords.Pos.make(0,0)
+ zoom = zoom or 30
+ return setmetatable({pos=pos,zoom=zoom},Camera)
+end
+function Camera.apply_trans(self)
+ love.graphics.origin()
+ -- centre (0,0) in the middle of the screen
+ love.graphics.translate(screen_width/2,screen_height/2)
+ -- apply camera transformations
+
+ love.graphics.scale(self.zoom)
+ love.graphics.translate(-self.pos.x,-self.pos.y)
+end
+
+
+return {Camera=Camera}