1
WrapTile = Tile:extend {
3
if self.x < the.app.width / 2 then
4
self.x = the.bg.width - the.app.width / 2
5
elseif self.x > the.bg.width - the.app.width / 2 then
6
self.x = the.app.width / 2
9
if self.y < the.app.height / 2 then
10
self.y = the.bg.height - the.app.height / 2
11
elseif self.y > the.bg.height - the.app.height / 2 then
12
self.y = the.app.height / 2
15
reflect = function(self)
16
local mirrorX, mirrorY = self.x, self.y
18
if self.x > the.bg.width - the.app.width then
19
mirrorX = self.x - the.bg.width + the.app.width
20
elseif self.x < the.app.width then
21
mirrorX = self.x + the.bg.width - the.app.width
24
if self.y > the.bg.height - the.app.height then
25
mirrorY = self.y - the.bg.height + the.app.height
26
elseif self.y < the.app.height then
27
mirrorY = self.y + the.bg.height - the.app.height
30
if self.x ~= mirrorX then
31
if not self.xMirror then
32
--print('creating mirror: X='..xMirrorX..' Y='..xMirrorY)
34
self.xMirror = Tile:new{ image = self.image }
35
the.app.view:add(self.xMirror)
38
self.xMirror.x = mirrorX
39
self.xMirror.y = self.y
40
self.xMirror.rotation = self.rotation
41
elseif self.xMirror then
42
the.app.view:remove(self.xMirror)
47
if self.y ~= mirrorY then
48
if not self.yMirror then
49
--print('creating mirror: X='..yMirrorX..' Y='..yMirrorY)
51
self.yMirror = Tile:new{ image = self.image }
52
the.app.view:add(self.yMirror)
55
self.yMirror.x = self.x
56
self.yMirror.y = mirrorY
57
self.yMirror.rotation = self.rotation
58
elseif self.yMirror then
59
the.app.view:remove(self.yMirror)
64
if self.x ~= mirrorX and self.y ~= mirrorY then
65
if not self.xyMirror then
66
--print('creating mirror: X='..xyMirrorX..' Y='..xyMirrorY)
68
self.xyMirror = Tile:new{ image = self.image }
69
the.app.view:add(self.xyMirror)
72
self.xyMirror.x = mirrorX
73
self.xyMirror.y = mirrorY
74
self.xyMirror.rotation = self.rotation
75
elseif self.xyMirror then
76
the.app.view:remove(self.xyMirror)
81
onRemove = function(self)
83
the.app.view:remove(self.xMirror)
87
the.app.view:remove(self.yMirror)
91
the.app.view:remove(self.xyMirror)
94
update = function (self, elapsed)
95
Tile.update(self, elapsed)
100
-- TODO: make sure mirrors are cleaned up when we are
101
-- killed / removed from view
b'\\ No newline at end of file'