/// <summary>
    /// Constucts the era at the end of each tier and clears all bois of their responsabilities.
    /// </summary>
    public void ConstructEra()
    {
        myCommunity.FreeBois();
        SphereTerrain terrain = FindObjectOfType <SphereTerrain> ();

        switch (curTier)
        {
        case (1):
            //10 bois
            myCommunity.FreeBois();
            myCommunity.AddBois(5);
            //2 huts
            for (int i = 0; i < 3; i++)
            {
                Vertex v = myCommunity.ChooseNextBuildingLocation();
                if (v != null)
                {
                    terrain.buildAtIndex(v.getIndex(), "wood_house");
                    myCommunity.addHut(v);
                }
            }
            //lithic workshop
            Vertex litho = myCommunity.ChooseNextBuildingLocation();
            if (litho != null)
            {
                terrain.buildAtIndex(litho.getIndex(), "stonecraft_house");
                myCommunity.addBuilding(litho);
            }
            //well
            Vertex well = myCommunity.ChooseNextBuildingLocation();
            if (well != null)
            {
                terrain.buildAtIndex(well.getIndex(), "well");
                myCommunity.addBuilding(well);
            }
            //unlock wheat and iron
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockWheat();
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockIron();
            break;

        case (2):
            //20 bois
            for (int i = 0; i < 2; i++)
            {
                Vertex v = myCommunity.ChooseNextBuildingLocation();
                if (v != null)
                {
                    terrain.buildAtIndex(v.getIndex(), "wood_house");
                    myCommunity.addHut(v);
                }
            }
            myCommunity.FreeBois();
            myCommunity.AddBois(10);
            //granary
            Vertex granary = myCommunity.ChooseNextBuildingLocation();
            if (granary != null)
            {
                terrain.buildAtIndex(granary.getIndex(), "granary");
                myCommunity.addBuilding(granary);
            }
            //mill
            Vertex mill = myCommunity.ChooseNextBuildingLocation();
            if (mill != null)
            {
                terrain.buildAtIndex(mill.getIndex(), "windmill");
                myCommunity.addBuilding(mill);
            }
            //smelter
            Vertex smelter = myCommunity.ChooseNextBuildingLocation();
            if (smelter != null)
            {
                terrain.buildAtIndex(smelter.getIndex(), "smelter");
                myCommunity.addBuilding(smelter);
            }
            //unlock coal
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockCoal();
            break;

        case (3):
            //40 bois
            //2 hut
            for (int i = 0; i < 2; i++)
            {
                Vertex v = myCommunity.ChooseNextBuildingLocation();
                if (v != null)
                {
                    terrain.buildAtIndex(v.getIndex(), "wood_house");
                    myCommunity.addHut(v);
                }
            }
            myCommunity.FreeBois();
            myCommunity.AddBois(20);
            //blast furnace
            Vertex blast = myCommunity.ChooseNextBuildingLocation();
            if (blast != null)
            {
                terrain.buildAtIndex(blast.getIndex(), "blast_furnace");
                myCommunity.addBuilding(blast);
            }
            //castle
            Vertex castle = myCommunity.ChooseNextBuildingLocation();
            if (castle != null)
            {
                terrain.buildAtIndex(castle.getIndex(), "tower");
                myCommunity.addBuilding(castle);
            }
            //unlock sand
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockSand();
            break;

        case (4):
            //80 bois
            //3 huts
            for (int i = 0; i < 3; i++)
            {
                Vertex v = myCommunity.ChooseNextBuildingLocation();
                if (v != null)
                {
                    terrain.buildAtIndex(v.getIndex(), "wood_house");
                    myCommunity.addHut(v);
                }
            }
            myCommunity.FreeBois();
            myCommunity.AddBois(40);
            //observatory
            Vertex observatory = myCommunity.ChooseNextBuildingLocation();
            if (observatory != null)
            {
                terrain.buildAtIndex(observatory.getIndex(), "observatory");
                myCommunity.addBuilding(observatory);
            }
            //university
            Vertex university = myCommunity.ChooseNextBuildingLocation();
            if (university != null)
            {
                terrain.buildAtIndex(university.getIndex(), "temple");
                myCommunity.addBuilding(university);
            }
            //unlock copper
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockCopper();
            break;

        case (5):
            //160 bois
            myCommunity.FreeBois();
            myCommunity.AddBois(80);
            //factory
            Vertex factory = myCommunity.ChooseNextBuildingLocation();
            if (factory != null)
            {
                terrain.buildAtIndex(factory.getIndex(), "factory");
                myCommunity.addBuilding(factory);
            }
            //remove huts, replace
            for (int i = 0; i < myCommunity.getHuts().Count; i++)
            {
                myCommunity.getHuts() [i].removeResource();
                myCommunity.getHuts() [i].setIsEditable(true);
                terrain.buildAtIndex(myCommunity.getHuts() [i].getIndex(), "apartment");
            }
            //+ 4 more apartments
            for (int i = 0; i < 4; i++)
            {
                Vertex v = myCommunity.ChooseNextBuildingLocation();
                if (v != null)
                {
                    terrain.buildAtIndex(v.getIndex(), "apartment");
                    myCommunity.addBuilding(v);
                }
            }
            //unlock oil
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockOil();
            break;

        case (6):
            //320 bois
            for (int i = 0; i < 8; i++)
            {
                Vertex v = myCommunity.ChooseNextBuildingLocation();
                if (v != null)
                {
                    terrain.buildAtIndex(v.getIndex(), "apartment");
                    myCommunity.addBuilding(v);
                }
            }
            myCommunity.FreeBois();
            myCommunity.AddBois(160);
            //gas refinery
            Vertex gas = myCommunity.ChooseNextBuildingLocation();
            if (gas != null)
            {
                terrain.buildAtIndex(gas.getIndex(), "refinery");
                myCommunity.addBuilding(gas);
            }
            //labs
            Vertex lab = myCommunity.ChooseNextBuildingLocation();
            if (lab != null)
            {
                terrain.buildAtIndex(lab.getIndex(), "lab");
                myCommunity.addBuilding(lab);
            }
            //unlock deiton
            (GameObject.Find("HUD").GetComponent(typeof(ResourceFooBar)) as ResourceFooBar).UnlockDieton();
            break;

        case (7):
            //same number of bois
            Vertex launchSite = myCommunity.ChooseNextBuildingLocation();
            if (launchSite != null)
            {
                GameObject bigOlBoy   = Resources.Load("prefabs/bigspacefucker") as GameObject;
                GameObject realBigBoy = Instantiate(bigOlBoy, transform.TransformPoint(launchSite.getSphereVector() * 1.3f), Quaternion.identity);
                realBigBoy.GetComponent <Rigidbody> ().velocity = transform.TransformPoint(launchSite.getSphereVector()).normalized * 0.5f;
            }
            else
            {
                GameObject bigOlBoy   = Resources.Load("prefabs/bigspacefucker") as GameObject;
                GameObject realBigBoy = Instantiate(bigOlBoy, transform.TransformPoint(myCommunity.getCampfireVertex().getSphereVector() * 1.3f), Quaternion.identity);
                realBigBoy.GetComponent <Rigidbody> ().velocity = transform.TransformPoint(myCommunity.getCampfireVertex().getSphereVector()).normalized * 0.5f;
            }
            break;

        default:
            //5 bois
            //fire
            break;
        }
    }