Main/System/Main/HomeWin.cs
@@ -1,5 +1,8 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
@@ -8,10 +11,13 @@
/// </summary>
public class HomeWin : UIBase
{
    //经验区
    [SerializeField] Text playerLevelText;
    [SerializeField] SmoothSlider expSlider;
    [SerializeField] UIEffectPlayer fullEffect;
    [SerializeField] UIEffectPlayer headEffect;
    [SerializeField] Button officialUpBtn;
    [SerializeField] Transform officialTip;
    //任务区
    [SerializeField] Button taskButton; //引导或者领取任务奖励
@@ -20,18 +26,67 @@
    [SerializeField] Image awardIcon;
    [SerializeField] Text awardCnt;
    [SerializeField] UIEffectPlayer taskEffect;
    [SerializeField] UIEffectPlayer lvUPEffect;
    //关卡
    [SerializeField] Button bossBtn;
    [SerializeField] MainLevelWaveCell[] mainLevelWaves;
    [SerializeField] ScrollRect mainLevelScrollRect;
    [SerializeField] Text levelName;
    [SerializeField] GameObject restMark;
    [SerializeField] Button restBtn;
    [SerializeField] GameObject fightMark;
    [SerializeField] ScaleTween bossTween;
    [SerializeField] GameObject bossmask;   //完成进度遮挡管道 纯显示
    [SerializeField] GameObject bossActiveGo;
    [SerializeField] GameObject bitemeGo;
    [SerializeField] Text processText;
    //卡牌
    [SerializeField] HeroFightingCardCell[] heroFightingCardCells;
    [SerializeField] Button changeHeroPosBtn;
    //底部功能
    [SerializeField] Button autoBtn;
    [SerializeField] Image autoCloseImg;
    [SerializeField] UIEffectPlayer autoOpenEffect;
    [SerializeField] Button blessLVBtn;
    [SerializeField] Text blessLVText;
    [SerializeField] Button mailBtn;
    //右侧功能
    [SerializeField] Button funcColBtn;
    [SerializeField] RightFuncInHome rightFuncInHome;
    [SerializeField] Button FirstChargeBtn;
    [SerializeField] Button osMainLevelBtn;
    [SerializeField] Button osHeroCallBtn;
    [SerializeField] Button osGalaBtn;
    //坐骑
    [SerializeField] Image horseBGImg;
    [SerializeField] Button horseBtn;
    [SerializeField] HorseController horseImg;
    [SerializeField] Text horseLVText;
    //聊天
    [SerializeField] Button chatBtn;
    [SerializeField] Transform transFastChat;
    [SerializeField] InputField inputFastChat;
    [SerializeField] ButtonEx btnFastChatSend;
    [SerializeField] ImageEx imgFastChatSend;
    [SerializeField] TextEx txtFastChatSend;
    [SerializeField] ButtonEx btnFastChatClose;
    [SerializeField] ButtonEx btnChatWin;
    [SerializeField] TextEx txtChatChannel;
    //其他功能入口
    [SerializeField] Button monthCardBtn;
    [SerializeField] Transform transChatBulletView;
    GameObject chatBulletViewPrefab;
    /// <summary>
    /// 初始化组件
@@ -39,10 +94,7 @@
    protected override void InitComponent()
    {
        taskButton.AddListener(OnClickTaskButton);
        bossBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<MainBossEnterWin>();
        });
        bossBtn.AddListener(OnClickEnterBoss);
        changeHeroPosBtn.AddListener(() =>
        {
@@ -52,68 +104,262 @@
        autoBtn.AddListener(() =>
        {
            //测试拾取所有物品
            var items = PackManager.Instance.GetItems(PackType.DropItem);
            List<int> dropindexs = new List<int>();
            for (int i = 0; i < items.Count; i++)
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.AutoFight, true))
            {
                var item = items[i];
                if (dropindexs.Count > 5)
                {
                    EquipModel.Instance.NotifyItemDrop(dropindexs, BattleManager.Instance.storyBattleField.battleRootNode.blueTeamNodeList[Random.Range(0, 5)].GetComponent<RectTransform>());
                    dropindexs.Clear();
                }
                dropindexs.Add(item.gridIndex);
                return;
            }
            if (dropindexs.Count > 0)
            {
                EquipModel.Instance.NotifyItemDrop(dropindexs, BattleManager.Instance.storyBattleField.battleRootNode.blueTeamNodeList[Random.Range(0, 5)].GetComponent<RectTransform>());
                dropindexs.Clear();
            }
            UIManager.Instance.OpenWindow<AutoFightWin>();
        });
        monthCardBtn.AddListener(() =>
        FirstChargeBtn.AddListener(() =>
        {
            InvestModel.Instance.BuyInvest(InvestModel.monthCardType);
            UIManager.Instance.OpenWindow<FirstChargeWin>();
        });
        blessLVBtn.AddListener(() =>
        {
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BlessLV, true))
            {
                return;
            }
            UIManager.Instance.OpenWindow<BlessLVWin>();
        });
        mailBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<MailWin>();
        });
        officialUpBtn.AddListener(() =>
        {
            if (RealmConfig.GetKeys().Count <= PlayerDatas.Instance.baseData.realmLevel)
                return;
            UIManager.Instance.OpenWindow<OfficialUpWin>();
        });
        restBtn.AddListener(GotoRest);
        funcColBtn.AddListener(() =>
        {
            rightFuncInHome.ShowFuncCol(true);
        });
        horseBtn.AddListener(OpenHorse);
        chatBtn.SetListener(() =>
        {
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat, true))
                return;
            transFastChat.SetActive(true);
            chatBtn.SetActive(false);
            UpdateChat(ChatManager.Instance.nowChatTab);
        });
        btnFastChatClose.SetListener(() =>
        {
            transFastChat.SetActive(false);
            chatBtn.SetActive(true);
        });
        btnChatWin.SetListener(() =>
        {
            transFastChat.SetActive(false);
            chatBtn.SetActive(true);
            UIManager.Instance.OpenWindow<ChatWin>();
        });
        btnFastChatSend.SetListener(() =>
        {
            // 如果在聊天输入界面无输入文字点击发送,则关闭聊天输入界面
            if (string.IsNullOrEmpty(inputFastChat.text))
            {
                transFastChat.SetActive(false);
                chatBtn.SetActive(true);
                return;
            }
            if (!ChatManager.Instance.CheckChatLimit(inputFastChat.text, out int errorCode))
            {
                ChatManager.Instance.ShowChatErrorTip(errorCode);
                return;
            }
            ChatManager.Instance.SendChatInfo(ChatManager.Instance.nowChatChannel, inputFastChat.text);
            ChatManager.Instance.AddChatChannelSendTime(ChatManager.Instance.nowChatChannel, TimeUtility.AllSeconds);
            UpdateSendButton();
            inputFastChat.text = string.Empty;
        });
        osMainLevelBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<OSMainLevelBaseWin>();
        });
        osHeroCallBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<OSHeroCallBaseWin>();
        });
        osGalaBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<OSGalaBaseWin>();
        });
    }
    public override void Refresh()
    public void Display()
    {
        UpdatePlayerInfo();
        UpdateTask();
        RefreshRecharge();
        ShowBlessLV();
        DisplayAutoFight();
        DisplayCard(TeamType.Story);
        DisplayLevel();
        DisplayRestState();
        funcColBtn.SetActive(FuncOpen.Instance.IsFuncOpen(GeneralDefine.mainRightFuncOpenFuncID));
        officialTip.SetActive(OfficialRankManager.Instance.CanOfficialLVUP());
        DisplayHorse();
        DisplayChatBulletView();
        chatBtn.SetActive(true);
        transFastChat.SetActive(false);
        inputFastChat.characterLimit = ChatManager.Instance.characterLimit;
        UpdateSendButton();
    }
    protected override void OnPreOpen()
    {
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
        TaskManager.Instance.OnTaskUpdate += UpdateTask;
        Refresh();
        BlessLVManager.Instance.OnBlessLVUpdateEvent += ShowBlessLV;
        AutoFightModel.Instance.ChangeAutoEvent += DisplayAutoFight;
        AutoFightModel.Instance.OnFightEvent += ChangeMode;
        TeamManager.Instance.OnTeamChange += DisplayCard;
        UIManager.Instance.OnCloseWindow += OnCloseWindow;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
        FirstChargeManager.Instance.OnUpdateFirstChargeInfo += OnUpdateFirstChargeInfo;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        HeroUIManager.Instance.OnUnLockHeroCountEvent += OnUnLockHeroCountEvent;
        OfficialRankManager.Instance.OnOfficialCanLVUpEvent += OnOfficialCanLVUpEvent;
        FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent += OnFirstChargeTaskUpdateEvent;
        OfficialRankManager.Instance.RealmMissionRefreshEvent += OnOfficialCanLVUpEvent;
        HorseManager.Instance.OnHorseUpdateEvent += DisplayHorse;
        ChatManager.Instance.OnChatTabChangeEvent += OnChatTabChangeEvent;
        GuildManager.Instance.EnterOrQuitGuildEvent += EnterOrQuitGuildEvent;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        Display();
        DisplayFirstChargeBtn();
        DisplayOSActivity();
        // var battleWin = UIManager.Instance.OpenWindow<BattleWin>();
        // battleWin.SetBattleField(BattleManager.Instance.storyBattleField);
        DelayPlayMusic().Forget();
    }
    protected override void OnOpen()
    {
        base.OnOpen();
    }
    protected override void OnPreClose()
    {
        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
        TaskManager.Instance.OnTaskUpdate -= UpdateTask;
        BlessLVManager.Instance.OnBlessLVUpdateEvent -= ShowBlessLV;
        AutoFightModel.Instance.ChangeAutoEvent -= DisplayAutoFight;
        AutoFightModel.Instance.OnFightEvent -= ChangeMode;
        TeamManager.Instance.OnTeamChange -= DisplayCard;
        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
        FirstChargeManager.Instance.OnUpdateFirstChargeInfo -= OnUpdateFirstChargeInfo;
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        HeroUIManager.Instance.OnUnLockHeroCountEvent -= OnUnLockHeroCountEvent;
        OfficialRankManager.Instance.OnOfficialCanLVUpEvent -= OnOfficialCanLVUpEvent;
        FirstChargeManager.Instance.OnFirstChargeTaskUpdateEvent -= OnFirstChargeTaskUpdateEvent;
        OfficialRankManager.Instance.RealmMissionRefreshEvent -= OnOfficialCanLVUpEvent;
        HorseManager.Instance.OnHorseUpdateEvent -= DisplayHorse;
        ChatManager.Instance.OnChatTabChangeEvent -= OnChatTabChangeEvent;
        GuildManager.Instance.EnterOrQuitGuildEvent -= EnterOrQuitGuildEvent;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        //  关闭的时候把战斗界面也给关了 虽然是在外面开的
        UIManager.Instance.CloseWindow<BattleWin>();
    }
    private void UpdateSendButton()
    {
        bool isCanSend = ChatManager.Instance.IsCanSend(ChatManager.Instance.nowChatChannel, out int remainingSeconds);
        btnFastChatSend.interactable = isCanSend;
        imgFastChatSend.gray = !isCanSend;
        txtFastChatSend.text = isCanSend ? Language.Get("Chat11") : Language.Get("Chat14", remainingSeconds);
        txtFastChatSend.colorType = isCanSend ? TextColType.NavyBrown : TextColType.LightWhite;
    }
    private void EnterOrQuitGuildEvent(bool obj)
    {
        if (!obj)
        {
            UpdateChat(ChatManager.Instance.nowChatTab);
        }
    }
    private void OnChatTabChangeEvent(ChatTab tab)
    {
        UpdateChat(tab);
    }
    void UpdateChat(ChatTab tab)
    {
        txtChatChannel.text = ChatManager.Instance.GetChatTabName(tab);
    }
    void DisplayChatBulletView()
    {
        if (chatBulletViewPrefab == null)
        {
            chatBulletViewPrefab = UIUtility.CreateWidget("ChatBulletView", "ChatBulletView");
        }
        chatBulletViewPrefab.transform.SetParentEx(transChatBulletView.transform, Vector3.zero, Quaternion.identity, Vector3.one);
        // 新增:确保 ChatBulletView 组件启用
        // var chatBulletView = chatBulletViewPrefab.GetComponent<ChatBulletView>();
        // if (chatBulletView != null)
        // {
        //     chatBulletView.enabled = true;
        // }
    }
    void OnOfficialCanLVUpEvent()
    {
        officialTip.SetActive(OfficialRankManager.Instance.CanOfficialLVUP());
    }
    async UniTask DelayPlayMusic()
    {
        await UniTask.Delay(1200);
        if (!SoundPlayer.Instance.IsPlayBackGroundMuisic())
            SoundPlayer.Instance.PlayBackGroundMusic(38);
    }
    private void OnClickEnterBoss()
    {
        // BattleField battleField = BattleManager.Instance.GetBattleFieldByMapID(2); //BOSS战斗
        // if (null != battleField)
        // {
        //     StoryBossBattleWin fsBattleWin = UIManager.Instance.OpenWindow<StoryBossBattleWin>();
        //     fsBattleWin.SetBattleField(battleField);
        //     return;
        // }
        UIManager.Instance.OpenWindow<MainBossEnterWin>();
    }
    int lastLV = 0;
    void PlayerDataRefresh(PlayerDataType type)
    {
        switch (type)
@@ -123,7 +369,25 @@
                ShowExp();
                break;
            case PlayerDataType.LV:
                if (lastLV != PlayerDatas.Instance.baseData.LV)
                {
                    lastLV = PlayerDatas.Instance.baseData.LV;
                    lvUPEffect.Play();
                    fullEffect.Play(closePMA: true);
                    headEffect.Stop();
                }
                playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString();
                break;
            case PlayerDataType.ExAttr1:
            case PlayerDataType.ExAttr2:
                DisplayLevel();
                break;
            case PlayerDataType.RealmLevel:
                OnOfficialCanLVUpEvent();
                break;
            case PlayerDataType.EquipShowSwitch:
                DisplayHorse();
                break;
        }
@@ -131,8 +395,30 @@
    }
    void RefreshRecharge()
    {
        monthCardBtn.SetActive(!InvestModel.Instance.IsInvested(InvestModel.monthCardType));
    {
        //monthCardBtn.SetActive(!InvestModel.Instance.IsInvested(InvestModel.monthCardType));
    }
    void ShowBlessLV()
    {
        blessLVText.text = BlessLVManager.Instance.m_TreeLV.ToString();
    }
    void DisplayAutoFight()
    {
        if (AutoFightModel.Instance.isAutoAttackSet)
        {
            autoCloseImg.SetActive(false);
            autoOpenEffect.Play();
        }
        else
        {
            autoCloseImg.SetActive(true);
            autoOpenEffect.Stop();
        }
    }
    /// <summary>
@@ -141,20 +427,26 @@
    private void UpdatePlayerInfo()
    {
        playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString();
        ShowExp();
        headEffect.transform.localPosition = new Vector3(400 * expSlider.value - 200 - 24, 0, 0);
        ShowExp(false);
    }
    void ShowExp()
    void ShowExp(bool showEffect = true)
    {
        var lvConfig = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV);
        expSlider.value = (float)PlayerDatas.Instance.baseData.curExp / lvConfig.EXP;
        expSlider.Text.text = PlayerDatas.Instance.baseData.curExp + "/" + PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV).EXP;
        if (showEffect)
        {
            headEffect.transform.DOLocalMove(new Vector3(400 * expSlider.value - 200 - 24, 0, 0), 0.5f);
            headEffect.Play(closePMA: true);
        }
    }
    void UpdateTask()
    {
    {
        var task = TaskManager.Instance.mainTask;
        if (task.TaskID == 0)
        {
@@ -164,18 +456,25 @@
        {
            taskButton.SetActive(true);
            var taskConfig = TaskConfig.Get(task.TaskID);
            if (taskConfig == null)
            {
                Debug.LogError("找不到任务 " + task.TaskID);
                return;
            }
            taskText.text = taskConfig.TaskDescribe;
            taskNumText.text = string.Format("({0}/{1})", task.CurValue, taskConfig.NeedValue);
            taskNumText.color = task.CurValue >= taskConfig.NeedValue ? UIHelper.GetUIColor(TextColType.NavyYellow) :  UIHelper.GetUIColor(TextColType.Red);
            taskNumText.color = task.CurValue >= taskConfig.NeedValue ? UIHelper.GetUIColor(TextColType.NavyYellow) : UIHelper.GetUIColor(TextColType.Red);
            if (TaskManager.Instance.GetMainTaskState() == 2)
            {
            {
                taskEffect.Play();
            }
            else
            {
                taskEffect.Stop();
            }
            awardIcon.SetOrgSprite(ItemConfig.Get(taskConfig.AwardItemList[0][0]).IconKey);
            var config = ItemConfig.Get(taskConfig.AwardItemList[0][0]);
            awardIcon.SetOrgSprite(ItemConfig.Get(taskConfig.AwardItemList[0][0]).IconKey, GeneralDefine.itemIconDict.ContainsKey(config.Type) ? GeneralDefine.itemIconDict[config.Type] : "icon");
            awardCnt.text = taskConfig.AwardItemList[0][1].ToString();
        }
    }
@@ -189,10 +488,214 @@
            getReward.RewardType = 66;
            getReward.DataEx = (uint)TaskManager.Instance.mainTask.TaskID;
            GameNetSystem.Instance.SendInfo(getReward);
            return;
        }
        TaskManager.Instance.ClickTask();
    }
    void DisplayCard(TeamType teamType)
    {
        if (teamType != TeamType.Story)
            return;
        var team = TeamManager.Instance.GetTeam(teamType);
        var heros = team.GetHerosOnTeam();
        //显示卡牌
        for (int i = 0; i < heroFightingCardCells.Length; i++)
        {
            heroFightingCardCells[i].Display(i, heros);
        }
    }
    private void OnCloseWindow(UIBase closeUI)
    {
        //其他武将功能产生数据变化,需要刷新武将列表
        if (closeUI is HeroTrainWin)
        {
            DisplayCard(TeamType.Story);
        }
    }
    private void DisplayLevel()
    {
        var value = PlayerDatas.Instance.baseData.ExAttr2;
        var chapterID = value / 10000;
        var levelNum = value % 10000 / 100;
        var waveID = value % 100;
        var config = MainLevelConfig.GetMainLevelConfig(chapterID, levelNum);
        var totalWave = MainLevelConfig.GetwaveCount(config);
        for (int i = 0; i < mainLevelWaves.Length; i++)
        {
            if (i < totalWave)
            {
                mainLevelWaves[i].SetActive(true);
                mainLevelWaves[i].Display(i);
            }
            else
            {
                mainLevelWaves[i].SetActive(false);
            }
        }
        mainLevelScrollRect.normalizedPosition = new Vector2(waveID > 3 ? 1 : 0, 0);
        var chapterConfig = MainChapterConfig.Get(chapterID);
        //【普通】关卡名字1-6
        levelName.text = Language.Get("mainui7", chapterConfig.Level, chapterConfig.ChapterName, chapterID, levelNum);
        bool canChallengeBoss = MainLevelManager.Instance.CanChallengeBoss();
        //BOSS
        if (canChallengeBoss)
        {
            bossActiveGo.SetActive(true);
            processText.SetActive(false);
            bossTween.Play();
            bitemeGo.SetActive(true);
            bossmask.SetActive(true);
        }
        else
        {
            //根据任务类型引导
            bossActiveGo.SetActive(false);
            processText.SetActive(true);
            processText.text = (waveID - 1) * 100 / totalWave + "%";
            bossTween.Stop();
            bitemeGo.SetActive(false);
            bossmask.SetActive(false);
        }
    }
    void DisplayRestState()
    {
        if (BattleManager.Instance.storyBattleField != null &&
            BattleManager.Instance.storyBattleField.GetBattleMode() == BattleMode.Stop)
        {
            //休息中
            restMark.SetActive(true);
            fightMark.SetActive(false);
        }
        else
        {
            //战斗中
            restMark.SetActive(false);
            fightMark.SetActive(true);
        }
    }
    void ChangeMode(bool isFight)
    {
        if (isFight)
            return;
        DisplayRestState();
        DisplayLevel();
    }
    void GotoRest()
    {
        if (BattleManager.Instance.storyBattleField != null &&
            BattleManager.Instance.storyBattleField.GetBattleMode() != BattleMode.Stop)
        {
            BattleManager.Instance.storyBattleField.HaveRest();
        }
    }
}
    private void DisplayFirstChargeBtn()
    {
        bool isFuncOpen = FirstChargeManager.Instance.IsFuncOpen();
        bool isAllHave = FirstChargeManager.Instance.IsAllFirstChargeRewardsClaimed();
        bool isNextDay = FirstChargeManager.Instance.IsNextDayAfterAllClaimed();
        if (isAllHave && isNextDay)
        {
            FirstChargeBtn.SetActive(false);
        }
        else
        {
            FirstChargeBtn.SetActive(isFuncOpen);
        }
    }
    private void OnFirstChargeTaskUpdateEvent()
    {
        DisplayFirstChargeBtn();
    }
    private void OnFuncStateChange(int funcId)
    {
        if (funcId == GeneralDefine.mainRightFuncOpenFuncID)
        {
            funcColBtn.SetActive(FuncOpen.Instance.IsFuncOpen(GeneralDefine.mainRightFuncOpenFuncID));
        }
        else if (funcId == (int)FuncOpenEnum.Horse)
        {
            DisplayHorse();
        }
        else if (funcId == (int)FuncOpenEnum.OSMainLevl || funcId == (int)FuncOpenEnum.OSHeroCall
        || funcId == (int)FuncOpenEnum.OSGala)
        {
            DisplayOSActivity();
        }
    }
    private void OnUpdateFirstChargeInfo()
    {
        DisplayFirstChargeBtn();
    }
    private void OnSecondEvent()
    {
        DisplayFirstChargeBtn();
        UpdateSendButton();
    }
    void OnUnLockHeroCountEvent()
    {
        DisplayCard(TeamType.Story);
    }
    void DisplayHorse()
    {
        if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Horse))
        {
            horseBGImg.SetActive(true);
            //equipShowSwitch;//当前配置的坐骑外观ID存储在(最大支持 1~999)
            var skinConfig = HorseSkinConfig.Get(HorseManager.Instance.GetUsingHorseSkinID(true));
            horseImg.Create(skinConfig.SkinID, 0, 0.6f);
            horseLVText.text = Language.Get("Horse8", HorseManager.Instance.classLV, HorseManager.Instance.horseLV);
        }
        else
        {
            horseBGImg.SetActive(false);
        }
    }
    void OpenHorse()
    {
        if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Horse, true))
        {
            UIManager.Instance.OpenWindow<HorseWin>();
        }
    }
    void DisplayOSActivity()
    {
        osMainLevelBtn.SetActive(OSActivityManager.Instance.IsOpened(3));
        osHeroCallBtn.SetActive(OSActivityManager.Instance.IsOpened(4));
        osGalaBtn.SetActive(OSActivityManager.Instance.IsOpenedOSGala());
    }
    void OnDayEvent()
    {
        DisplayOSActivity();
    }
}