// Use this for initialization
    public void StartGame()
    {
        GameObject ui_holder = GameObject.Find("UI");

        //Find Component classes
        magicController      = GetComponent <MagicController>();
        roundBonusManager    = GetComponent <RoundBonusManager>();
        global               = GetComponent <GlobalFlags>();
        networkedUI          = ui_holder.GetComponent <Networked_UI_Updater>();
        progressTrackManager = ui_holder.GetComponent <TracksInterface>();
        townFoundManager     = GetComponent <TownFoundingBonusManager>();
        wonderController     = GetComponent <WonderController>();
        roundEndBonusManager = GetComponent <RoundEndBonusManager>();
        turnController       = GameObject.Find("TurnController(Clone)").GetComponent <TurnController>(); //Networked object so must be it's own game object separate from GameController.

        //Create component classes
        cultController = new CultController();

        localPlayer = GameObject.FindWithTag("Player_Object").GetComponent <Player>();

        wonderController.SetUp();
        magicController.SetUpSpells();
        networkedUI.SetUpUI();
        progressTrackManager.SetUp();
        townFoundManager.SetUp();
        roundBonusManager.SetUp();
        roundEndBonusManager.SetUp();
        SetUpTracks();
        global.Set_Up();
    }
    public void TakeFavourTile(int tracktier)
    {
        if (!favourTileAvailable)
        {
            return;
        }

        int[] temp = CultController.ParseInt(tracktier); //Parse e.g. 12 into track 1 tier 2
        int   track = temp[0] - 1; int tier = temp[1];

        FavourBonus wt = wonderController.GetWonderTile(track, tier);

        if (track == 0 && tier == 1) //If its fire 2 or W2 then it requires special treatment
        {
            localPlayer.PointsForTown = 6;
            localPlayer.EndTurn();
        }
        else if (track == 1 && tier == 1)
        {
            am.AddAbility <AbilityAddToCult>();
            localPlayer.EndTurn();
        }
        else if (wt != null)
        {
            //Increase players income and points
            localPlayer.AddToNonBuildingIncome(wt.GetIncome().IncomeAsArray());
            if (wt.GetPointBonus() != null)
            {
                localPlayer.AddPointBonus(wt.GetPointBonus(), false);
            }

            //Increase players cult standing. Tell the track to increase too
            AddCultIncome(wt.Get_CultIncome());

            networkedUI.PanelInteractivityEnDisable(networkedUI.favourButtons, false);
            networkedUI.DisEnableFavourTiles();

            localPlayer.EndTurn();
        }

        //If no options are picked for whatever reason return, otherwise send the data to the server and disallow further picking of favours
        else
        {
            return;
        }

        localPlayer.localPlayerObject.GetComponent <TakenTurnData>().SendPickedFavourData(track, tier);
        favourTileAvailable = false;
    }