package hello;

import javax.microedition.lcdui.Graphics;

public class Building
{

    private mySprite[] buildings;
    private int buildingCounter = 0;
    private mySprite[] remaining;

    public Building(Canvas canv, Graphics g)
    {
        if (canv.getBackground() != null)
        {
            if (buildings == null)
            {
                buildings = new mySprite[canv.getBackground().numberOfTiles(1, 1, 1, 1, 1, 1, 1, 1, 1) + 1];
                remaining = new mySprite[canv.getBackground().numberOfTiles(1, 1, 1, 1, 1, 1, 1, 1, 1) + 1];
                canv.getBackground().reset();
                for (int i = 0; i < canv.getBackground().getMapLength() - 1; i++)
                {
                    if (buildings[buildingCounter] == null && buildingCounter <= canv.getBackground().numberOfTiles(1, 1, 1, 1, 1, 1, 1, 1, 1) + 1)
                    {
                        if(canv.getBackground().checkMap(1, 1, 1, 1, 1, 1, 1, 1, 1, i) == true)
                        {
                            buildings[buildingCounter] = new mySprite("Building_front.png", 24, 53);
                            buildings[buildingCounter].setRefPix(12, 45);
                            buildings[buildingCounter].setLocation(canv.getBackground().getTileX(), canv.getBackground().getTileY());
                            buildings[buildingCounter].collisionArea(0, 40, 24, 13);
                            buildings[buildingCounter].setActive();
                           // System.out.println(canv.getBackground().getTileX() + " " + canv.getBackground().getTileY());
                            buildingCounter++;
                        }
                    }
                }
            }
            //else
            //   System.out.println("Buildings already created");
        }
    }

    public void draw(Graphics g, mySprite sprite)
    {
        if(sprite != null)
        {
            int k = 0;

            for (int j = 0; j < buildings.length; j++)
            {
                if (buildings[j] != null)
                {
                    if(buildings[j].getPosy() < sprite.getPosy())
                    {
                        buildings[j].draw(g);
                        buildings[j].setActive();
                    }
                    else
                    {
                        System.arraycopy(buildings, j, remaining, k, 1);
                        k++;
                    }
                    //  System.out.println("Building number " + j + " drawn");
                }
            }
        }
        else
        {
            for (int j = 0; j < buildings.length; j++)
            {
                if (buildings[j] != null)
                {
                        buildings[j].draw(g);
                }
            }
        }
    }
/*
     public void draw(Graphics g, mySprite[] sprite)
    {
        for (int j = 0; j < buildings.length; j++)
        {
            if (buildings[j] != null)
            {
                buildings[j].draw(g);
                //  System.out.println("Building number " + j + " drawn");
            }
        }
    }
     */
    public void drawRemainder(Graphics g)
    {
        for(int i = 0; i < remaining.length; i++)
        {
            if(remaining[i] != null)
            {
                remaining[i].draw(g);
            }
        }
    }

    public void move(double dx, double dy)
    {
        for (int i = 0; i < buildings.length; i++)
        {
            if (buildings[i] != null)
            {
                buildings[i].move(dx, dy);
            }
        }
    }

    public int getNoOfBuildings()
    {
        return buildings.length;
    }

    public mySprite getBuildingSprite(int i)
    {
        return buildings[i];
    }
}
