//--------------------------------------------------------
|
// [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] 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;
|
|
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>(); } }
|
|
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;
|
|
_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);
|
|
MailCountChange();
|
UpdateVoiceState();
|
m_VoiceWidget.Init();
|
}
|
|
public void UnInit()
|
{
|
m_VoiceWidget.Init();
|
teamModel.myTeamRefreshEvent -= UpdateVoiceState;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= UpdateVoiceState;
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
|
MailAllModel.Instance.DeleteMailEvent -= MailCountChange;
|
}
|
|
public void OnAfterOpen()
|
{
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
var inDungeon = MapUtility.IsDungeon(mapId);
|
|
m_TaskBtn.gameObject.SetActive(!inDungeon);
|
_OneKeyBtn.gameObject.SetActive(!inDungeon || OneKeyList.Contains(mapId));
|
}
|
|
private void OnFuncStateChangeEvent(int _type)
|
{
|
if ((FuncOpenEnum)_type == FuncOpenEnum.Chat)
|
{
|
UpdateVoiceState();
|
}
|
}
|
|
private void MailCountChange()
|
{
|
if (CrossServerUtility.IsCrossServer() || ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)
|
{
|
_MailBtn.gameObject.SetActive(false);
|
return;
|
}
|
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 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 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.gameObject.SetActive(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.gameObject.SetActive(true);
|
}
|
|
if (m_ImgUnAuto.gameObject.activeSelf)
|
{
|
m_ImgUnAuto.gameObject.SetActive(false);
|
}
|
|
if (!WindowCenter.Instance.IsOpen<ExperienceOpenWin>())
|
{
|
WindowCenter.Instance.Open<ExperienceOpenWin>(true);
|
}
|
}
|
else
|
{
|
if (m_ImgAuto.gameObject.activeSelf)
|
{
|
m_ImgAuto.gameObject.SetActive(false);
|
}
|
|
if (!m_ImgUnAuto.gameObject.activeSelf)
|
{
|
m_ImgUnAuto.gameObject.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()//地图挂机按钮
|
{
|
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);
|
}
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
language, (bool isOk) =>
|
{
|
if (isOk)
|
{
|
GoToOneKeyButton();
|
}
|
});
|
}
|
else
|
{
|
GoToOneKeyButton();
|
}
|
}
|
|
void GoToOneKeyButton()
|
{
|
if (PlayerDatas.Instance.extersion.bossState == 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
|
return;
|
}
|
|
var mapModel = ModelCenter.Instance.GetModel<MapModel>();
|
var point = mapModel.GetRecommendHangPoint();
|
var config = MapEventPointConfig.Get(point);
|
|
var flyBootOwn = ModelCenter.Instance.GetModel<PackModel>().GetItemCountByID(PackType.Item, GeneralDefine.flyBootItemId);
|
var isVipFreeTransfer = ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0;
|
if (isVipFreeTransfer || flyBootOwn > 0)
|
{
|
var mapId = MapUtility.GetMapId(config.DataMapID,config.LineId);
|
MapTransferUtility.Instance.MissionFlyTo(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())
|
{
|
hero.Behaviour.StartHandupAI();
|
}
|
else
|
{
|
hero.Behaviour.StopHandupAI(true);
|
}
|
}
|
}
|
|
}
|
|
|
|
}
|
|
|
|