30
30
if self.x ~= mirrorX then
31
31
if not self.xMirror then
32
--print('creating mirror: X='..mirrorX..' Y='..mirrorY)
32
--print('creating mirror: X='..xMirrorX..' Y='..xMirrorY)
34
self.xMirror = Mirror:new{ of = self, image = self.image }
35
the.mirrors:add(self.xMirror)
34
self.xMirror = Tile:new{ image = self.image }
35
the.app.view:add(self.xMirror)
38
38
self.xMirror.x = mirrorX
40
40
self.xMirror.rotation = self.rotation
41
41
self.xMirror.scale = self.scale
42
42
elseif self.xMirror then
43
if self.type == 'bullet' then
44
--print('pruning bullet')
46
the.mirrors:remove(self.xMirror)
47
self.xMirror.of = nil -- break circular reference
43
the.app.view:remove(self.xMirror)
52
48
if self.y ~= mirrorY then
53
49
if not self.yMirror then
54
--print('creating mirror: X='..mirrorX..' Y='..mirrorY)
50
--print('creating mirror: X='..yMirrorX..' Y='..yMirrorY)
56
self.yMirror = Mirror:new{ of = self, image = self.image }
57
the.mirrors:add(self.yMirror)
52
self.yMirror = Tile:new{ image = self.image }
53
the.app.view:add(self.yMirror)
60
56
self.yMirror.x = self.x
62
58
self.yMirror.rotation = self.rotation
63
59
self.yMirror.scale = self.scale
64
60
elseif self.yMirror then
65
if self.type == 'bullet' then
66
--print('pruning bullet')
68
the.mirrors:remove(self.yMirror)
69
self.yMirror.of = nil -- break circular reference
61
the.app.view:remove(self.yMirror)
74
66
if self.x ~= mirrorX and self.y ~= mirrorY then
75
67
if not self.xyMirror then
76
--print('creating mirror: X='..mirrorX..' Y='..mirrorY)
68
--print('creating mirror: X='..xyMirrorX..' Y='..xyMirrorY)
78
self.xyMirror = Mirror:new{ of = self, image = self.image }
79
the.mirrors:add(self.xyMirror)
70
self.xyMirror = Tile:new{ image = self.image }
71
the.app.view:add(self.xyMirror)
82
74
self.xyMirror.x = mirrorX
84
76
self.xyMirror.rotation = self.rotation
85
77
self.xyMirror.scale = self.scale
86
78
elseif self.xyMirror then
87
if self.type == 'bullet' then
88
--print('pruning bullet')
90
the.mirrors:remove(self.xyMirror)
91
self.xyMirror.of = nil -- break circular reference
79
the.app.view:remove(self.xyMirror)
92
80
self.xyMirror = nil
96
84
onRemove = function(self)
97
85
if self.xMirror then
98
if self.type == 'bullet' then
99
--print('removing bullet, so removing mirror')
101
the.mirrors:remove(self.xMirror)
102
self.xMirror.of = nil -- break circular reference
86
the.app.view:remove(self.xMirror)
106
89
if self.yMirror then
107
if self.type == 'bullet' then
108
--print('removing bullet, so removing mirror')
110
the.mirrors:remove(self.yMirror)
111
self.yMirror.of = nil -- break circular reference
90
the.app.view:remove(self.yMirror)
115
93
if self.xyMirror then
116
if self.type == 'bullet' then
117
--print('removing bullet, so removing mirror')
119
the.mirrors:remove(self.xyMirror)
120
self.xyMirror.of = nil -- break circular reference
94
the.app.view:remove(self.xyMirror)
124
97
update = function (self, elapsed)
125
98
Tile.update(self, elapsed)
103
-- TODO: make sure mirrors are cleaned up when we are
104
-- killed / removed from view
b'\\ No newline at end of file'