local StackingHats, super = Class(Wave)

function StackingHats:init()
    super.init(self)
    -- The duration of our wave, in seconds. (Defaults to `5`)
    self.time = 8.4
    self.count = 1
end

function StackingHats:onStart()
    -- code here gets called at the start of the wave
        -- create a bullet in the center of the screen
    arena = Game.battle.arena
    arenaX, arenaY = arena:getBottomLeft()
    arenaX2, arenaY2 = arena:getBottomRight()
    self.collider = LineCollider(self, arenaX, arenaY, arenaX2, arenaY2)
    local collumn = {SCREEN_WIDTH/2*0.87, SCREEN_WIDTH/2, SCREEN_WIDTH/2*1.13}
    local speed = 5
    self.timer:everyInstant(0.75, function()
        local x = collumn[math.random(3)]
        local y = arena:getTop() * 0.5
        self.bullets[self.count] = self:spawnBullet("hatbulllet", x, y, math.rad(90), speed)
        self.count = self.count + 1
        speed = speed * 1.029
    end)
    super.onStart(self)
end

function StackingHats:update()
    -- code here gets called every frame  
    for i = 1, self.count, 1 do
        if (self.bullets[i]) then
            for j = 1, i-1, 1 do
                if (self.bullets[i].collider:collidesWith(self.bullets[j])) then
                    self.bullets[i].physics.speed = 0
                end
            end
            if (self.bullets[i].collider:collidesWith(self)) then
                self.bullets[i].physics.speed = 0
            end
        end
    end
    super.update(self)
end

function StackingHats:draw()
    super.draw(self)
    if DEBUG_RENDER then
        if (self.collider) then
            self.collider:draw(0,1,0,1)
        end
    end
end

return StackingHats