/spacey

To get this branch, use:
bzr branch http://9ix.org/bzr/spacey

« back to all changes in this revision

Viewing changes to wrap_tile.lua

  • Committer: Josh C
  • Date: 2013-05-05 17:28:53 UTC
  • Revision ID: josh@9ix.org-20130505172853-j6jm7k7ng0tgkyo0
pew pew!

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
WrapTile = Tile:extend {
2
 
   wrap = function(self)
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
7
 
             end
8
 
 
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
13
 
             end
14
 
          end,
15
 
   reflect = function(self)
16
 
               local mirrorX, mirrorY = self.x, self.y
17
 
 
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
22
 
               end
23
 
 
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
28
 
               end
29
 
 
30
 
               if self.x ~= mirrorX then
31
 
                  if not self.xMirror then
32
 
                     --print('creating mirror: X='..xMirrorX..' Y='..xMirrorY)
33
 
 
34
 
                     self.xMirror = Mirror:new{ of = self, image = self.image }
35
 
                     the.app.view:add(self.xMirror)
36
 
                  end
37
 
 
38
 
                  self.xMirror.x = mirrorX
39
 
                  self.xMirror.y = self.y
40
 
                  self.xMirror.rotation = self.rotation
41
 
                  self.xMirror.scale = self.scale
42
 
               elseif self.xMirror then
43
 
                  the.app.view:remove(self.xMirror)
44
 
                  self.xMirror = nil
45
 
                  -- die?
46
 
               end
47
 
 
48
 
               if self.y ~= mirrorY then
49
 
                  if not self.yMirror then
50
 
                     --print('creating mirror: X='..yMirrorX..' Y='..yMirrorY)
51
 
 
52
 
                     self.yMirror = Mirror:new{ of = self, image = self.image }
53
 
                     the.app.view:add(self.yMirror)
54
 
                  end
55
 
 
56
 
                  self.yMirror.x = self.x
57
 
                  self.yMirror.y = mirrorY
58
 
                  self.yMirror.rotation = self.rotation
59
 
                  self.yMirror.scale = self.scale
60
 
               elseif self.yMirror then
61
 
                  the.app.view:remove(self.yMirror)
62
 
                  self.yMirror = nil
63
 
                  -- die?
64
 
               end
65
 
 
66
 
               if self.x ~= mirrorX and self.y ~= mirrorY then
67
 
                  if not self.xyMirror then
68
 
                     --print('creating mirror: X='..xyMirrorX..' Y='..xyMirrorY)
69
 
 
70
 
                     self.xyMirror = Mirror:new{ of = self, image = self.image }
71
 
                     the.app.view:add(self.xyMirror)
72
 
                  end
73
 
 
74
 
                  self.xyMirror.x = mirrorX
75
 
                  self.xyMirror.y = mirrorY
76
 
                  self.xyMirror.rotation = self.rotation
77
 
                  self.xyMirror.scale = self.scale
78
 
               elseif self.xyMirror then
79
 
                  the.app.view:remove(self.xyMirror)
80
 
                  self.xyMirror = nil
81
 
                  -- die?
82
 
               end
83
 
            end,
84
 
   onRemove = function(self)
85
 
                 if self.xMirror then
86
 
                    the.app.view:remove(self.xMirror)
87
 
                 end
88
 
 
89
 
                 if self.yMirror then
90
 
                    the.app.view:remove(self.yMirror)
91
 
                 end
92
 
 
93
 
                 if self.xyMirror then
94
 
                    the.app.view:remove(self.xyMirror)
95
 
                 end
96
 
              end,
97
 
   update = function (self, elapsed)
98
 
               Tile.update(self, elapsed)
99
 
 
100
 
               self:wrap()
101
 
               self:reflect()
102
 
 
103
 
               -- TODO: make sure mirrors are cleaned up when we are
104
 
               -- killed / removed from view
105
 
            end
106
 
}
 
 
b'\\ No newline at end of file'