//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, September 07, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.Collections.Generic; //聊天面板 namespace Snxxz.UI { public class ChatFrame : MonoBehaviour { [SerializeField] VoiceRecorder _TongVoiceBtn;//盟语音 [SerializeField] VoiceRecorder _TeamChatBtn;//队语音 [SerializeField] Button _MailBtn;//邮件按钮 [SerializeField] Button _OneKeyBtn;//地图挂机 [SerializeField] Button _AutoBtn;//自动挂机 [SerializeField] Button _BackPack1Btn;//背包按钮 [SerializeField] Button _SetupBtn; [SerializeField] GameObject _OneKeyBtnImg;//地图挂机 [SerializeField] GameObject AutoImg;//原地挂机 [SerializeField] Button m_TaskBtn;//任务按钮 [SerializeField] Button m_SocialBtn;//社交按钮 [SerializeField] Button m_TeamBtn;//队伍按钮 List OneKeyList = new List(); TeamModel model { get { return ModelCenter.Instance.GetModel(); } } CoinTaskTipModel coinTaskTip { get { return ModelCenter.Instance.GetModel(); } } public void Init() { OneKeyList.Clear(); var funconfig = FuncConfigConfig.Get("OneKeyBtnMap"); int[] Listmap = ConfigParse.GetMultipleStr(funconfig.Numerical1); for (int i = 0; i < Listmap.Length; i++) { OneKeyList.Add(Listmap[i]); } MailAllModel.Instance.MailCntChangeEvent += MailCountChange; model.myTeamRefreshEvent += myTeamRefreshEvent; HeroBehaviour.OnStopHandupAI += OnHeroHandupAIStopPassive; HeroBehaviour.OnStartHandupAI += OnHeroHandupAIStarted; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; _TongVoiceBtn.voiceRecordSuccessEvent += OnVoiceRecordFairySuccessEvent; _TeamChatBtn.voiceRecordSuccessEvent += OnVoiceRecordTeamSuccessEvent; _MailBtn.SetListener(MailButton); _OneKeyBtn.SetListener(OneKeyButton); _AutoBtn.SetListener(AutoButton); _BackPack1Btn.SetListener(BackPack1Buton); _SetupBtn.SetListener(OnSetBtn); m_TaskBtn.SetListener(TaskButton); m_SocialBtn.SetListener(FriendsButton); m_TeamBtn.SetListener(OpenTeam); myTeamRefreshEvent(); OnRefreshFairyInfo(); MailCountChange(); if (PlayerDatas.Instance.hero != null) { if (PlayerDatas.Instance.hero.aiHandler.IsAuto()) { OnHeroHandupAIStopPassive(); } } } public void OnAfterOpen() { var inDungeon = IsDungeon(); int MapId = PlayerDatas.Instance.baseData.MapID; if (inDungeon) { m_TaskBtn.gameObject.SetActive(false); if (OneKeyList.Contains(MapId)) { _OneKeyBtnImg.SetActive(true); } else { _OneKeyBtnImg.SetActive(false); } } else { m_TaskBtn.gameObject.SetActive(true); _OneKeyBtnImg.SetActive(true); } } private void OnVoiceRecordTeamSuccessEvent(int _instId, float _seconds) { ModelCenter.Instance.GetModel().SetVoice(_instId, ChatInfoType.Team, _seconds); } private void OnVoiceRecordFairySuccessEvent(int _instId, float _seconds) { ModelCenter.Instance.GetModel().SetVoice(_instId, ChatInfoType.Fairy, _seconds); } private void OnFuncStateChangeEvent(int _type) { if ((FuncOpenEnum)_type == FuncOpenEnum.Chat) { OnRefreshFairyInfo(); myTeamRefreshEvent(); } } private void MailCountChange() { if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne) { _MailBtn.gameObject.SetActive(false); return; } List maillist = MailAllModel.Instance.GetTimeOrderMaillist(); bool isShowMail = false; if (maillist != null && PreFightMission.Instance.IsFinished()) { for (int i = 0; i < maillist.Count; i++) { if (maillist[i].IsRead == 0) { isShowMail = true; break; } else { if (maillist[i].Gold > 0 || maillist[i].GoldPaper > 0 || maillist[i].Silver > 0 || maillist[i].Count > 0) { isShowMail = true; break; } } } } _MailBtn.gameObject.SetActive(isShowMail); } private void OnSetBtn() { WindowCenter.Instance.Close(); WindowCenter.Instance.Open(false, 3); } private void TaskButton() { WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); if (coinTaskTip.IsPopup) { coinTaskTip.IsPopup = false; } } private void OpenTeam() { WindowCenter.Instance.Close(); if (model.myTeam.inTeam) { WindowCenter.Instance.Open(false, 1); } else { WindowCenter.Instance.Open(false, 0); } } public void UnInit() { _TongVoiceBtn.voiceRecordSuccessEvent -= OnVoiceRecordFairySuccessEvent; _TeamChatBtn.voiceRecordSuccessEvent -= OnVoiceRecordTeamSuccessEvent; model.myTeamRefreshEvent -= myTeamRefreshEvent; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; HeroBehaviour.OnStopHandupAI -= OnHeroHandupAIStopPassive; HeroBehaviour.OnStartHandupAI -= OnHeroHandupAIStarted; MailAllModel.Instance.DeleteMailEvent -= MailCountChange; } private void OnRefreshFairyInfo() { _TongVoiceBtn.gameObject.SetActive(PlayerDatas.Instance.fairyData.HasFairy && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat)); } private void myTeamRefreshEvent() { _TeamChatBtn.gameObject.SetActive(model.myTeam.inTeam && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat)); } private void LateUpdate() { if (PlayerDatas.Instance.hero == null || PlayerDatas.Instance.hero.aiHandler == null) { return; } if (PlayerDatas.Instance.hero.aiHandler.IsAuto()) { AutoImg.SetActive(false); if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(true); } } else { AutoImg.SetActive(true); if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } } } void FriendsButton() { WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); } void TeamChatButton() { SysNotifyMgr.Instance.ShowTip("UnopenedFunction"); } void TongVoiceButton() { SysNotifyMgr.Instance.ShowTip("UnopenedFunction"); } void MailButton()//邮件按钮 { WindowCenter.Instance.Open(); WindowCenter.Instance.Close(); } DungeonModel modelD { get { return ModelCenter.Instance.GetModel(); } } PlayerMainDate main { get { return ModelCenter.Instance.GetModel(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel(); } } void OneKeyButton()//地图挂机按钮 { if (CrossServerUtility.IsCrossServerBoss()) { SysNotifyMgr.Instance.ShowTip("CrossMap10"); return; } if (OneKeyList.Contains(PlayerDatas.Instance.baseData.MapID)) { var dataMapId = modelD.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var config = DungeonOpenTimeConfig.Get(dataMapId); string language = string.Empty; if (dataMapId == GeneralDefine.ruinsTranscriptMapId) { language = Language.Get(modelD.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 = modelD.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); } 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 flyBootOwn = ModelCenter.Instance.GetModel().GetItemCountByID(PackType.Item, GeneralDefine.flyBootItemId); var isVipFreeTransfer = ModelCenter.Instance.GetModel().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0; if (isVipFreeTransfer || flyBootOwn > 0) { if (PlayerDatas.Instance.extersion.bossState == 1) { SysNotifyMgr.Instance.ShowTip("Task_Transfer1"); return; } MapTransferUtility.Instance.MissionFlyTo(config.MapID, config.NPCID); } else { if (PlayerDatas.Instance.extersion.bossState == 1) { SysNotifyMgr.Instance.ShowTip("Task_Transfer1"); return; } MapTransferUtility.Instance.MoveToNPC(config.NPCID); } } void AutoButton()//原地挂机按钮 { var _hero = PlayerDatas.Instance.hero; if (_hero != null && !_hero.ActorInfo.serverDie) { if (!_hero.aiHandler.IsAuto()) { if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(true); } _hero.Behaviour.StartHandupAI(); } else { if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } _hero.Behaviour.StopHandupAI(true); } } AutoImg.SetActive(!AutoImg.activeSelf); } void BackPack1Buton()//背包按钮 { WindowCenter.Instance.Open(); WindowCenter.Instance.Close(); } void OnHeroHandupAIStopPassive() { if (!AutoImg.activeSelf) { AutoImg.SetActive(true); } } void OnHeroHandupAIStarted() { if (AutoImg.activeSelf) { AutoImg.SetActive(false); } } private bool IsDungeon()//判断是否再副本中 { var mapId = PlayerDatas.Instance.baseData.MapID; var mapConfig = MapConfig.Get(mapId); return mapConfig != null && mapConfig.MapFBType != 0; } } }