/traderous

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

« back to all changes in this revision

Viewing changes to wrap_tile.lua

  • Committer: Josh C
  • Date: 2013-05-04 22:53:27 UTC
  • Revision ID: josh@9ix.org-20130504225327-dsc1gi3ri96h50s2
trying some movement styles.  derivatives on crystal quest movement.

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='..mirrorX..' Y='..mirrorY)
33
 
 
34
 
                     self.xMirror = Mirror:new{ of = self, image = self.image }
35
 
                     the.mirrors: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
 
                  if self.type == 'bullet' then
44
 
                     --print('pruning bullet')
45
 
                  end
46
 
                  the.mirrors:remove(self.xMirror)
47
 
                  self.xMirror.of = nil -- break circular reference
48
 
                  self.xMirror = nil
49
 
                  -- die?
50
 
               end
51
 
 
52
 
               if self.y ~= mirrorY then
53
 
                  if not self.yMirror then
54
 
                     --print('creating mirror: X='..mirrorX..' Y='..mirrorY)
55
 
 
56
 
                     self.yMirror = Mirror:new{ of = self, image = self.image }
57
 
                     the.mirrors:add(self.yMirror)
58
 
                  end
59
 
 
60
 
                  self.yMirror.x = self.x
61
 
                  self.yMirror.y = mirrorY
62
 
                  self.yMirror.rotation = self.rotation
63
 
                  self.yMirror.scale = self.scale
64
 
               elseif self.yMirror then
65
 
                  if self.type == 'bullet' then
66
 
                     --print('pruning bullet')
67
 
                  end
68
 
                  the.mirrors:remove(self.yMirror)
69
 
                  self.yMirror.of = nil -- break circular reference
70
 
                  self.yMirror = nil
71
 
                  -- die?
72
 
               end
73
 
 
74
 
               if self.x ~= mirrorX and self.y ~= mirrorY then
75
 
                  if not self.xyMirror then
76
 
                     --print('creating mirror: X='..mirrorX..' Y='..mirrorY)
77
 
 
78
 
                     self.xyMirror = Mirror:new{ of = self, image = self.image }
79
 
                     the.mirrors:add(self.xyMirror)
80
 
                  end
81
 
 
82
 
                  self.xyMirror.x = mirrorX
83
 
                  self.xyMirror.y = mirrorY
84
 
                  self.xyMirror.rotation = self.rotation
85
 
                  self.xyMirror.scale = self.scale
86
 
               elseif self.xyMirror then
87
 
                  if self.type == 'bullet' then
88
 
                     --print('pruning bullet')
89
 
                  end
90
 
                  the.mirrors:remove(self.xyMirror)
91
 
                  self.xyMirror.of = nil -- break circular reference
92
 
                  self.xyMirror = nil
93
 
                  -- die?
94
 
               end
95
 
            end,
96
 
   onRemove = function(self)
97
 
                 if self.xMirror then
98
 
                    if self.type == 'bullet' then
99
 
                       --print('removing bullet, so removing mirror')
100
 
                    end
101
 
                    the.mirrors:remove(self.xMirror)
102
 
                    self.xMirror.of = nil -- break circular reference
103
 
                    self.xMirror = nil
104
 
                 end
105
 
 
106
 
                 if self.yMirror then
107
 
                    if self.type == 'bullet' then
108
 
                       --print('removing bullet, so removing mirror')
109
 
                    end
110
 
                    the.mirrors:remove(self.yMirror)
111
 
                    self.yMirror.of = nil -- break circular reference
112
 
                    self.yMirror = nil
113
 
                 end
114
 
 
115
 
                 if self.xyMirror then
116
 
                    if self.type == 'bullet' then
117
 
                       --print('removing bullet, so removing mirror')
118
 
                    end
119
 
                    the.mirrors:remove(self.xyMirror)
120
 
                    self.xyMirror.of = nil -- break circular reference
121
 
                    self.xyMirror = nil
122
 
                 end
123
 
              end,
124
 
   update = function (self, elapsed)
125
 
               Tile.update(self, elapsed)
126
 
 
127
 
               self:wrap()
128
 
               if self.active then
129
 
                  self:reflect()
130
 
               end
131
 
            end
132
 
}
 
 
b'\\ No newline at end of file'