Files
JJBB/Assets/Project/Script/GUI/Obj_HeadUI/Obj_PlayerHeadUI.cs
2024-08-23 15:49:34 +08:00

425 lines
14 KiB
C#

using Games.ChatHistory;
using Games.GlobeDefine;
using Games.LogicObj;
using GCGame;
using GCGame.Table;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class Obj_PlayerHeadUI : Obj_HeadUI
{
public static UIPathData pathData
{
get { return UIInfo.OtherPlayerHeadInfo; }
}
public override UIPathData uiPathData
{
get { return pathData; }
}
protected override bool HideByOption
{
get { return true; }
}
public Slider GreenHpSlider;
public Slider PurpleHpSlider;
private Slider HpSlider;
public Text m_LabelTitleBoard;
public GameObject _TitleIconQuadPanel;
public Image m_LabelTitleBoardImage;
public Text m_LabelPaoShangBoard;
public Text m_VipText;
public Image m_SprVip;
public GameObject m_SprCaptain;
public GameObject m_SprTeamMem;
public Image m_SprCanKill;
public Image m_SprKillMe;
public GameObject m_ObjChatBubble;
public GameObject m_ObjIcons;
public ChatBubbleLogic m_ChatBubbleLogic;
public RectTransform NameRect;
public RectTransform IconRect;
private int m_titleID = -1;
private string m_title = "";
public GameObject _WatchSign;
public void ShowWatchSign(bool isShow)
{
if(_WatchSign)
_WatchSign.SetActive(isShow);
}
protected override void OnEnable()
{
base.OnEnable();
if (m_ChatBubbleLogic != null)
m_ChatBubbleLogic.gameObject.SetActive(false);
ShowWatchSign(false);
}
public void ResetNameBoradPos(bool showServerName)
{
if(showServerName)
{
NameRect.sizeDelta = new Vector2(320, 30);
IconRect.localPosition = new Vector3(-60, -21.7f, 0);
}
else
{
//NameRect.sizeDelta = new Vector2(180, 30);
IconRect.localPosition = new Vector3(0, -21.7f, 0);
}
}
public void SetNewHp(float rate)
{
if(HpSlider != null && HpSlider.gameObject.activeSelf)
HpSlider.value = rate;
}
// 血条显示以及颜色
public void HpSliderShowLogic()
{
GreenHpSlider.gameObject.SetActive(false);
PurpleHpSlider.gameObject.SetActive(false);
if (Target == null)
return;
Obj_OtherPlayer otherPlayer = Target as Obj_OtherPlayer;
if (otherPlayer == null)
return;
// 如果是主角,用绿色显示血条
if (Target.ObjType == GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER)
{
HpSlider = GreenHpSlider;
HpSlider.gameObject.SetActive(true);
return;
}
// 非主角,分场景显示血条
Tab_SceneClass scene = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0);
if (scene == null)
return;
//门派挑战和关宁做一下特殊处理 (还有紫荆之巅)
if (GameManager.gameManager.RunningScene == (int)GameDefine_Globe.SCENE_DEFINE.SCENE_GUANNING
|| GameManager.gameManager.RunningScene == (int)GameDefine_Globe.SCENE_DEFINE.SCENE_FACIONCHALLENGE
|| GameManager.gameManager.RunningScene == GameManager.gameManager.PlayerDataPool.pvpIfo._PvpBattleSceneId
|| GameManager.gameManager.m_RunningScene == 658)
{
bool result = (otherPlayer.BaseAttr.WarForce != GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.WarForce
|| otherPlayer.BaseAttr.Force != GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Force);
HpSlider = (result ? PurpleHpSlider : GreenHpSlider);
if (GameManager.gameManager.m_RunningScene == 658)
{
//紫荆之巅中其他玩家显示紫色血条
HpSlider = (result ? GreenHpSlider : PurpleHpSlider);
}
HpSlider.gameObject.SetActive(true);
return;
}
if (Reputation.IsEnemy(otherPlayer) && scene.Type == 1)
{
HpSlider = PurpleHpSlider;
HpSlider.gameObject.SetActive(true);
return;
}
bool isTeam = GameManager.gameManager.PlayerDataPool.IsTeamMem(otherPlayer.GUID);
if (isTeam && (scene.Type == 2 || scene.Type == 1))
{
HpSlider = GreenHpSlider;
HpSlider.gameObject.SetActive(true);
return;
}
}
public void HideHp(bool state)
{
HpSliderShowLogic();
}
public void UpdateOtherPkModel(Obj_OtherPlayer obj)
{
m_SprCanKill.gameObject.SetActive(false);
m_SprKillMe.gameObject.SetActive(false);
if (obj.ObjType == GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER)
return;
Tab_SceneClass sceneInfo = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0);
if (sceneInfo == null)
return;
Tab_PVPRule pvpRule = TableManager.GetPVPRuleByID(sceneInfo.PVPRule, 0);
if (pvpRule == null)
return;
if (Singleton<ObjManager>.Instance.MainPlayer != null)
{
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level <= pvpRule.ProtectLevel)
{
return;
}
}
if (Reputation.IsCanPk(obj))
{
SetNameColor( Utils.GetColorByString(StrDictionary.GetClientDictionaryString("#{5556}")));
}
if (Reputation.IsCanBeAttack(obj))
m_SprKillMe.gameObject.SetActive(true);
HpSliderShowLogic();
}
public void UpdateVipInfo(int nVipCost)
{
if (m_SprVip != null)
{
if (nVipCost > 0)
{
m_SprVip.gameObject.SetActive(true);
float fShifty = m_SprVip.transform.localPosition.y;
LoadAssetBundle.Instance.SetImageSprite(m_SprVip, VipData.GetVipImage(nVipCost));
}
else
{
}m_SprVip.gameObject.SetActive(false);
}
if (nVipCost > 0)
{
//m_VipText.gameObject.SetActive(true);
//m_VipText.text = "VIP" + nVipCost.ToString();
}
else
m_VipText.gameObject.SetActive(false);
}
public void UpdateCaptainIcon(bool state)
{
if (state == false)
{
m_SprCaptain.SetActive(false);
m_SprTeamMem.SetActive(false);
return;
}
if (Target == null)
return;
Obj_OtherPlayer otherPlayer = Target as Obj_OtherPlayer;
if (otherPlayer == null)
return;
bool isCaptain = GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain(otherPlayer.GUID);
if (otherPlayer.GUID == GlobeVar.INVALID_GUID)
isCaptain = false;
bool isMember = GameManager.gameManager.PlayerDataPool.IsTeamMem(otherPlayer.GUID);
m_SprCaptain.SetActive(isCaptain);
// var _captainImage = m_SprCaptain.GetComponent<Image>();
//if(_captainImage)
// {
// LoadAssetBundle.Instance.SetImageSprite(_captainImage,
// Utils.GetCaptainLevelIcon(otherPlayer.BaseAttr.CaptainWelfareLevel));
// }
m_SprTeamMem.SetActive(!isCaptain && isMember);
}
public void ShowTitleInvestitiveByTable(int titleID, string strTitleInvestitive)
{
m_titleID = -1;
m_title = "";
Tab_TitleData tabTitle = TableManager.GetTitleDataByID(titleID, 0);
if(tabTitle == null)
{
_TitleIconQuadPanel.SetActive(false);
m_LabelTitleBoard.gameObject.SetActive(false);
return;
}
if(!string.IsNullOrEmpty(tabTitle.NameImage))
{
_TitleIconQuadPanel.SetActive(true);
//m_LabelTitleBoardImage.gameObject.SetActive(true);
m_LabelTitleBoard.gameObject.SetActive(false);
LoadAssetBundle.Instance.SetImageSprite(m_LabelTitleBoardImage, tabTitle.NameImage,
delegate (bool isSucess, GameObject obj)
{
ClearTitleIconEffect();
m_LabelTitleBoardImage.SetNativeSize();
var effectData = TableManager.GetEffectByID(tabTitle.EffectId, 0);
if (effectData != null)
LoadAssetBundle.Instance.LoadGameObject(LoadAssetBundle.BUNDLE_PATH_EFFECT, effectData.Path, (string assetName, GameObject resObj, Hashtable hashParam) =>
{
if (resObj != null)
{
var effectObj = GameObject.Instantiate(resObj);
effectObj.transform.SetParent(m_LabelTitleBoardImage.transform);
effectObj.transform.localScale = Vector3.one;
effectObj.transform.localPosition = Vector3.zero;
effectObj.transform.localRotation = Quaternion.Euler(Vector3.zero);
}
}, null);
});
return;
}else
{
ClearTitleIconEffect();
m_LabelTitleBoardImage.sprite = null;
}
_TitleIconQuadPanel.SetActive(false);
//m_LabelTitleBoardImage.gameObject.SetActive(false);
if (strTitleInvestitive==null || strTitleInvestitive.Equals(""))
{
m_LabelTitleBoard.gameObject.SetActive(false);
return;
}
if (null != m_LabelTitleBoard)
{
if (tabTitle != null)
{
string strTitle = "";
strTitle = string.Format("<color=#{0}>{1}</color>", tabTitle.ColorLevel, strTitleInvestitive);
m_LabelTitleBoard.gameObject.SetActive(strTitle.Length > 0);
m_LabelTitleBoard.text = strTitle;
}
else
{
m_LabelTitleBoard.gameObject.SetActive(strTitleInvestitive.Length > 0);
m_LabelTitleBoard.text = strTitleInvestitive;
}
}
if (GameManager.gameManager.RunningScene == (int)GameDefine_Globe.SCENE_DEFINE.SCENE_GUANNING)
{
m_LabelTitleBoard.text = "";
m_LabelTitleBoard.gameObject.SetActive(false);
}
m_titleID = titleID;
m_title = strTitleInvestitive;
}
void ClearTitleIconEffect()
{
for (int index = 0; index < m_LabelTitleBoardImage.transform.childCount; index++)
{
Destroy(m_LabelTitleBoardImage.transform.GetChild(index).gameObject);
}
}
public void ShowTitleInvestitive(string strTitleInvestitive)
{
int titleId = GameManager.gameManager.PlayerDataPool.TitleInvestitive.GetCurrentTitleID();
Tab_TitleData tabTitle = TableManager.GetTitleDataByID(titleId, 0);
if (tabTitle != null && !string.IsNullOrEmpty(tabTitle.NameImage))
{
_TitleIconQuadPanel.SetActive(true);
//m_LabelTitleBoardImage.gameObject.SetActive(true);
m_LabelTitleBoard.gameObject.SetActive(false);
LoadAssetBundle.Instance.SetImageSprite(m_LabelTitleBoardImage, tabTitle.NameImage, delegate (bool isSucess, GameObject obj)
{
ClearTitleIconEffect();
m_LabelTitleBoardImage.SetNativeSize();
var effectData = TableManager.GetEffectByID(tabTitle.EffectId, 0);
if (effectData != null)
LoadAssetBundle.Instance.LoadGameObject(LoadAssetBundle.BUNDLE_PATH_EFFECT, effectData.Path, (string assetName, GameObject resObj, Hashtable hashParam) =>
{
if (resObj != null)
{
var effectObj = GameObject.Instantiate(resObj);
effectObj.transform.SetParent(m_LabelTitleBoardImage.gameObject.transform);
effectObj.transform.localScale = Vector3.one;
effectObj.transform.localPosition = Vector3.zero;
effectObj.transform.localRotation = Quaternion.Euler(Vector3.zero);
}
}, null);
});
return;
}
else
{
ClearTitleIconEffect();
m_LabelTitleBoardImage.sprite = null;
}
_TitleIconQuadPanel.SetActive(false);
//m_LabelTitleBoardImage.gameObject.SetActive(false);
if (strTitleInvestitive == null || strTitleInvestitive.Equals(""))
{
m_LabelTitleBoard.gameObject.SetActive(false);
return;
}
if (tabTitle != null)
{
string strTitle = "";
strTitle = string.Format("<color=#{0}>{1}</color>", tabTitle.ColorLevel, strTitleInvestitive);
m_LabelTitleBoard.gameObject.SetActive(strTitle.Length > 0);
m_LabelTitleBoard.text = strTitle;
}
else
{
m_LabelTitleBoard.gameObject.SetActive(string.IsNullOrEmpty(strTitleInvestitive) == false);
m_LabelTitleBoard.text = strTitleInvestitive;
}
if (GameManager.gameManager.RunningScene == (int)GameDefine_Globe.SCENE_DEFINE.SCENE_GUANNING)
{
m_LabelTitleBoard.gameObject.SetActive(false);
m_LabelTitleBoard.text = "";
}
}
public virtual void UpdatePaoShangIcon(string title)
{
m_LabelPaoShangBoard.gameObject.SetActive(title.Length>0);
m_LabelPaoShangBoard.text = title;
if (GameManager.gameManager.RunningScene == (int)GameDefine_Globe.SCENE_DEFINE.SCENE_GUANNING)
{
m_LabelPaoShangBoard.gameObject.SetActive(false);
m_LabelPaoShangBoard.text = "";
}
}
public void ShowOriginalHeadInfo(bool bShow)
{
if (null != m_ObjIcons)
{
m_ObjIcons.SetActive(bShow);
}
if(null != HpSlider)
{
HpSlider.gameObject.SetActive(bShow);
}
if(null != m_LabelPaoShangBoard)
{
m_LabelPaoShangBoard.gameObject.SetActive(bShow);
}
}
public override void ShowChatBubble(ChatHistoryItem text)
{
if (null != m_ChatBubbleLogic)
{
m_ChatBubbleLogic.Show(text);
}
}
public override void HideChatBubble(bool state)
{
if (null != m_ChatBubbleLogic)
{
m_ChatBubbleLogic.gameObject.SetActive(state);
}
}
}