From d6500622fd0fc2e6197fe47cc8799d12d2254c66 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Sat, 18 Oct 2014 20:20:37 +0300 Subject: [PATCH] Add chaingun --- entities/chaingun.lua | 40 +++++++++++++++++++++++++++++++++++ entities/physicsentity.lua | 1 - entities/rectangle.lua | 1 - entities/vickers77.lua | 2 +- level_state.lua | 8 +++---- resources/audio/chaingun.mp3 | Bin 0 -> 4032 bytes 6 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 entities/chaingun.lua create mode 100644 resources/audio/chaingun.mp3 diff --git a/entities/chaingun.lua b/entities/chaingun.lua new file mode 100644 index 0000000..02eb126 --- /dev/null +++ b/entities/chaingun.lua @@ -0,0 +1,40 @@ +Class = require 'hump.class' +require 'entities/physicsentity' +require 'settings' + +CHAINGUN_SOUND = love.audio.newSource("resources/audio/chaingun.mp3", "static") + +Chaingun = Class{ + __includes = Rectangle, + + MAX_LIFETIME = 60 * 5, + img = nil, + frame = 0, + + init = function(self, x, y, level) + local xsize = 0.2 * PIXELS_PER_METER + local ysize = 0.2 * PIXELS_PER_METER + + Rectangle.init(self, x, y, level, "dynamic", 0.2, xsize, ysize, 1000, nil) + self.body:setBullet(true) + + CHAINGUN_SOUND:rewind() + CHAINGUN_SOUND:play() + end; + + update = function(self, dt) + Rectangle.update(self, dt) + + self.frame = self.frame + 1 + + if self.frame >= self.MAX_LIFETIME then + self:delete() + end + end; + + draw = function(self) + love.graphics.setColor({255, 0, 0, 255}) + Rectangle.draw(self) + end; +} + diff --git a/entities/physicsentity.lua b/entities/physicsentity.lua index 4c1877f..ee860ef 100644 --- a/entities/physicsentity.lua +++ b/entities/physicsentity.lua @@ -33,7 +33,6 @@ PhysicsEntity = Class{ -- Reimplement draw = function(self) - love.graphics.setColor({255, 255, 255, 255}) end; -- Only update if physics is not static diff --git a/entities/rectangle.lua b/entities/rectangle.lua index 779ef85..af74be9 100644 --- a/entities/rectangle.lua +++ b/entities/rectangle.lua @@ -31,7 +31,6 @@ Rectangle = Class{ end; draw = function(self) - PhysicsEntity.draw(self) if self.img ~= nil then love.graphics.draw(self.img, self.quad, self.body:getX(), self.body:getY(), self.angle, 1, 1, self.xsize / 2, self.ysize / 2) else diff --git a/entities/vickers77.lua b/entities/vickers77.lua index 4d1674f..e2d1562 100644 --- a/entities/vickers77.lua +++ b/entities/vickers77.lua @@ -13,7 +13,7 @@ Vickers77 = Class{ init = function(self, x, y, level) local xsize = 0.35 * PIXELS_PER_METER - local ysize = 0.1 * PIXELS_PER_METER + local ysize = 0.2 * PIXELS_PER_METER Rectangle.init(self, x, y, level, "dynamic", 0.2, xsize, ysize, 1000, nil) self.body:setBullet(true) diff --git a/level_state.lua b/level_state.lua index 0538fae..fca4fae 100644 --- a/level_state.lua +++ b/level_state.lua @@ -1,7 +1,7 @@ Gamestate = require 'hump.gamestate' require 'level' require 'player' -require 'entities/vickers77' +require 'entities/chaingun' level_state = {} @@ -73,9 +73,9 @@ function level_state:keypressed(key, unicode) end end - local shot = Vickers77(200, 700, current_level) - shot:setAngle(-89) - shot:punch(-89, 10000) + local shot = Chaingun(200, 700, current_level) + shot:setAngle(-45) + shot:punch(-45, 100000) end diff --git a/resources/audio/chaingun.mp3 b/resources/audio/chaingun.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..14530233cc9531f2f820f4595b25ecb2bf7357ec GIT binary patch literal 4032 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 V$y5Bd^ZhqS{H=q3jQ`Io@GnPNV?F=? literal 0 HcmV?d00001