| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- local MuzzleFlash = {}
- MuzzleFlash.name = 'MuzzleFlash'
- MuzzleFlash.code = 'muzzleFlash'
- MuzzleFlash.activate = function(self)
- self.maxHealth = .2
- self.health = self.maxHealth
- self.scale = 2.5
- self.alpha = 1
- self.image = data.media.graphics.effects.muzzleFlash1
- ctx.view:register(self)
- end
- MuzzleFlash.update = function(self)
- self.health = self.health - tickRate
- if self.health <= 0 then return true
- elseif self.health < (self.maxHealth * .33) then
- self.image = data.media.graphics.effects.muzzleFlash2
- elseif self.health < (self.maxHealth * .67) then
- self.image = data.media.graphics.effects.muzzleFlash3
- end
- self.alpha = self.alpha - (1 / self.maxHealth) * tickRate
- self.scale = math.lerp(self.scale, 0.5, 5 * tickRate)
- local owner = ctx.players:get(self.owner)
- local weapon = data.weapon[self.weapon]
- local dir = owner.angle
- self.angle = dir
- local dx, dy = owner.class.handx * owner.class.scale, owner.class.handy * owner.class.scale
- self.x = owner.x + math.dx(dx, dir) - math.dy(dy, dir)
- self.y = owner.y + math.dy(dx, dir) + math.dx(dy, dir)
- dx, dy = weapon.tipx * weapon.scale, weapon.tipy * weapon.scale
- self.x = self.x + math.dx(dx, dir) - math.dy(dy, dir)
- self.y = self.y + math.dy(dx, dir) + math.dx(dy, dir)
- end
- MuzzleFlash.draw = function(self)
- local function doDraw(diminish)
- love.graphics.setColor(255, 255, 255, self.alpha * 255 / diminish)
- love.graphics.draw(self.image, self.x, self.y, self.angle, self.scale * diminish, self.scale * diminish, 0, self.image:getHeight() / 2)
- end
- doDraw(1.5)
- ctx.effects:get('bloom'):render(f.cur(doDraw, 1.65))
- end
- return MuzzleFlash
|