//--------------------------------------------------------
|
// [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<int> OneKeyList = new List<int>();
|
TeamModel m_Model;
|
TeamModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TeamModel>()); } }
|
RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
|
CoinTaskTipModel m_CoinTaskTip;
|
CoinTaskTipModel coinTaskTip { get { return m_CoinTaskTip ?? (m_CoinTaskTip = ModelCenter.Instance.GetModel<CoinTaskTipModel>()); } }
|
public void Init()
|
{
|
OneKeyList.Clear();
|
var funconfig = Config.Instance.Get<FuncConfigConfig>("OneKeyBtnMap");
|
int[] Listmap = ConfigParse.GetMultipleStr<int>(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<ChatCenter>().SetVoice(_instId, ChatInfoType.Team, _seconds);
|
}
|
|
private void OnVoiceRecordFairySuccessEvent(int _instId, float _seconds)
|
{
|
ModelCenter.Instance.GetModel<ChatCenter>().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<MailInfo> 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<RealmConfig>(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<RealmModel>();
|
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<MainInterfaceWin>();
|
|
WindowCenter.Instance.Open<SettingUpWin>(false, 3);
|
}
|
private void TaskButton()
|
{
|
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
WindowCenter.Instance.Open<TaskWin>();
|
if (coinTaskTip.IsPopup)
|
{
|
coinTaskTip.IsPopup = false;
|
}
|
}
|
private void TeamBtn()
|
{
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
|
if (model.myTeam.inTeam)
|
{
|
WindowCenter.Instance.Open<TeamFrameWin>(false, 1);
|
}
|
else
|
{
|
WindowCenter.Instance.Open<TeamFrameWin>(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<ExperienceOpenWin>())
|
{
|
WindowCenter.Instance.Open<ExperienceOpenWin>(true);
|
}
|
}
|
else
|
{
|
AutoImg.SetActive(true);
|
if (WindowCenter.Instance.CheckOpen<ExperienceOpenWin>())
|
{
|
WindowCenter.Instance.CloseImmediately<ExperienceOpenWin>();
|
}
|
|
}
|
}
|
|
void FriendsButton()
|
{
|
//MainRedDot.Instance.redPointFriendChat.state = RedPointState.None;
|
//ChatCtrl.Inst.presentChatType = ChatInfoType.Friend;
|
//WindowCenter.Instance.Open<ChatWin>();
|
WindowCenter.Instance.CloseImmediately<MainInterfaceWin>();
|
WindowCenter.Instance.Open<SocialWin>();
|
}
|
|
void TeamChatButton()
|
{
|
SysNotifyMgr.Instance.ShowTip("UnopenedFunction");
|
}
|
|
void TongVoiceButton()
|
{
|
SysNotifyMgr.Instance.ShowTip("UnopenedFunction");
|
}
|
private void OnRealmButton()
|
{
|
WindowCenter.Instance.Open<RealmWin>();
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
}
|
|
void MailButton()//邮件按钮
|
{
|
WindowCenter.Instance.Open<MailWin>();
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
}
|
DungeonModel modelD { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
PlayerMainDate main { get { return ModelCenter.Instance.GetModel<PlayerMainDate>(); } }
|
BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
|
void OneKeyButton()//地图挂机按钮
|
{
|
|
if (OneKeyList.Contains(PlayerDatas.Instance.baseData.MapID))
|
{
|
var dataMapId = modelD.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
var config = Config.Instance.Get<DungeonOpenTimeConfig>(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<DungeonConfig>(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<MapModel>();
|
var point = mapModel.GetRecommendHangPoint();
|
var config = Config.Instance.Get<MapEventPointConfig>(point);
|
|
var flyBootOwn = ModelCenter.Instance.GetModel<PlayerPackModel>().GetItemCountByID(PackType.rptItem, GeneralConfig.Instance.flyBootItemId);
|
var isVipFreeTransfer = ModelCenter.Instance.GetModel<VipModel>().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<ExperienceOpenWin>())
|
{
|
WindowCenter.Instance.Open<ExperienceOpenWin>(true);
|
}
|
_hero.Behaviour.StartHandupAI();
|
}
|
else
|
{
|
if (WindowCenter.Instance.CheckOpen<ExperienceOpenWin>())
|
{
|
WindowCenter.Instance.CloseImmediately<ExperienceOpenWin>();
|
}
|
|
_hero.Behaviour.StopHandupAI();
|
}
|
}
|
AutoImg.SetActive(!AutoImg.activeSelf);
|
}
|
|
void BackPack1Buton()//背包按钮
|
{
|
WindowCenter.Instance.Open<KnapSackWin>();
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
}
|
|
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<MapConfig>(mapId);
|
return mapConfig != null && mapConfig.MapFBType != 0;
|
}
|
|
void Updatefighting(PlayerDataRefresh _tCDBPlayerRefresh)//数据的刷新
|
{
|
switch (_tCDBPlayerRefresh)
|
{
|
case PlayerDataRefresh.OfficialRank:
|
GetRealmLevel();
|
break;
|
}
|
}
|
}
|
|
|
|
}
|
|
|
|