//Day Update
    void DayUpdate()
    {
        if (Blocks != null)
        {
            ShowAvailableTech();

            foreach (Transform obj in TokenBoard.transform)
            {
                if (obj.gameObject.tag == "Token")
                {
                    Draggable drg = obj.GetComponent <Draggable> ();
                    drg.UpdateDuration();
                    drg.CheckForDestroy();
                }
            }

            foreach (CityGenerator block in Blocks)
            {
                if (block.ActiveToken != null)
                {
                    block.ActiveEffect.TriggerEffect(block);
                }
            }

            float Pop   = 0;
            float Taxes = 0;
            foreach (CityGenerator block in Blocks)
            {
                CityBlockData CBD = block.CBD;
                Pop   += CBD.CalcPop();
                Taxes += CBD.CalcTaxes();
            }
            Population = Mathf.RoundToInt(Pop); Money += Mathf.RoundToInt(Taxes);
            Man.AddValue("Day " + (Day + 1) + " taxes", Mathf.RoundToInt(Taxes));
            Day++;

            if (HandSize < 4)
            {
                FillHand(1);
            }


            CheckUnlockedTokens();
        }
    }
    public void GenerateCity(int dx, int dy)
    {
        CBD = new CityBlockData();
        CBD.ChildrenTowers = new MeshRenderer[4];
        CBD.height         = new float[4];
        CBD.state          = new int[4];
        int a = 0;

        for (int x = -1; x < 2; x += 2)
        {
            for (int y = -1; y < 2; y += 2)
            {
                GameObject Tower = Instantiate <GameObject> (CopyTower);

                Tower.transform.SetParent(this.transform);
                CBD.height[a] = TowerHealth + (Random.value) * 5f;
                if (TowerHealth <= 0.5f)
                {
                    CBD.height[a] = 0;
                }

                CBD.CheckMaxHeight(CBD.height[a]);
                float height = GameManager.instance.GetAppropriateHeight(CBD.height[a]);

                Tower.transform.localScale    = new Vector3(0.38f, 0.38f, height);
                Tower.transform.localRotation = Quaternion.Euler(-90, 0, 0);
                Tower.transform.localPosition = new Vector3(x * 0.25f, 0.57f, y * 0.25f);
                CBD.ChildrenTowers[a]         = Tower.GetComponent <MeshRenderer>();
                CBD.ChildrenTowers [a].GetComponent <MeshFilter> ().mesh = GameManager.instance.GetAppropriateMesh(CBD.height[a]);
                CBD.state[a] = GameManager.instance.GetState(CBD.height[a]);
                a++;
            }
        }

        mx = dx;
        my = dy;

        BoxCollider bc = GetComponent <BoxCollider> ();

        bc.size   = new Vector3(1.25f, (GameManager.instance.GetAppropriateHeight(CBD.MaxHeight) + 1f) / 1f, 1.25f);
        bc.center = new Vector3(0, (GameManager.instance.GetAppropriateHeight(CBD.MaxHeight) + 1f) / 2f, 0);
        CBD.bc    = bc;
    }