/ld27

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

« back to all changes in this revision

Viewing changes to player.lua

  • Committer: Josh C
  • Date: 2014-07-03 14:21:42 UTC
  • Revision ID: josh@9ix.org-20140703142142-2hk5ssb8szrbylht
leftover screenshot functionality I never checked in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Player = Tile:extend{
 
2
   image = 'data/player.png',
 
3
   onNew = function(self)
 
4
              self.collider = PlayerCollider:new{x=self.x, y=self.y}
 
5
              the.view:add(self.collider)
 
6
           end,
 
7
   -- onUpdate = function(self, dt)
 
8
   --               self.collider.x = self.x + self.width / 2 * (1 - self.scale)
 
9
   --               self.collider.y = self.y + self.height / 2 * (1 - self.scale)
 
10
   --            end,
 
11
}
 
12
 
 
13
PlayerCollider = Fill:extend{
 
14
   fill = {0,0,255},
 
15
   collisions = {},
 
16
   onStartFrame = function(self)
 
17
                     if the.keys:pressed('left') then
 
18
                        self.velocity.x = -200 * the.activeMaze.moveMod
 
19
                     elseif the.keys:pressed('right') then
 
20
                        self.velocity.x = 200 * the.activeMaze.moveMod
 
21
                     else
 
22
                        self.velocity.x = 0
 
23
                     end
 
24
 
 
25
                     if the.keys:pressed('up') then
 
26
                        self.velocity.y = -200 * the.activeMaze.moveMod
 
27
                     elseif the.keys:pressed('down') then
 
28
                        self.velocity.y = 200 * the.activeMaze.moveMod
 
29
                     else
 
30
                        self.velocity.y = 0
 
31
                     end
 
32
                  end,
 
33
   update = function(self, elapsed)
 
34
               self.visible = DEBUG and the.console.visible
 
35
 
 
36
               self:doPhysics('x', elapsed)
 
37
               if not (DEBUG and the.console.visible) then
 
38
                  self:collide(the.activeMaze)
 
39
               end
 
40
 
 
41
               -- handle X collisions
 
42
               for _, col in ipairs(self.collisions) do
 
43
                  col.other:displaceDir(self, 'x')
 
44
               end
 
45
 
 
46
               self:doPhysics('y', elapsed)
 
47
               if not (DEBUG and the.console.visible) then
 
48
                  self:collide(the.activeMaze)
 
49
               end
 
50
 
 
51
               -- handle Y collisions
 
52
               for _, col in ipairs(self.collisions) do
 
53
                  col.other:displaceDir(self, 'y')
 
54
               end
 
55
 
 
56
               local p = the.player
 
57
               p.x = self.x - p.width / 2 * (1 - p.scale)
 
58
               p.y = self.y - p.height / 2 * (1 - p.scale)
 
59
            end,
 
60
   collide = function (self, ...)
 
61
                self.collisions = {}
 
62
                Fill.collide(self, ...)
 
63
             end,
 
64
   onCollide = function (self, other, xOverlap, yOverlap)
 
65
                  if other == the.activeMaze then return end
 
66
 
 
67
                  --print('collision')
 
68
                  --print(inspect(other))
 
69
 
 
70
                  table.insert(self.collisions, {other = other,
 
71
                                                 xOverlap = xOverlap,
 
72
                                                 yOverlap = yOverlap })
 
73
               end
 
74
 
 
75
}
 
 
b'\\ No newline at end of file'