private void UpdateTownInfo()
    {
        ((AbbeyWindow)townManager.BuildingWindows[0]).UpdateSlots();
        ((SanitariumWindow)townManager.BuildingWindows[3]).UpdateSlots();
        ((TavernWindow)townManager.BuildingWindows[4]).UpdateSlots();
        ((NomadWagonWindow)townManager.BuildingWindows[8]).Inventory.UpdateShop();
        ((StageCoachWindow)townManager.BuildingWindows[9]).Panel.
        UpdateRecruitPanel(DarkestDungeonManager.Campaign.Estate.StageCoach.Heroes);

        RosterPanel.UpdateRoster();
    }
    private void Start()
    {
        if (Instanse != this)
        {
            return;
        }

        if (DarkestDungeonManager.RaidManager.Status != RaidStatus.Preparation)
        {
            DarkestDungeonManager.Campaign.NarrationRaidInfo.Clear();

            foreach (var heroInfo in DarkestDungeonManager.RaidManager.RaidParty.HeroInfo)
            {
                if (heroInfo.IsAlive)
                {
                    heroInfo.Hero.TownReset();
                }
                else
                {
                    DarkestDungeonManager.Campaign.Heroes.Remove(heroInfo.Hero);
                    DarkestDungeonManager.Campaign.Estate.Graveyard.Records.Add(heroInfo.DeathRecord);
                }
            }

            if (DarkestDungeonManager.RaidManager.Quest.Goal.Id == "tutorial_final_room")
            {
                DarkestDungeonManager.Campaign.ExecuteProgress();
                DarkestDungeonManager.Campaign.CurrentLog().ReturnRecord =
                    new PartyActivityRecord(PartyActionType.Tutorial, DarkestDungeonManager.RaidManager);
            }
            else
            {
                DarkestDungeonManager.Campaign.ExecuteProgress();
                DarkestDungeonManager.Campaign.AdvanceNextWeek();
                DarkestDungeonManager.Campaign.CurrentLog().ReturnRecord =
                    new PartyActivityRecord(PartyActionType.Result, DarkestDungeonManager.RaidManager);
            }

            DarkestSoundManager.ExecuteNarration("town_visit_start", NarrationPlace.Town,
                                                 DarkestDungeonManager.RaidManager.Status == RaidStatus.Success ? "successes" : "fail",
                                                 DarkestDungeonManager.Campaign.TriggeredEvent != null ?
                                                 DarkestDungeonManager.Campaign.TriggeredEvent.Id : "not_triggered",
                                                 DarkestDungeonManager.Campaign.GuaranteedEvent != null ?
                                                 DarkestDungeonManager.Campaign.GuaranteedEvent.Id : "not_guaranteed");
        }
        else
        {
            if (DarkestDungeonManager.SaveData.InRaid)
            {
                DarkestDungeonManager.SkipTransactions = true;
                if (!DarkestDungeonManager.SaveData.Quest.IsPlotQuest ||
                    DarkestDungeonManager.SaveData.Quest.Goal.Id == "tutorial_final_room")
                {
                    DarkestDungeonManager.LoadingInfo.SetNextScene("Dungeon",
                                                                   "Screen/loading_screen." + DarkestDungeonManager.SaveData.Quest.Dungeon + "_0");
                }
                else
                {
                    DarkestDungeonManager.LoadingInfo.SetNextScene("Dungeon",
                                                                   "Screen/loading_screen.plot_" + ((PlotQuest)DarkestDungeonManager.SaveData.Quest).Id);
                }

                SceneManager.LoadScene("LoadingScreen", LoadSceneMode.Single);
                return;
            }
            else
            {
                DarkestSoundManager.ExecuteNarration("town_visit_start", NarrationPlace.Town);
            }
        }

        glossaryWindow.Initialize();
        activityLogWindow.Initialize();

        if (DarkestDungeonManager.Campaign.TriggeredEvent == null)
        {
            bottomPanel.TownEventButton.gameObject.SetActive(false);
        }
        else
        {
            bottomPanel.TownEventButton.gameObject.SetActive(true);
            townEventWindow.UpdateEvent(DarkestDungeonManager.Campaign.TriggeredEvent);
        }

        CurrencyPanel.UpdateCurrency();
        RosterPanel.InitializeRoster();
        realmInventoryWindow.Populate();
        estateTitle.text = string.Format(LocalizationManager.GetString("estate_title_format"),
                                         DarkestDungeonManager.Campaign.Estate.EstateTitle);

        townManager.InitializeBuildings();

        StartCoroutine(LoadEstateEvent());

        if (DarkestDungeonManager.RaidManager.Status != RaidStatus.Preparation)
        {
            DarkestDungeonManager.SaveData.UpdateFromEstate();
            DarkestDungeonManager.Instanse.SaveGame();
            DarkestDungeonManager.RaidManager.Status = RaidStatus.Preparation;
        }

        DarkestSoundManager.StartTownSoundtrack();
    }