//-------------------------------------------------------- // [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 OneKeyList = new List(); TeamModel teamModel { get { return ModelCenter.Instance.GetModel(); } } CoinTaskTipModel coinTaskTip { get { return ModelCenter.Instance.GetModel(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } PlayerMainDate main { get { return ModelCenter.Instance.GetModel(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel(); } } OffLineOnHookModel offLineOnHookModel { get { return ModelCenter.Instance.GetModel(); } } void Awake() { var funconfig = FuncConfigConfig.Get("OneKeyBtnMap"); OneKeyList.AddRange(ConfigParse.GetMultipleStr(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(); }); 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 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(); WindowCenter.Instance.Open(false, 2); } private void TaskButton() { WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); if (coinTaskTip.IsPopup) { coinTaskTip.IsPopup = false; } } private void OpenTeam() { WindowCenter.Instance.Close(); if (teamModel.myTeam.inTeam) { WindowCenter.Instance.Open(false, 1); } else { WindowCenter.Instance.Open(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()) { WindowCenter.Instance.Open(true); } } else { if (m_ImgAuto.gameObject.activeSelf) { m_ImgAuto.SetActive(false); } if (!m_ImgUnAuto.gameObject.activeSelf) { m_ImgUnAuto.SetActive(true); } if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } } } void FriendsButton() { WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); } void MailButton()//邮件按钮 { WindowCenter.Instance.Open(); WindowCenter.Instance.Close(); } void OneKeyButton()//打开协助按钮 { WindowCenter.Instance.Open(); } 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(); 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); } } } } }