//--------------------------------------------------------
|
// [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<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>(); } }
|
OffLineOnHookModel offLineOnHookModel { get { return ModelCenter.Instance.GetModel<OffLineOnHookModel>(); } }
|
|
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;
|
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<OffLineOnHookWin>();
|
});
|
|
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<MailInfo> 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<MainInterfaceWin>();
|
WindowCenter.Instance.Open<SettingUpWin>(false, 2);
|
}
|
|
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.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<ExperienceOpenWin>())
|
{
|
WindowCenter.Instance.Open<ExperienceOpenWin>(true);
|
}
|
}
|
else
|
{
|
if (m_ImgAuto.gameObject.activeSelf)
|
{
|
m_ImgAuto.SetActive(false);
|
}
|
|
if (!m_ImgUnAuto.gameObject.activeSelf)
|
{
|
m_ImgUnAuto.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()//打开协助按钮
|
{
|
WindowCenter.Instance.Open<DungeonAssistWin>();
|
}
|
|
|
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<MapModel>();
|
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);
|
}
|
}
|
}
|
|
}
|
|
|
|
}
|
|
|
|