//--------------------------------------------------------
|
// [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 HeadPortraitTip : MonoBehaviour
|
{
|
[SerializeField] Image _Head;//人物头像
|
[SerializeField] Text _BuffNumber;//Buff数量
|
[SerializeField] Text _VipNumber;//Vip等级
|
|
[SerializeField] Text _PowerNumbern;//战斗力
|
[SerializeField] Text _LVText;//人物等级
|
[SerializeField] Text _Hp_number;//血量数值
|
|
[SerializeField] Slider _HPSlider;//主界面的血条框
|
[SerializeField] Button _PatternBtn;//攻击对象按钮
|
[SerializeField] Button _BuffBtn;//Buff按钮
|
[SerializeField] Button _VIPBtn;//Vip按钮
|
[SerializeField] Button _HeadBtn;//人物头像按钮
|
[SerializeField] Button _PromoteBtn;//战力提升按钮
|
|
[SerializeField] Text vipExperienceTime;
|
[SerializeField] Text vipExperiencePrivilege;
|
[SerializeField] RectTransform vipExperienceImg;
|
[SerializeField] VipExperienceTween m_VipExperienceTween;
|
|
[SerializeField] UIEffect m_UieffectEmperor;//娲皇Buff
|
[SerializeField] Image m_Shield;//护盾显示
|
|
[SerializeField] Text _TimeTxt;//时间
|
[SerializeField] Slider _BatterySlider;//电量
|
[SerializeField] Image m_WifiImg;//Wife
|
[SerializeField] GameObject m_BatteryChong;//充电
|
|
private float loadingtime = 0f;//默认时间
|
|
VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
|
BuffModel Buffmodel { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
|
PKModel pKModel { get { return ModelCenter.Instance.GetModel<PKModel>(); } }
|
PlayerMainDate onMainModel { get { return ModelCenter.Instance.GetModel<PlayerMainDate>(); } }
|
|
private int vipExperienceSurplusTime = 0;
|
private int GetLv = 0;//获取人物等级
|
public void Init()
|
{
|
loadingtime = 0f;
|
Initialize();//关于数据的初始化
|
BuffGameObject();
|
TextSwitch(Buffmodel.PkType);
|
OnElectricQuantity();
|
OnNetworkState();
|
SetShieldNumber();//设置护盾值
|
m_VipExperienceTween.Init();
|
_TimeTxt.text = DateTime.Now.ToString("HH:mm");
|
OnNetworkState();
|
onBatteryStateChanged(SDKUtility.Instance.ChargingType);
|
RefreshVipData();
|
EmperorBuffEvent();
|
|
_PatternBtn.SetListener(PatternButton);
|
_BuffBtn.SetListener(BuffButton);
|
_VIPBtn.onClick.AddListener(VIPButton);
|
_HeadBtn.onClick.AddListener(HeadButton);
|
_PromoteBtn.onClick.AddListener(OnPromoteBtn);
|
|
PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418)
|
PlayerDatas.Instance.OnSwitchAttackMode += OnSwitchAttackMode;
|
BuffModel.Even_ObjAddBuf += BuffGameObject;
|
BuffModel.Even_ObjDelBuff += BuffGameObject;
|
PlayerMainDate.ElectricQuantityEvent += OnElectricQuantity;
|
PlayerMainDate.NetworkStateEvent += OnNetworkState;
|
TimeMgr.Instance.OnSyntonyEvent += OnSyntonyEvent;
|
SDKUtility.Instance.OnChargingTypeChanged += onBatteryStateChanged;
|
vipModel.OnVipTimeEvent += RefreshVipData;
|
PlayerMainDate.EmperorBuffEvent += EmperorBuffEvent;
|
|
var inBossArea = PlayerDatas.Instance.hero != null && MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss);//是否在Boss区域
|
if (PlayerDatas.Instance.baseData.MapID == 10040 && !inBossArea)//关于逍遥城状态的特殊处理
|
{
|
if (Buffmodel.PkType != onMainModel.AreaState)
|
{
|
Buffmodel.PkType = onMainModel.AreaState;
|
DTCA202_tagMCAttackMode.Send_SwitchAttackMode((E_AttackMode)onMainModel.AreaState);
|
}
|
}
|
}
|
|
public void UnInit()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418)
|
BuffModel.Even_ObjAddBuf -= BuffGameObject;
|
BuffModel.Even_ObjDelBuff -= BuffGameObject;
|
PlayerDatas.Instance.OnSwitchAttackMode -= OnSwitchAttackMode;
|
PlayerMainDate.ElectricQuantityEvent -= OnElectricQuantity;
|
PlayerMainDate.NetworkStateEvent -= OnNetworkState;
|
TimeMgr.Instance.OnSyntonyEvent -= OnSyntonyEvent;
|
SDKUtility.Instance.OnChargingTypeChanged -= onBatteryStateChanged;
|
vipModel.OnVipTimeEvent -= RefreshVipData;
|
PlayerMainDate.EmperorBuffEvent -= EmperorBuffEvent;
|
|
_VIPBtn.RemoveAllListeners();
|
_HeadBtn.RemoveAllListeners();
|
_PromoteBtn.RemoveAllListeners();
|
m_VipExperienceTween.UnInit();
|
}
|
|
private void EmperorBuffEvent()
|
{
|
if (onMainModel.IsEmperor)
|
{
|
if (!m_UieffectEmperor.IsPlaying)
|
{
|
m_UieffectEmperor.Play();
|
}
|
}
|
}
|
|
private void CloseEmperorBufEffect()
|
{
|
if (m_UieffectEmperor.IsPlaying)
|
{
|
m_UieffectEmperor.Stop();
|
}
|
if (onMainModel.IsEmperor)
|
{
|
onMainModel.IsEmperor = false;
|
}
|
}
|
|
private void onBatteryStateChanged(SDKUtility.E_ChargingType arg0)
|
{
|
m_BatteryChong.gameObject.SetActive(arg0 == SDKUtility.E_ChargingType.ChargingFull
|
|| arg0 == SDKUtility.E_ChargingType.Charging);
|
}
|
|
private void OnNetworkState()
|
{
|
switch (onMainModel.NetworkState)
|
{
|
case 0:
|
m_WifiImg.SetSprite("MainInterfaceNoWifiIcon");
|
break;
|
case 2:
|
if (onMainModel.WifiSignal <= 1)
|
{
|
m_WifiImg.SetSprite("MainInterfaceWifiIcon3");
|
}
|
else if (onMainModel.WifiSignal <= 3)
|
{
|
m_WifiImg.SetSprite("MainInterfaceWifiIcon2");
|
}
|
else
|
{
|
m_WifiImg.SetSprite("MainInterfaceWifiIcon");
|
}
|
break;
|
default:
|
m_WifiImg.SetSprite("MainInterfaceEIcon");
|
break;
|
}
|
}
|
|
private void OnElectricQuantity()
|
{
|
_BatterySlider.value = onMainModel.ElectricQuantity;
|
}
|
|
private void OnSwitchAttackMode(E_AttackMode obj)//PK状态切换
|
{
|
TextSwitch((int)obj);
|
}
|
|
void PatternButton()
|
{
|
int mapID = PlayerDatas.Instance.baseData.MapID;
|
var config = MapConfig.Get(mapID);
|
int[] atkInt = pKModel.GetArea(config.AtkType).ToArray();
|
bool IsBossBool = MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss);//是否在Boss区域
|
if (atkInt.Length > 1)
|
{
|
//var activityline = 0;
|
//fairyGrabBossModel.TryGetFairyGrabBossLine(out activityline);
|
//if (PlayerDatas.Instance.baseData.MapID == 10040 && activityline == PlayerDatas.Instance.baseData.FBID)//逍遥城活动线不允许切换模式
|
//{
|
// SysNotifyMgr.Instance.ShowTip("Map_AtkType");
|
// return;
|
//}
|
//if (PlayerDatas.Instance.baseData.MapID == 10040 && IsBossBool && !fairyGrabBossModel.grabBossHintOpen)//逍遥城boss区域特殊处理(可切换状态)
|
//{
|
// WindowCenter.Instance.Open<CombatModeWin>();
|
// if (WindowCenter.Instance.IsOpen<FunctionForecastWin>())
|
// {
|
// WindowCenter.Instance.Close<FunctionForecastWin>();
|
// }
|
// return;
|
//}
|
|
if (onMainModel.ShieldedArea.Contains(mapID))//Boss争夺战前三只保底只能是和平模式
|
{
|
SysNotifyMgr.Instance.ShowTip("Map_AtkType");
|
return;
|
}
|
|
//if (onMainModel.ActivityList.Contains(PlayerDatas.Instance.baseData.MapID) && activityline != PlayerDatas.Instance.baseData.FBID)//再前四章新手地图且不在活动区域
|
//{
|
// SysNotifyMgr.Instance.ShowTip("Map_AtkType");
|
// return;
|
//}
|
|
WindowCenter.Instance.Open<CombatModeWin>();
|
if (WindowCenter.Instance.IsOpen<FunctionForecastWin>())
|
{
|
WindowCenter.Instance.Close<FunctionForecastWin>();
|
}
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("Map_AtkType");
|
}
|
}
|
|
void TextSwitch(int _EnumType)
|
{
|
var _PkImage = _PatternBtn.GetComponent<Image>();
|
switch (_EnumType)
|
{
|
case 0:
|
Buffmodel.PkType = 0;
|
_PkImage.SetSprite("Atk_Peace");//和平
|
break;
|
case 1:
|
Buffmodel.PkType = 1;
|
_PkImage.SetSprite("Atk_All");//全体
|
break;
|
case 2:
|
Buffmodel.PkType = 2;
|
break;
|
case 3:
|
Buffmodel.PkType = 3;
|
break;
|
case 4:
|
Buffmodel.PkType = 4;
|
break;
|
case 5:
|
Buffmodel.PkType = 5;
|
if (PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON)
|
{
|
_PkImage.SetSprite("Atk_League");//仙盟联赛
|
}
|
else
|
{
|
_PkImage.SetSprite("Atk_Force");//强制
|
}
|
break;
|
case 6:
|
break;
|
case 7:
|
_PkImage.SetSprite("Atk_Scramble");
|
break;
|
default:
|
break;
|
}
|
}
|
|
void BuffButton()
|
{
|
CloseEmperorBufEffect();
|
WindowCenter.Instance.Open<BuffInfoWin>();
|
}
|
|
void VIPButton()
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("FuncNoOpen_VIP");
|
return;
|
}
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
WindowCenter.Instance.Open<VipRechargeWin>(false, 1);
|
}
|
|
void HeadButton()
|
{
|
ModelCenter.Instance.GetModel<RoleModel>().OpenRolePanel();
|
}
|
|
void OnPromoteBtn()
|
{
|
WindowCenter.Instance.Open<PromoteDetailsWin>();
|
}
|
|
void BuffGameObject()
|
{
|
int Count = Buffmodel._BuffDic.Count;
|
if (Count <= 0)
|
{
|
_BuffBtn.gameObject.SetActive(false);
|
}
|
else
|
{
|
_BuffBtn.gameObject.SetActive(true);
|
_BuffNumber.text = StringUtility.Contact("Buff x", Count);
|
}
|
}
|
|
void Initialize()//关于数据的初始化
|
{
|
GetLv = PlayerDatas.Instance.baseData.LV;
|
_LVText.text = PlayerDatas.Instance.baseData.LV.ToString();//等级的初始化
|
|
DisplayHp();
|
_PowerNumbern.text = PlayerDatas.Instance.baseData.FightPoint.ToString();
|
DisplayHead(PlayerDatas.Instance.baseData.Job, 0);//角色头像初始化
|
DisplayVip(PlayerDatas.Instance.baseData.VIPLv);//获取Vip等级且赋值
|
}
|
|
|
void Updatefighting(PlayerDataType type)//数据的刷新
|
{
|
switch (type)
|
{
|
case PlayerDataType.FightPower://战斗力的刷新83
|
_PowerNumbern.text = PlayerDatas.Instance.baseData.FightPoint.ToString();
|
break;
|
case PlayerDataType.LV://等级的刷新8
|
_LVText.text = PlayerDatas.Instance.baseData.LV.ToString();
|
if (PlayerDatas.Instance.baseData.LV > GetLv)
|
{
|
GetLv = PlayerDatas.Instance.baseData.LV;
|
ModelCenter.Instance.GetModel<TaskModel>().taskWait.Push(TaskModel.TaskWaitType.LevelUp);
|
WindowCenter.Instance.Open<UpgradeWin>();
|
}
|
break;
|
case PlayerDataType.MaxHP://最大血量的刷新28
|
case PlayerDataType.HP://当前血量29
|
DisplayHp();
|
break;
|
case PlayerDataType.VIPLv://关于VIP等级的刷新
|
DisplayVip((int)PlayerDatas.Instance.baseData.VIPLv);
|
break;
|
case PlayerDataType.ExAttr4://当前护盾值
|
SetShieldNumber();
|
break;
|
case PlayerDataType.MaxProDef://最大护盾值
|
SetShieldNumber();
|
break;
|
default:
|
break;
|
}
|
}
|
|
void DisplayHead(int _jobID, int _ReincarnationLv)//关于人物头像的赋值
|
{
|
_Head.SetSprite(GeneralDefine.GetJobHeadPortrait(_jobID, _ReincarnationLv));
|
}
|
|
void DisplayVip(int _vipID)//获取Vip等级且赋值
|
{
|
_VipNumber.text = vipModel.IsVipExperience() ? "1" : _vipID.ToString();
|
}
|
|
private void DisplayHp()
|
{
|
var hp = (int)PlayerDatas.Instance.baseData.HP;
|
var maxHp = (int)PlayerDatas.Instance.extersion.MaxHP;
|
_Hp_number.text = StringUtility.Contact(hp, "/", maxHp);
|
|
if (maxHp > 0)
|
{
|
_HPSlider.value = (float)hp / maxHp;//血条的初始化
|
}
|
else
|
{
|
_HPSlider.value = 1f;
|
}
|
}
|
|
private void RefreshVipData()
|
{
|
var hero = PlayerDatas.Instance.hero;
|
var lifeBarShow = false;
|
DisplayVip(PlayerDatas.Instance.baseData.VIPLv);
|
if (hero != null && hero.SelectTarget != null)
|
{
|
lifeBarShow = (hero.SelectTarget is GA_NpcFightBoss) || (hero.SelectTarget is GA_NpcClientFightBoss);
|
}
|
|
vipExperienceImg.gameObject.SetActive(vipModel.IsVipExperience() && !lifeBarShow);
|
vipExperienceSurplusTime = Mathf.Max(0, (int)(vipModel.vipExperienceOverdue - TimeUtility.ServerNow).TotalSeconds);
|
if (vipExperienceSurplusTime > 0)
|
{
|
RefreshVipExperienceTime();
|
vipExperiencePrivilege.text = Language.Get("VipCard2");
|
}
|
}
|
|
private void RefreshVipExperienceTime()
|
{
|
vipExperienceTime.text = Language.Get("VipCard1", TimeUtility.SecondsToHMS(vipExperienceSurplusTime));
|
}
|
|
private void OnSyntonyEvent(TimeMgr.SyntonyType _type)
|
{
|
if (_type == TimeMgr.SyntonyType.VipExperirnceOverdue)
|
{
|
DisplayVip(PlayerDatas.Instance.baseData.VIPLv);
|
}
|
}
|
|
private void LateUpdate()
|
{
|
loadingtime += Time.deltaTime;
|
if (loadingtime >= 1f)
|
{
|
_TimeTxt.text = DateTime.Now.ToString("HH:mm");
|
loadingtime = 0f;
|
}
|
|
if (vipExperienceSurplusTime <= 0)
|
{
|
return;
|
}
|
|
var surplusTime = Mathf.Max(0, (int)(vipModel.vipExperienceOverdue - TimeUtility.ServerNow).TotalSeconds);
|
if (vipExperienceSurplusTime != surplusTime)
|
{
|
vipExperienceSurplusTime = surplusTime;
|
RefreshVipExperienceTime();
|
}
|
|
if (vipExperienceSurplusTime == 0)
|
{
|
RefreshVipData();
|
}
|
}
|
|
private void SetShieldNumber()//护盾值设置
|
{
|
if (PlayerDatas.Instance.extersion.MaxProDef != 0)
|
{
|
var MaxProDef = PlayerDatas.Instance.extersion.MaxProDef;//最大值
|
var ExAttr4 = (int)PlayerDatas.Instance.baseData.shield;//当前值
|
var fillAmount = (float)ExAttr4 / MaxProDef;
|
m_Shield.fillAmount = fillAmount;
|
}
|
else
|
{
|
m_Shield.fillAmount = 0f;
|
}
|
}
|
|
}
|
|
|
}
|
|
|
|