//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, September 07, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using TableConfig; 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 _FriendsBtn;//好友按钮 [SerializeField] Button _BackPack1Btn;//背包按钮 [SerializeField] Button _SetupBtn; [SerializeField] GameObject _OneKeyBtnImg;//地图挂机 [SerializeField] GameObject AutoImg;//原地挂机 [SerializeField] Button m_TaskBtn;//任务按钮 [SerializeField] Button m_TeamBtn;//队伍按钮 [SerializeField] Button m_RealmBtn;//境界按钮 [SerializeField] Image m_RealmLV;//境界等级 [SerializeField] RedpointBehaviour m_RealmRed; [SerializeField] UIEffect m_RealmSfx; [SerializeField] FairyFeastBehaviour m_FairyFeast; List OneKeyList = new List(); TeamModel m_Model; TeamModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } RealmModel realmModel { get { return ModelCenter.Instance.GetModel(); } } CoinTaskTipModel m_CoinTaskTip; CoinTaskTipModel coinTaskTip { get { return m_CoinTaskTip ?? (m_CoinTaskTip = ModelCenter.Instance.GetModel()); } } public void Init() { OneKeyList.Clear(); var funconfig = Config.Instance.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; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418) RedpointCenter.Instance.redpointValueChangeEvent += RedpointValueChangeEvent; m_FairyFeast.Init(); _MailBtn.onClick.AddListener(MailButton); _OneKeyBtn.onClick.AddListener(OneKeyButton); _AutoBtn.onClick.AddListener(AutoButton); _FriendsBtn.onClick.AddListener(TeamBtn); _BackPack1Btn.onClick.AddListener(BackPack1Buton); _SetupBtn.onClick.AddListener(OnSetBtn); m_TaskBtn.AddListener(TaskButton); m_TeamBtn.AddListener(FriendsButton); m_RealmBtn.AddListener(OnRealmButton); myTeamRefreshEvent(); OnRefreshFairyInfo(); CheckRealmSfx(); if (PlayerDatas.Instance.hero != null) { if (PlayerDatas.Instance.hero.aiHandler.IsAuto()) { OnHeroHandupAIStopPassive(); } } MailCountChange(); GetRealmLevel(); } 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(); } if ((FuncOpenEnum)_type == FuncOpenEnum.Realm) { GetRealmLevel(); } } private void MailCountChange() { 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 GetRealmLevel()//关于境界 { int realmLevel = PlayerDatas.Instance.baseData.realmLevel; var realmConfig = Config.Instance.Get(realmLevel); if (FuncOpen.Instance.IsFuncOpen(12)) { if (realmConfig != null && realmConfig.Lv > 0) { m_RealmLV.SetSprite(realmConfig.Img); } else { m_RealmLV.SetSprite("NoRealm"); } } else { m_RealmLV.SetSprite("NoRealm"); } } public void CheckRealmSfx() { var _model = ModelCenter.Instance.GetModel(); if (_model.IsDungeonState && realmModel.realmRedpoint.state == RedPointState.Simple) { m_RealmRed.gameObject.SetActive(false); if (!m_RealmSfx.IsPlaying) { m_RealmSfx.Play(); } } else { m_RealmRed.gameObject.SetActive(true); } } 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 TeamBtn() { 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; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418) RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent; m_FairyFeast.UnInit(); m_RealmBtn.RemoveAllListeners(); _MailBtn.onClick.RemoveAllListeners(); _OneKeyBtn.onClick.RemoveAllListeners(); _AutoBtn.onClick.RemoveAllListeners(); _FriendsBtn.onClick.RemoveAllListeners(); _BackPack1Btn.onClick.RemoveAllListeners(); _SetupBtn.onClick.RemoveAllListeners(); m_TeamBtn.RemoveAllListeners(); m_TaskBtn.RemoveAllListeners(); } private void RedpointValueChangeEvent(int _id) { if (_id == realmModel.realmRedpoint.id) { CheckRealmSfx(); } } 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.CheckOpen()) { WindowCenter.Instance.Open(true); } } else { AutoImg.SetActive(true); if (WindowCenter.Instance.CheckOpen()) { WindowCenter.Instance.CloseImmediately(); } } } void FriendsButton() { //MainRedDot.Instance.redPointFriendChat.state = RedPointState.None; //ChatCtrl.Inst.presentChatType = ChatInfoType.Friend; //WindowCenter.Instance.Open(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.Open(); } void TeamChatButton() { SysNotifyMgr.Instance.ShowTip("UnopenedFunction"); } void TongVoiceButton() { SysNotifyMgr.Instance.ShowTip("UnopenedFunction"); } private void OnRealmButton() { WindowCenter.Instance.Open(); WindowCenter.Instance.Close(); } 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 (OneKeyList.Contains(PlayerDatas.Instance.baseData.MapID)) { var dataMapId = modelD.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var config = Config.Instance.Get(dataMapId); string language = string.Empty; if (dataMapId == GeneralConfig.Instance.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 = Config.Instance.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 = Config.Instance.Get(point); var flyBootOwn = ModelCenter.Instance.GetModel().GetItemCountByID(PackType.rptItem, GeneralConfig.Instance.flyBootItemId); var isVipFreeTransfer = ModelCenter.Instance.GetModel().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0; if (isVipFreeTransfer || flyBootOwn > 0) { MapTransferUtility.Instance.MissionFlyTo(config.MapID, config.NPCID); } else { 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.CheckOpen()) { WindowCenter.Instance.Open(true); } _hero.Behaviour.StartHandupAI(); } else { if (WindowCenter.Instance.CheckOpen()) { WindowCenter.Instance.CloseImmediately(); } _hero.Behaviour.StopHandupAI(); } } 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 = Config.Instance.Get(mapId); return mapConfig != null && mapConfig.MapFBType != 0; } void Updatefighting(PlayerDataRefresh _tCDBPlayerRefresh)//数据的刷新 { switch (_tCDBPlayerRefresh) { case PlayerDataRefresh.OfficialRank: GetRealmLevel(); break; } } } }