﻿function ShieldHolder(holder)
{
    EventCenter.addListener(this, Events.SHOT_MOVES, "checkShotHit");
    
    this.holder = holder;
    this.holder.ShieldHolder = this;
    this.init();
}

ShieldHolder.prototype.init = function()
{
    this.count = Settings.SHIELD_COUNT;
    this.size = Settings.SHIELD_SIZE;
    this.inset = Settings.SHIELD_INSET;
    this.shields = new Array();
    this.xMax = Boundary.xMax - this.inset;
    this.xMin = Boundary.xMin + this.inset;
    this.yMin = Settings.SHIELD_YPOS;
    this.yMax = this.yMin + this.size;
    
    var width = this.xMax - this.xMin;
    var sTotal = this.count * this.size;
    var gapCount = (this.count == 1) ? 1 :(this.count - 1);
    var spacer = (width - sTotal) / gapCount;
    
    for(var i = 0; i < this.count; i++)
    {
        var xPos = this.xMin + i * (this.size + spacer);
        this.shields.push(new Shield(xPos, this.yMin, this.holder));
    }    
}

ShieldHolder.prototype.moveShields = function(evt)
{
    this.xMin += evt.data.x;
    this.xMax += evt.data.x;
}

ShieldHolder.prototype.checkShotHit = function(evt)
{
    var xPos = evt.data.x;
    var yPos = evt.data.y;
    if(yPos > this.yMin && yPos < this.yMax)
    {
        if(xPos > this.xMin && xPos < this.xMax)
        {
            EventCenter.broadcast(Events.CHECK_SHIELD_HIT, evt.data);
        }
    }
}

ShieldHolder.prototype.die = function()
{
    for(var i in this.shields){this.shields[i].die();}
    EventCenter.removeListener(this, Events.SHOT_MOVES, "checkShotHit");
    EventCenter.removeListener(this, Events.BOUNDARY_RESETS, "moveShields");
}
