/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: 2013-08-25 22:29:12 UTC
  • Revision ID: josh@9ix.org-20130825222912-3xe9l4yh2fq1ten6
title screen

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
local velLimit = 400
2
1
Player = Tile:extend{
3
2
   image = 'data/player.png',
4
 
   maxVelocity = {x=velLimit,y=velLimit},
5
 
   minVelocity = {x=-velLimit, y=-velLimit},
 
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 = {},
6
16
   onStartFrame = function(self)
7
17
                     if the.keys:pressed('left') then
8
 
                        self.velocity.x = -200
 
18
                        self.velocity.x = -200 * the.activeMaze.moveMod
9
19
                     elseif the.keys:pressed('right') then
10
 
                        self.velocity.x = 200
 
20
                        self.velocity.x = 200 * the.activeMaze.moveMod
11
21
                     else
12
22
                        self.velocity.x = 0
13
23
                     end
14
24
 
15
25
                     if the.keys:pressed('up') then
16
 
                        self.velocity.y = -200
 
26
                        self.velocity.y = -200 * the.activeMaze.moveMod
17
27
                     elseif the.keys:pressed('down') then
18
 
                        self.velocity.y = 200
 
28
                        self.velocity.y = 200 * the.activeMaze.moveMod
19
29
                     else
20
30
                        self.velocity.y = 0
21
31
                     end
22
32
                  end,
23
 
   onCollide = function(self, other)
24
 
                  other:displace(self)
25
 
               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
 
26
75
}
 
 
b'\\ No newline at end of file'