alunizaje/assets/scripts/spaceship.lua

75 lines
2.5 KiB
Lua
Raw Normal View History

2016-11-12 13:49:24 +01:00
local anim8 = require 'assets/scripts/vendor/anim8'
local spaceship = {}
2016-11-27 12:31:56 +01:00
spaceship.y = 0
2016-11-27 11:06:22 +01:00
local press_button = false
2016-11-12 13:49:24 +01:00
2016-11-14 00:35:14 +01:00
function spaceship.load(game)
2016-11-12 13:49:24 +01:00
-- power origin 1000
2016-11-27 12:31:56 +01:00
body = { x = game.canvas.width / 2, y = 0 , power = 400 , size_collition = 28, polygons_collition = 8 }
body.width = 156
body.height = 143
body.img = love.graphics.newImage('assets/sprites/spaceship/body.png')
body.body = love.physics.newBody(game.world, (game.canvas.width / 2) - (body.img:getWidth() / 2) , body.y, 'dynamic')
body.shape = love.physics.newCircleShape(20)
body.fixture = love.physics.newFixture(body.body, body.shape, 1)
body.fixture:setRestitution(0.9)
local g = anim8.newGrid(body.width, body.height, body.img:getWidth(), body.img:getHeight())
body.animation_stop = anim8.newAnimation(g('1-1', 1), 0.1)
body.animation_fire = anim8.newAnimation(g('2-5', 1), 0.01)
2016-11-27 11:06:22 +01:00
-- Light
light = {
img = love.graphics.newImage('assets/sprites/spaceship/light.png'),
2016-11-27 12:31:56 +01:00
y = body.y
2016-11-27 11:06:22 +01:00
}
2016-11-27 12:31:56 +01:00
light.x = body.x + (body.img:getWidth() / 2) + (light.img:getWidth() / 2)
light.num_frames = 11
light.width = 74
light.height = 66
2016-11-27 11:06:22 +01:00
g = anim8.newGrid(light.width, light.height, light.img:getWidth(), light.img:getHeight())
2016-11-27 12:31:56 +01:00
light.animation = anim8.newAnimation(g('1-' .. light.num_frames, 1), 0.05)
2016-12-01 21:23:35 +01:00
-- Collision
body.collision = {x=body.body:getX() + 40, y=body.body:getY()}
game.collisions:add({name='spaceship'}, body.collision.x, body.collision.y, body.width, body.height)
game.collisions:move({name='spaceship'}, body.collision.x, body.collision.y)
2016-11-12 13:49:24 +01:00
end
2016-12-01 21:23:35 +01:00
function spaceship.update(dt, game)
2016-11-27 11:06:22 +01:00
-- Spaceship
2016-11-27 12:31:56 +01:00
body.animation_fire:update(dt)
2016-11-27 11:06:22 +01:00
press_button = false
2016-11-27 12:31:56 +01:00
spaceship.y = body.body:getY()
2016-11-27 11:06:22 +01:00
-- Light
light.animation:update(dt)
2016-11-27 12:31:56 +01:00
light.x = body.body:getX() + 43
light.y = body.body:getY() - 15
2016-11-12 13:49:24 +01:00
-- Controls
if control_up then
2016-11-27 12:31:56 +01:00
body.body:applyForce(0, -body.power)
2016-11-27 11:06:22 +01:00
press_button = true
2016-11-12 13:49:24 +01:00
end
if control_right then
2016-11-27 12:31:56 +01:00
body.body:applyForce(body.power, 0)
2016-11-27 11:06:22 +01:00
press_button = true
2016-11-12 13:49:24 +01:00
elseif control_left then
2016-11-27 12:31:56 +01:00
body.body:applyForce(-body.power, 0)
2016-11-27 11:06:22 +01:00
press_button = true
2016-11-12 13:49:24 +01:00
end
if control_quit then
love.event.push('quit')
end
2016-12-01 21:23:35 +01:00
-- Collision
--game.collisions:move({name='spaceship'}, body.collision.x, body.collision.y)
2016-11-12 13:49:24 +01:00
end
function spaceship.draw()
2016-12-01 21:23:35 +01:00
love.graphics.rectangle('fill', body.collision.x, body.collision.y, body.width, body.height)
2016-11-27 11:06:22 +01:00
light.animation:draw(light.img, light.x, light.y)
if press_button then
2016-11-27 12:31:56 +01:00
body.animation_fire:draw(body.img, body.body:getX(), body.body:getY())
2016-11-27 11:06:22 +01:00
else
2016-11-27 12:31:56 +01:00
body.animation_stop:draw(body.img, body.body:getX(), body.body:getY())
2016-11-27 11:06:22 +01:00
end
2016-11-12 13:49:24 +01:00
end
return spaceship