Skip to content

Commit

Permalink
Ready to begin packaging.
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Ebens committed Dec 12, 2016
1 parent 9b7ef95 commit 7aad0dd
Show file tree
Hide file tree
Showing 15 changed files with 172 additions and 12 deletions.
Binary file added assets/images/menu-head.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/sfx/altar-burst.ogg
Binary file not shown.
Binary file added assets/sfx/altar-burst2.ogg
Binary file not shown.
Binary file added assets/sfx/enemy-burst.ogg
Binary file not shown.
Binary file added assets/sfx/enemy-burst2.ogg
Binary file not shown.
Binary file added assets/sfx/laser-overheat.ogg
Binary file not shown.
1 change: 1 addition & 0 deletions entities/Altar.lua
Expand Up @@ -108,6 +108,7 @@ function Altar:fireBurst()
self.emberPS:setSpeed(50, 80)
self.emberPS:emit(200)
self.emberPS:setSpeed(20, 30)
playRandom({"altar-burst", "altar-burst2"}, 0.7)
end

function Altar:fireAnimation()
Expand Down
7 changes: 7 additions & 0 deletions entities/Bullet.lua
Expand Up @@ -58,6 +58,13 @@ function Bullet:update(dt)
self.seekTarget = nil
else
local tangle = math.angle(self.x, self.y, self.seekTarget.x, self.seekTarget.y)
local diff1 = math.abs(tangle - self.angle)
local diff2 = math.abs((math.tau - tangle) - self.angle)

if diff2 < diff1 then
tangle = math.tau - tangle
end

self.angle = math.lerp(self.angle, tangle, math.min(4 * dt, 1))
end
elseif self.seeking then
Expand Down
2 changes: 2 additions & 0 deletions entities/Enemy.lua
Expand Up @@ -127,6 +127,7 @@ function Enemy:laserDamage(damage)

if self.health <= 0 then
self.world:add(BloodSpurt(self.x, self.y, math.tau * math.random(), 6, 6, 1))
playRandom{"enemy-burst", "enemy-burst2"}
self:die() -- will need to gib
return
end
Expand All @@ -150,6 +151,7 @@ function Enemy:die()
if self.dead then return end
self.world:add(Coin:new(self.x, self.y))
self.dead = true
self.world.deathTimer = 0
if not self.playingAnim then self.world = nil end
end

Expand Down
13 changes: 11 additions & 2 deletions entities/Fireball.lua
Expand Up @@ -5,8 +5,8 @@ function Fireball:initialize(x, y, enemy)
self.target = enemy
self.speed = 300
self.radius = 4
self.damageRadius = 25
self.damage = 200
self.damageRadius = 20
self.damage = 180

self.lightTime = 0.05
self.lightTimer = 0
Expand Down Expand Up @@ -67,6 +67,13 @@ function Fireball:update(dt)
self.target = nil
else
local tangle = math.angle(self.x, self.y, self.target.x, self.target.y)
local diff1 = math.abs(tangle - self.angle)
local diff2 = math.abs((math.tau - tangle) - self.angle)

if diff2 < diff1 then
tangle = math.tau - tangle
end

self.angle = math.lerp(self.angle, tangle, math.min(6 * dt, 1))
self.velx = self.speed * math.cos(self.angle)
self.vely = self.speed * math.sin(self.angle)
Expand All @@ -89,6 +96,8 @@ function Fireball:die()
self.explodeLight.x = self.x
self.explodeLight.y = self.y
self.lightTimer = self.lightTime
self.sound:stop()
playRandom({"explosion", "explosion2", "explosion3", "explosion4"}, 0.2)

local dist
for e in Enemy.all:iterate() do
Expand Down
1 change: 1 addition & 0 deletions entities/Player.lua
Expand Up @@ -242,6 +242,7 @@ function Player:attack(dt)
self.laserHeat = self.laserHeat + dt

if self.laserHeat >= self.laserHeatLimit then
playSound("laser-overheat")
self.laserOverheatTimer = self.laserOverheatTime
end

Expand Down
7 changes: 7 additions & 0 deletions entities/SeekerRocket.lua
Expand Up @@ -93,6 +93,13 @@ function SeekerRocket:update(dt)
self.target = nil
else
local tangle = math.angle(self.x, self.y, self.target.x, self.target.y)
local diff1 = math.abs(tangle - self.angle)
local diff2 = math.abs((math.tau - tangle) - self.angle)

if diff2 < diff1 then
tangle = math.tau - tangle
end

self.angle = math.lerp(self.angle, tangle, math.min(4 * dt, 1))
end
end
Expand Down
6 changes: 6 additions & 0 deletions main.lua
Expand Up @@ -52,8 +52,11 @@ function love.load()
assets.loadImage("brazier.png")
assets.loadImage("smoke.png")
assets.loadImage("rocket.png")
assets.loadImage("menu-head.png", "menuHead")

assets.loadSfx("altar-death.ogg")
assets.loadSfx("altar-burst.ogg")
assets.loadSfx("altar-burst2.ogg")
assets.loadSfx("coin.ogg")
assets.loadSfx("coin2.ogg")
assets.loadSfx("coin3.ogg")
Expand All @@ -65,6 +68,8 @@ function love.load()
assets.loadSfx("hit2.ogg")
assets.loadSfx("hit3.ogg")
assets.loadSfx("hit4.ogg")
assets.loadSfx("enemy-burst.ogg")
assets.loadSfx("enemy-burst2.ogg")
assets.loadSfx("hover.ogg")
assets.loadSfx("hover2.ogg")
assets.loadSfx("mg.ogg")
Expand All @@ -81,6 +86,7 @@ function love.load()
assets.loadSfx("smg2.ogg")
assets.loadSfx("smg3.ogg")
assets.loadSfx("laser.ogg")
assets.loadSfx("laser-overheat.ogg")
assets.loadSfx("upgrade.ogg")
assets.loadSfx("upgrade2.ogg")
assets.loadSfx("upgrade-screen.ogg")
Expand Down
25 changes: 23 additions & 2 deletions worlds/Menu.lua
Expand Up @@ -2,10 +2,19 @@ Menu = class("Menu", World)

function Menu:initialize()
World.initialize(self)
self.title = Text:new{"LD37", x = 0, y = 200, width = love.graphics.width, font = assets.fonts.main[48], align = "center"}
self.title = Text:new{"Keeper of the Altar", x = 0, y = 320, width = love.graphics.width, font = assets.fonts.main[48], align = "center"}
self.fadeAlpha = 255
self.image = assets.images.menuHead
self.image:setFilter("linear", "linear")
self.scale = 0.9

self.description = Text:new{
"A keeper will rarely see any action. Not you.\nToday legions of knights in shining armour descend upon the dark lord's sanctuary.\n\nDefend his altar by any means necessary.",
x = 100, y = 500, width = love.graphics.width - 200, font = assets.fonts.main[18], align = "center"
}

self.buttons = {}
self.buttonY = 400
self.buttonWidth = 150
self.buttonHeight = 50

Expand All @@ -28,13 +37,17 @@ end

function Menu:start()
self:fadeIn()
self:scaleUp()
end

function Menu:draw()
World.draw(self)

postfx.exclude()
love.graphics.draw(self.image, love.graphics.width / 2, self.image:getHeight() / 2, 0, self.scale, self.scale, self.image:getWidth() / 2, self.image:getHeight() / 2)

self.title:draw()
self.description:draw()
local mx, my = love.mouse.getPosition()
mx, my = mx + love.graphics.width / 2, my + love.graphics.height / 2
--love.graphics.setPointSize(20)
Expand Down Expand Up @@ -71,7 +84,7 @@ function Menu:addButton(title, pos, func)
local t = {
text = Text:new{title, width = self.buttonWidth, font = assets.fonts.main[24], align = "center"},
x = pos == "left" and 100 or (pos == "right" and love.graphics.width - 100 - self.buttonWidth or love.graphics.width / 2 - self.buttonWidth / 2),
y = 500,
y = self.buttonY,
func = func
}

Expand All @@ -89,3 +102,11 @@ function Menu:fadeIn(func)
tween(self, 0.5, { fadeAlpha = 0 }, nil, func)
end

function Menu:scaleUp()
tween(self, 4, { scale = 1.1 }, nil, self.scaleDown, self)
end

function Menu:scaleDown()
tween(self, 4, { scale = 0.9 }, nil, self.scaleUp, self)
end

122 changes: 114 additions & 8 deletions worlds/Room.lua
Expand Up @@ -5,7 +5,7 @@ function Room:initialize(sandbox)
self.sandbox = sandbox
self.coins = 10
self.inWave = false
self.totalWaves = 8
self.totalWaves = 10
self.shakeTimer = 0
self.shakeAmount = 0
self.camera.x = love.graphics.width / 2
Expand Down Expand Up @@ -78,7 +78,7 @@ function Room:start()
if self.sandbox then
self.player:applySettings(4, 3, 4, 4, 3)
delay(0.5, function()
self:startWave(self.totalWaves)
self:startWave(1)
end)
end

Expand Down Expand Up @@ -106,8 +106,14 @@ function Room:start()
if self.inWave then return end
self.hud:showInstructions("Collect coins from slain enemies to purchase upgrades", 4)

delay(4.5, function()
self.hud:showInstructions("Protect your lord's altar at all costs!", 4)
delay(4, function()
if self.inWave then return end
self.hud:showInstructions("You can also upgrade braziers to turrets by clicking on them", 4)

delay(4.5, function()
if self.inWave then return end
self.hud:showInstructions("Protect your lord's altar at all costs!", 4)
end)
end)
end)
end)
Expand Down Expand Up @@ -137,7 +143,12 @@ function Room:update(dt)

if self.inWave then
if self.wait == "enemies" then
if Enemy.all.length == 0 then self.wait = 0 end
self.deathTimer = self.deathTimer + dt

if Enemy.all.length == 0 or self.deathTimer > 30 then
self.wait = 0
self.deathTimer = 0
end
elseif self.wait > 0 then
self.wait = self.wait - dt
else
Expand Down Expand Up @@ -183,6 +194,7 @@ function Room:startWave(num)
self.waveReps = 0
self.wait = 0
self.waveNum = num
self.deathTimer = 0
self.altar:switchMode("fire")
self.player.health = self.player.maxHealth
end)
Expand Down Expand Up @@ -350,12 +362,106 @@ function Room:wave7(i, r)
end
end

function Room:wave8(i, r)
if i == 1 then
self:add(Spawner:new(dir(), 0.1, 6))
self.wait = 3

if r < 3 then
return 1, true
else
return 2
end
elseif i == 2 then
self:add(Spawner:new(dir(), 0.05, 20))
self:add(Spawner:new(dir(), 2, 10))
self.wait = "enemies"
return 3
else
return nil
end
end

function Room:wave9(i, r)
if i == 1 then
self:add(Spawner:new("top", 0.4, 30))
self.wait = "enemies"
return 2
elseif i == 2 then
self:add(Spawner:new("bottom", 0.4, 30))
self.wait = "enemies"
return 3
else
return nil
end
end

function Room:waveFinal(i, r)
if i == 1 then
self:add(Spawner:new("left", 0.5, 10))
self:finalSpawn()

if r < 10 then
return 1, true
else
return 2
end
elseif i == 2 then
self.wait = "enemies"
return 2, false
return 3
else
return nil, true
return nil
end
end

function Room:finalSpawn()
local r = math.random(1, 10)

if r == 1 then
local a = math.random(5, 8)
self:add(Spawner:new("left", 0.1, a))
self:add(Spawner:new("top", 0.1, a))
self:add(Spawner:new("right", 0.1, a))
self:add(Spawner:new("bottom", 0.1, a))
self.wait = "enemies"
elseif r == 2 then
local a = math.random(5, 8)
self:add(Spawner:new(dir(), 0.1, a))
self:add(Spawner:new(dir(), 0.1, a))
self:add(Spawner:new(dir(), 0.1, a))
self:add(Spawner:new(dir(), 0.1, a))
self.wait = "enemies"
elseif r == 3 then
self:add(Spawner:new(dir(), 0.05, 25))
self:add(Spawner:new("top", 0.8, 6))
self:add(Spawner:new("bottom", 0.8, 6))
self.wait = "enemies"
elseif r == 4 then
self:add(Spawner:new(dir(), 0.3, 10))
self.wait = 0.1
elseif r == 5 then
self:add(Spawner:new(dir(), 0.05, 8))
self.wait = 0.1
elseif r == 6 then
self:add(Spawner:new("top", 0.6, 8))
self:add(Spawner:new("bottom", 0.6, 8))
self.wait = 1
elseif r == 7 then
local a = math.random(30, 45)
self:add(Spawner:new(dir(), 0.2, a))
self.wait = "enemies"
elseif r == 8 then
local a = math.random(8, 12)
self:add(Spawner:new("left", 0.05, a))
self:add(Spawner:new("top", 0.05, a))
elseif r == 9 then
local a = math.random(8, 12)
self:add(Spawner:new("right", 0.05, a))
self:add(Spawner:new("bottom", 0.05, a))
elseif r == 10 then
self:add(Spawner:new("left", 0.5, 10))
self:add(Spawner:new("top", 0.4, 10))
self:add(Spawner:new("right", 0.6, 10))
self:add(Spawner:new("bottom", 0.5, 10))
self.wait = "enemies"
end
end

0 comments on commit 7aad0dd

Please sign in to comment.