Browse Source

Animation stuff;

bjorn 10 years ago
parent
commit
f5bcc797c5
3 changed files with 32 additions and 6 deletions
  1. 1 1
      deps/animation.lua
  2. 2 2
      loader.lua
  3. 29 3
      pigeon.lua

+ 1 - 1
deps/animation.lua

@@ -3,7 +3,7 @@ Animation = class()
 Animation.defaultMix = .2
 Animation.defaultMix = .2
 
 
 function Animation:init(vars)
 function Animation:init(vars)
-  --table.merge(vars, self, true)
+  table.merge(vars, self, true)
 
 
   self:initSpine(self.code)
   self:initSpine(self.code)
 
 

+ 2 - 2
loader.lua

@@ -97,13 +97,13 @@ data.load = function()
 
 
     -- Set mixes
     -- Set mixes
     for i = 1, #animation.states do
     for i = 1, #animation.states do
-      lume.each(animation.states, function(state)
+      table.each(animation.states, function(state)
         if state.index ~= i then
         if state.index ~= i then
           s.animationStateData:setMix(animation.states[i].name, state.name, Animation.defaultMix)
           s.animationStateData:setMix(animation.states[i].name, state.name, Animation.defaultMix)
         end
         end
       end)
       end)
 
 
-      lume.each(animation.states[i].mix or {}, function(time, to)
+      table.each(animation.states[i].mix or {}, function(time, to)
         s.animationStateData:setMix(animation.states[i].name, to, time)
         s.animationStateData:setMix(animation.states[i].name, to, time)
       end)
       end)
     end
     end

+ 29 - 3
pigeon.lua

@@ -30,12 +30,30 @@ function Pigeon:init()
   self.state = self.idle
   self.state = self.idle
 
 
   self.animation = data.animation.pigeon()
   self.animation = data.animation.pigeon()
+
   self.animation:on('complete', function(event)
   self.animation:on('complete', function(event)
     if event.state.name == 'jump' then
     if event.state.name == 'jump' then
       self.animation:set('idle')
       self.animation:set('idle')
     end
     end
   end)
   end)
 
 
+  self.animation:on('event', function(event)
+    local name = event.data.name
+    if name == 'rightstep' then
+      self.slide = 'left'
+    elseif name == 'leftstep' then
+      self.slide = 'right'
+    elseif name == 'leftstop' or name == 'rightstop' then
+      self.slide = nil
+    end
+  end)
+
+  self.slide = nil
+  self.slideSpeeds = {
+    left = 693,
+    right = 555
+  }
+
   ctx.event:emit('view.register', {object = self})
   ctx.event:emit('view.register', {object = self})
 end
 end
 
 
@@ -53,7 +71,7 @@ function Pigeon:draw()
 
 
   local points = {self.body:getWorldPoints(self.shape:getPoints())}
   local points = {self.body:getWorldPoints(self.shape:getPoints())}
   g.setColor(255, 255, 255)
   g.setColor(255, 255, 255)
-  g.polygon('line', points)
+  --g.polygon('line', points)
 
 
   local x, y = self.body:getPosition()
   local x, y = self.body:getPosition()
   self.animation:draw(x, y + self.shapeSize / 2)
   self.animation:draw(x, y + self.shapeSize / 2)
@@ -103,11 +121,19 @@ function Pigeon:move()
   local left, right = love.keyboard.isDown('left'), love.keyboard.isDown('right')
   local left, right = love.keyboard.isDown('left'), love.keyboard.isDown('right')
 
 
   if left then
   if left then
-    self.body:applyLinearImpulse(-self.walkForce, 0)
+    --self.body:applyLinearImpulse(-self.walkForce, 0)
     self.animation.flipped = true
     self.animation.flipped = true
+
+    if self.slide then
+      self.body:setX(self.body:getX() - self.slideSpeeds[self.slide] * ls.tickrate * self.animation.state.speed * self.animation.scale)
+    end
   elseif right then
   elseif right then
-    self.body:applyLinearImpulse(self.walkForce, 0)
+    --self.body:applyLinearImpulse(self.walkForce, 0)
     self.animation.flipped = false
     self.animation.flipped = false
+
+    if self.slide then
+      self.body:setX(self.body:getX() + self.slideSpeeds[self.slide] * ls.tickrate * self.animation.state.speed * self.animation.scale)
+    end
   end
   end
 
 
   local vx, vy = self.body:getLinearVelocity()
   local vx, vy = self.body:getLinearVelocity()