using DG.Tweening;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class FairySiegeCityItem : MonoBehaviour
|
{
|
[SerializeField] ButtonEx btnCity;
|
[SerializeField] ImageEx imgCity;
|
[SerializeField] ImageEx imgRank;
|
[SerializeField] TextEx txtRank;
|
[SerializeField] ImageEx imgDestroy;
|
[SerializeField] ImageEx imgPlayerName;
|
[SerializeField] TextEx txtPlayerName;
|
[SerializeField] ImageEx imgFairyRank1;
|
[SerializeField] ImageEx imgPlayerRank1;
|
[SerializeField] AvatarCell head;
|
[SerializeField] ImageEx imgEffect;
|
[SerializeField] TextEx txtFairyName;
|
[SerializeField] TextEx txtServerName;
|
[SerializeField] Slider slidCity;
|
[SerializeField] Text txtSlidExp;
|
FairySiegeActModel model { get { return ModelCenter.Instance.GetModel<FairySiegeActModel>(); } }
|
|
public void Display(FairySiegeBatSceneCity data)
|
{
|
//修罗城(城池ID20亿)不同分组的修罗城城池ID一样,修罗城的守卫ID从1~100
|
//一般城池ID=仙盟ID
|
if (data.CityID != data.FamilyID)
|
return;
|
if (data == null)
|
return;
|
if (!model.TryGetFairySiegeFamilyInfo((uint)data.FamilyID, out FairySiegeFamilyInfo familyInfo))
|
return;
|
if (!model.TryGetBatSceneInfo(model.showBatType, model.showBatGroup, out FairySiegeBatSceneInfo batSceneInfo))
|
return;
|
btnCity.SetListener(() =>
|
{
|
model.isClickCity = true;
|
// 不能攻击自己的城池
|
if (data.FamilyID == model.myFamilyID)
|
{
|
SysNotifyMgr.Instance.ShowTip("FairySiege07");
|
return;
|
}
|
|
// 无法进入已被摧毁的城池
|
if (data.HP <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("FairySiege06");
|
return;
|
}
|
|
//不能进入其他类型和分组的城池
|
if (!model.TryGetNowBatTypeAndGroup(model.myFamilyID, out int myBattleType, out int myBattleGroup))
|
return;
|
if (myBattleType != model.showBatType || model.showBatGroup != myBattleGroup)
|
{
|
SysNotifyMgr.Instance.ShowTip("FairySiege12");
|
return;
|
}
|
|
if (model.isWaitC030Pack)
|
return;
|
model.isWaitC030Pack = true;
|
model.showCityId = data.CityID;
|
model.SendQuery(4, model.showBatType, model.showBatGroup, data.CityID);
|
});
|
|
imgCity.SetActive(true);
|
int state = model.GetCityState(data); // 0 未摧毁-默认状态 1 未摧毁-被攻击 2 已被摧毁
|
string spriteStr = StringUtility.Contact("FairySiegeCityState" + state);
|
imgCity.SetSprite(spriteStr);
|
|
bool isRankImageDisplay = model.IsRankImageDisplay(data.Rank);
|
imgRank.SetActive(isRankImageDisplay);
|
if (isRankImageDisplay)
|
{
|
imgRank.SetSprite(model.GetRankNumImage(data.Rank));
|
}
|
txtRank.text = data.Rank.ToString();
|
|
float rate = (float)data.HP / (float)data.HPMax;
|
string rateStr = Language.Get("BlessedLand039", (rate * 100).ToString("F2"));
|
slidCity.value = rate;
|
txtSlidExp.text = rateStr;
|
string serverName = ServerListCenter.Instance.GetServerName((int)familyInfo.ServerID);
|
|
txtServerName.text = serverName.ToString();
|
txtFairyName.text = familyInfo.Name.ToString();
|
|
bool isTopPlayerFamily = batSceneInfo.TopPlayerFamilyID == data.FamilyID;// 是伤害第一玩家所在的仙盟
|
bool isTopFamilyID = batSceneInfo.TopFamilyID == data.FamilyID; // 伤害第一的仙盟
|
|
imgDestroy.SetActive(state == 2 && !isTopPlayerFamily && !isTopFamilyID);
|
imgPlayerRank1.SetActive(isTopPlayerFamily);
|
imgPlayerName.SetActive(isTopPlayerFamily || isTopFamilyID);
|
head.SetActive(isTopPlayerFamily || isTopFamilyID);
|
if (isTopPlayerFamily)
|
{
|
FairySiegeBatScenePlayer batScenePlayerInfo;
|
batSceneInfo.BatScenePlayerInfoDict.TryGetValue(batSceneInfo.TopPlayerID, out batScenePlayerInfo);
|
if (batScenePlayerInfo != null)
|
{
|
txtPlayerName.text = batScenePlayerInfo != null ? batScenePlayerInfo.Name : string.Empty;
|
head.InitUI(AvatarHelper.GetOtherAvatarModel((int)batScenePlayerInfo.Face, (int)batScenePlayerInfo.FacePic, (int)batScenePlayerInfo.Job));
|
}
|
}
|
|
imgFairyRank1.SetActive(!isTopPlayerFamily && isTopFamilyID);
|
if (!isTopPlayerFamily && isTopFamilyID)
|
{
|
FairySiegeBatScenePlayer batScenePlayerInfo;
|
batSceneInfo.BatScenePlayerInfoDict.TryGetValue(batSceneInfo.TopLeaderID, out batScenePlayerInfo);
|
if (batScenePlayerInfo != null)
|
{
|
txtPlayerName.text = batScenePlayerInfo != null ? batScenePlayerInfo.Name : string.Empty;
|
head.InitUI(AvatarHelper.GetOtherAvatarModel((int)batScenePlayerInfo.Face, (int)batScenePlayerInfo.FacePic, (int)batScenePlayerInfo.Job));
|
}
|
}
|
}
|
|
public void PlayDamageSeq(long damage)
|
{
|
GameObject prefab = UIUtility.CreateWidget("FairySiegeCityPopUpNum", "FairySiegeCityPopUpNum");
|
prefab.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);
|
prefab.GetComponent<FairySiegeCityPopUpNum>().Play(damage);
|
}
|
|
public bool IsPlayingThunderEffect()
|
{
|
return imgEffect.gameObject.activeSelf;
|
}
|
|
public void PlayThunderEffect()
|
{
|
imgEffect.SetActive(true);
|
}
|
|
public void StopThunderEffect()
|
{
|
imgEffect.SetActive(false);
|
}
|
|
private Tweener shakeTween;
|
|
public void PlayShakeTween()
|
{
|
shakeTween = imgCity.transform.DOShakeRotation(0.5f, 10, 10, 90).SetEase(Ease.InOutElastic).OnComplete(() =>
|
{
|
imgCity.transform.localRotation = Quaternion.identity;
|
});
|
}
|
|
public void StopShakeTween()
|
{
|
shakeTween?.Kill();
|
imgCity.transform.localRotation = Quaternion.identity;
|
}
|
}
|
}
|