//--------------------------------------------------------  
 | 
//    [Author]:           第二世界  
 | 
//    [  Date ]:           Thursday, September 07, 2017  
 | 
//--------------------------------------------------------  
 | 
using UnityEngine;  
 | 
using System.Collections;  
 | 
using UnityEngine.UI;  
 | 
using System;  
 | 
  
 | 
using System.Collections.Generic;  
 | 
//聊天面板  
 | 
  
 | 
namespace vnxbqy.UI  
 | 
{  
 | 
  
 | 
    public class ChatFrame : MonoBehaviour  
 | 
    {  
 | 
        [SerializeField] Button _MailBtn;//邮件按钮  
 | 
        [SerializeField] Button _OneKeyBtn;//协助界面  
 | 
        [SerializeField] Button _AutoBtn;//自动挂机    
 | 
        [SerializeField] Button _SetupBtn;  
 | 
  
 | 
        [SerializeField] Image m_ImgAuto;//原地挂机  
 | 
        [SerializeField] Image m_ImgUnAuto;  
 | 
  
 | 
        [SerializeField] Button m_TaskBtn;//任务按钮  
 | 
        [SerializeField] Button m_SocialBtn;//社交按钮  
 | 
        [SerializeField] Button m_TeamBtn;//队伍按钮  
 | 
  
 | 
        [SerializeField] RectTransform m_ContainerVoice;  
 | 
        [SerializeField] Button m_Voice;  
 | 
        [SerializeField] VoiceWidget m_VoiceWidget;  
 | 
        [SerializeField] Button onHookBtn;  
 | 
        [SerializeField] Slider onHookSlider;  
 | 
  
 | 
        List<int> OneKeyList = new List<int>();  
 | 
  
 | 
        TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }  
 | 
        CoinTaskTipModel coinTaskTip { get { return ModelCenter.Instance.GetModel<CoinTaskTipModel>(); } }  
 | 
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }  
 | 
        PlayerMainDate main { get { return ModelCenter.Instance.GetModel<PlayerMainDate>(); } }  
 | 
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }  
 | 
        OffLineOnHookModel offLineOnHookModel { get { return ModelCenter.Instance.GetModel<OffLineOnHookModel>(); } }  
 | 
  
 | 
        void Awake()  
 | 
        {  
 | 
            var funconfig = FuncConfigConfig.Get("OneKeyBtnMap");  
 | 
            OneKeyList.AddRange(ConfigParse.GetMultipleStr<int>(funconfig.Numerical1));  
 | 
        }  
 | 
  
 | 
        public void Init()  
 | 
        {  
 | 
            MailAllModel.Instance.MailCntChangeEvent += MailCountChange;  
 | 
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;  
 | 
            offLineOnHookModel.onHookTimeEvent += ShowOnHookSlider;  
 | 
  
 | 
            _MailBtn.SetListener(MailButton);  
 | 
            _OneKeyBtn.SetListener(OneKeyButton);  
 | 
            _AutoBtn.SetListener(AutoButton);  
 | 
            _SetupBtn.SetListener(OnSetBtn);  
 | 
            m_TaskBtn.SetListener(TaskButton);  
 | 
            m_SocialBtn.SetListener(FriendsButton);  
 | 
            m_TeamBtn.SetListener(OpenTeam);  
 | 
            m_Voice.SetListener(OpenVoice);  
 | 
            onHookBtn.SetListener(() => {  
 | 
                WindowCenter.Instance.Open<OffLineOnHookWin>();  
 | 
            });  
 | 
  
 | 
            MailCountChange();  
 | 
            UpdateVoiceState();  
 | 
            m_VoiceWidget.Init();  
 | 
            ShowOnHookSlider();  
 | 
        }  
 | 
  
 | 
        public void UnInit()  
 | 
        {  
 | 
            m_VoiceWidget.Init();  
 | 
            teamModel.myTeamRefreshEvent -= UpdateVoiceState;  
 | 
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= UpdateVoiceState;  
 | 
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;  
 | 
            MailAllModel.Instance.MailCntChangeEvent -= MailCountChange;  
 | 
            offLineOnHookModel.onHookTimeEvent -= ShowOnHookSlider;  
 | 
        }  
 | 
  
 | 
        public void OnAfterOpen()  
 | 
        {  
 | 
            var mapId = PlayerDatas.Instance.baseData.MapID;  
 | 
            var inDungeon = MapUtility.IsDungeon(mapId);  
 | 
  
 | 
            m_TaskBtn.SetActive(false);  
 | 
            _OneKeyBtn.SetActive(true);  
 | 
        }  
 | 
  
 | 
        private void OnFuncStateChangeEvent(int _type)  
 | 
        {  
 | 
            if ((FuncOpenEnum)_type == FuncOpenEnum.Chat)  
 | 
            {  
 | 
                UpdateVoiceState();  
 | 
            }  
 | 
        }  
 | 
  
 | 
          
 | 
        private void MailCountChange()  
 | 
        {  
 | 
            if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne  
 | 
                || ArenaManager.IsArenaStage())  
 | 
            {   
 | 
                _MailBtn.SetActive(false);  
 | 
                return;  
 | 
            }  
 | 
            List<MailInfo> maillist = MailAllModel.Instance.GetTimeOrderMaillist();  
 | 
            bool isShowMail = false;  
 | 
  
 | 
            if (maillist != null && PreFightMission.Instance.IsFinished())  
 | 
            {  
 | 
                  
 | 
                if (maillist.Count > 0) isShowMail = true;  
 | 
            }  
 | 
  
 | 
            if (maillist.Count > MailAllModel.Instance.notifyMailCnt)  
 | 
            {  
 | 
                SysNotifyMgr.Instance.ShowTip("MailTooMush");  
 | 
            }  
 | 
            _MailBtn.SetActive(isShowMail);  
 | 
        }  
 | 
  
 | 
        private void OnSetBtn()  
 | 
        {  
 | 
            WindowCenter.Instance.Close<MainInterfaceWin>();  
 | 
            WindowCenter.Instance.Open<SettingUpWin>(false, 2);  
 | 
        }  
 | 
  
 | 
        private void TaskButton()  
 | 
        {  
 | 
            WindowCenter.Instance.Close<MainInterfaceWin>();  
 | 
            WindowCenter.Instance.Open<TaskWin>();  
 | 
            if (coinTaskTip.IsPopup)  
 | 
            {  
 | 
                coinTaskTip.IsPopup = false;  
 | 
            }  
 | 
        }  
 | 
  
 | 
        private void OpenTeam()  
 | 
        {  
 | 
            WindowCenter.Instance.Close<MainInterfaceWin>();  
 | 
            if (teamModel.myTeam.inTeam)  
 | 
            {  
 | 
                WindowCenter.Instance.Open<TeamFrameWin>(false, 1);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                WindowCenter.Instance.Open<TeamFrameWin>(false, 0);  
 | 
            }  
 | 
        }  
 | 
  
 | 
        private void OpenVoice()  
 | 
        {  
 | 
            m_VoiceWidget.Show();  
 | 
        }  
 | 
  
 | 
        private void UpdateVoiceState()  
 | 
        {  
 | 
            var chatable = FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat);  
 | 
            var guildVoiceEnable = false;  
 | 
            var teamVoiceEnable = false;  
 | 
  
 | 
            if (chatable)  
 | 
            {  
 | 
                guildVoiceEnable = PlayerDatas.Instance.fairyData.HasFairy;  
 | 
                teamVoiceEnable = teamModel.myTeam.inTeam;  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                guildVoiceEnable = false;  
 | 
                teamVoiceEnable = false;  
 | 
            }  
 | 
  
 | 
            m_ContainerVoice.SetActive(false);//(chatable && (guildVoiceEnable || teamVoiceEnable));  
 | 
        }  
 | 
  
 | 
        private void LateUpdate()  
 | 
        {  
 | 
            var isAuto = PlayerDatas.Instance.hero != null  
 | 
                && PlayerDatas.Instance.hero.aiHandler != null && PlayerDatas.Instance.hero.aiHandler.IsAuto();  
 | 
  
 | 
            if (isAuto)  
 | 
            {  
 | 
                if (!m_ImgAuto.gameObject.activeSelf)  
 | 
                {  
 | 
                    m_ImgAuto.SetActive(true);  
 | 
                }  
 | 
  
 | 
                if (m_ImgUnAuto.gameObject.activeSelf)  
 | 
                {  
 | 
                    m_ImgUnAuto.SetActive(false);  
 | 
                }  
 | 
  
 | 
                if (!WindowCenter.Instance.IsOpen<ExperienceOpenWin>())  
 | 
                {  
 | 
                    WindowCenter.Instance.Open<ExperienceOpenWin>(true);  
 | 
                }  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                if (m_ImgAuto.gameObject.activeSelf)  
 | 
                {  
 | 
                    m_ImgAuto.SetActive(false);  
 | 
                }  
 | 
  
 | 
                if (!m_ImgUnAuto.gameObject.activeSelf)  
 | 
                {  
 | 
                    m_ImgUnAuto.SetActive(true);  
 | 
                }  
 | 
  
 | 
                if (WindowCenter.Instance.IsOpen<ExperienceOpenWin>())  
 | 
                {  
 | 
                    WindowCenter.Instance.Close<ExperienceOpenWin>();  
 | 
                }  
 | 
  
 | 
            }  
 | 
        }  
 | 
  
 | 
        void FriendsButton()  
 | 
        {  
 | 
            WindowCenter.Instance.Close<MainInterfaceWin>();  
 | 
            WindowCenter.Instance.Open<SocialWin>();  
 | 
        }  
 | 
  
 | 
        void MailButton()//邮件按钮  
 | 
        {  
 | 
            WindowCenter.Instance.Open<MailFrameWin>();  
 | 
            WindowCenter.Instance.Close<MainInterfaceWin>();  
 | 
        }  
 | 
  
 | 
        void OneKeyButton()//打开协助按钮  
 | 
        {  
 | 
            WindowCenter.Instance.Open<DungeonAssistWin>();  
 | 
        }  
 | 
  
 | 
  
 | 
        void ShowOnHookSlider()  
 | 
        {   
 | 
            //最小0.1太短不显示问题  
 | 
            onHookSlider.value = Mathf.Max(0.1f, offLineOnHookModel.mCTJGInfoClass.AwardSeconds/60.0f/ (offLineOnHookModel.GetMaxOnHookTimeWithRealm()*60));  
 | 
        }  
 | 
  
 | 
        //一键挂机  
 | 
        //{  
 | 
        //    if (CrossServerUtility.IsCrossServerBoss())  
 | 
        //    {  
 | 
        //        SysNotifyMgr.Instance.ShowTip("CrossMap10");  
 | 
        //        return;  
 | 
        //    }  
 | 
  
 | 
        //    if (OneKeyList.Contains(PlayerDatas.Instance.baseData.MapID))  
 | 
        //    {  
 | 
        //        var dataMapId = MapUtility.GetDataMapId();  
 | 
        //        var config = DungeonOpenTimeConfig.Get(dataMapId);  
 | 
        //        string language = string.Empty;  
 | 
        //        if (dataMapId == GeneralDefine.ruinsTranscriptMapId)  
 | 
        //        {  
 | 
        //            language = Language.Get(dungeonModel.mission.lineID > main.LayerNumberNow ? "WHMJ_Quit2" : "WHMJ_Quit1");  
 | 
        //        }  
 | 
        //        else if (dataMapId == BossHomeModel.BOSSHOME_MAPID)  
 | 
        //        {  
 | 
        //            var vipLevel = PlayerDatas.Instance.baseData.VIPLv;  
 | 
        //            var vipNeed = bossHomeModel.GetFloorVipRequirement(PlayerDatas.Instance.baseData.dungeonLineId + 1);  
 | 
        //            var dungeonId = dungeonModel.GetDungeonId(dataMapId, PlayerDatas.Instance.baseData.dungeonLineId);  
 | 
        //            var dungeonConfig = DungeonConfig.Get(dungeonId);  
 | 
  
 | 
        //            if (vipLevel < vipNeed)  
 | 
        //            {  
 | 
        //                var moneyNeed = bossHomeModel.GetVipLackCost(PlayerDatas.Instance.baseData.dungeonLineId + 1);  
 | 
        //                language = Language.Get("QuitRemindBossHome", dungeonConfig.FBName, vipNeed, moneyNeed);  
 | 
        //            }  
 | 
        //            else  
 | 
        //            {  
 | 
        //                //language = Language.Get(config.ExitDescription);  
 | 
        //            }  
 | 
        //        }  
 | 
        //        else  
 | 
        //        {  
 | 
        //            language = Language.Get(config.ExitDescription);  
 | 
        //        }  
 | 
  
 | 
        //        if (language == string.Empty)  
 | 
        //        {  
 | 
        //            GoToOneKeyButton();  
 | 
        //        }  
 | 
        //        else {  
 | 
        //            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),  
 | 
        //               language, (bool isOk) =>  
 | 
        //               {  
 | 
        //                   if (isOk)  
 | 
        //                   {  
 | 
        //                       GoToOneKeyButton();  
 | 
        //                   }  
 | 
        //               }  
 | 
        //            );  
 | 
        //        }  
 | 
  
 | 
        //    }  
 | 
        //    else  
 | 
        //    {  
 | 
        //        GoToOneKeyButton();  
 | 
        //    }  
 | 
        //}  
 | 
  
 | 
        void GoToOneKeyButton()  
 | 
        {  
 | 
  
 | 
            var mapModel = ModelCenter.Instance.GetModel<MapModel>();  
 | 
            var point = mapModel.GetRecommendHangPoint();  
 | 
            var config = MapEventPointConfig.Get(point);  
 | 
  
 | 
            var mapId = MapUtility.GetMapId(config.DataMapID, config.LineId);  
 | 
            MapTransferUtility.Instance.MissionFlyTo(mapId, config.NPCID, MapTransferType.WorldTransport);  
 | 
  
 | 
        }  
 | 
  
 | 
        void AutoButton()//原地挂机按钮  
 | 
        {  
 | 
            var hero = PlayerDatas.Instance.hero;  
 | 
            if (hero != null && !hero.ActorInfo.serverDie)  
 | 
            {  
 | 
                if (!hero.aiHandler.IsAuto())  
 | 
                {  
 | 
                    hero.Behaviour.StartHandupAI();  
 | 
                }  
 | 
                else  
 | 
                {  
 | 
                    hero.Behaviour.StopHandupAI(true);  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
    }  
 | 
  
 | 
  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 |