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 0000000..1453023 Binary files /dev/null and b/resources/audio/chaingun.mp3 differ