using System.Collections;
|
using System.Collections.Generic;
|
using Cysharp.Threading.Tasks;
|
using DG.Tweening;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
/// <summary>
|
/// 公会基础界面
|
/// </summary>
|
public class GuildBossWin : UIBase
|
{
|
[SerializeField] Text endTimeText;
|
[SerializeField] Text fightPowerText;
|
[SerializeField] Transform rankRect;
|
[SerializeField] Text rankText;
|
[SerializeField] Text noRankText;
|
[SerializeField] AvatarCell headCell;
|
[SerializeField] Text nameText;
|
[SerializeField] Text todayHurtText;
|
[SerializeField] Image newHighestHurtImg;
|
//布阵
|
[SerializeField] Text bzAttrText;
|
[SerializeField] UIEffectPlayer bzEffect1;
|
[SerializeField] Text bzLayerText;
|
[SerializeField] UIEffectPlayer bzEffect2;
|
[SerializeField] Button bzBtn;
|
[SerializeField] Text bzTimesText; //布阵次数
|
[SerializeField] Button bzRecordBtn;
|
|
//怒气条
|
[SerializeField] Image processLeft; //颜色从00FF0B 到 FFE400 到 E30400
|
[SerializeField] Image processRight;
|
[SerializeField] Button atkBtn;
|
[SerializeField] Image angerAtk; //怒气攻击
|
[SerializeField] Transform normalAtk; //普通攻击
|
[SerializeField] UIEffectPlayer atkEffect; //普通攻击特效 0次不显示
|
[SerializeField] Text normalAtkCntText; //普通攻击次数
|
[SerializeField] Text atkCDText; //攻击cd
|
[SerializeField] Transform addTimesRect;
|
[SerializeField] Image addTimesItemImg;
|
[SerializeField] Text addTimesItemText;
|
|
[SerializeField] ButtonEx closeBtn;
|
[SerializeField] ButtonEx scoreBtn;
|
[SerializeField] ButtonEx awardBtn;
|
[SerializeField] Transform awardCntRect;
|
[SerializeField] Text awardCntText;
|
//攻击区
|
[SerializeField] UIHeroController bossModel;
|
[SerializeField] UIHeroController heroModel;
|
[SerializeField] Transform attackArea1;
|
[SerializeField] Transform attackArea2;
|
[SerializeField] Transform attackArea3;
|
[SerializeField] GuildBossOtherPlayer otherPlayer; //创建多个用
|
[SerializeField] GuildBossOtherPlayerAttack otherPlayerAttack; //创建多个用
|
|
|
|
int beforeLayerNum; //布阵层级 对比变化展示特效
|
protected override void InitComponent()
|
{
|
closeBtn.AddListener(CloseWindow);
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
|
GuildManager.Instance.FamilyActionInfoEvent += OnFamilyActionInfoEvent;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
|
GuildManager.Instance.FamilyActionInfoEvent -= OnFamilyActionInfoEvent;
|
}
|
|
|
void Display()
|
{
|
endTimeText.text = Language.Get("Arena14", TimeUtility.SecondsToHMS((int)(TimeUtility.GetTodayEndTime() - TimeUtility.ServerNow).TotalSeconds));
|
fightPowerText.text = PlayerDatas.Instance.baseData.FightPower.ToString();
|
|
var bossAction = GuildBossManager.Instance.GetGuildBossAction();
|
ShowBzInfo(bossAction);
|
|
}
|
|
//战力变化
|
void OnPlayerDataRefresh(PlayerDataType type)
|
{
|
if (type == PlayerDataType.FightPower)
|
fightPowerText.text = PlayerDatas.Instance.baseData.FightPower.ToString();
|
}
|
|
void OnFamilyActionInfoEvent(int familyID, int actionType)
|
{
|
if (actionType == GuildManager.GuildBossActionType)
|
{
|
var bossAction = GuildBossManager.Instance.GetGuildBossAction();
|
if (beforeLayerNum != bossAction.Value3)
|
{
|
bzEffect1.Play();
|
bzEffect2.Play();
|
ShowBzInfo(bossAction);
|
}
|
}
|
}
|
|
|
void ShowBzInfo(HA513_tagMCFamilyActionInfo.tagMCFamilyAction bossAction)
|
{
|
bzAttrText.text = GetAddAttrs(bossAction);
|
bzLayerText.text = $"{bossAction.Value3}/{GuildBossManager.Instance.bzMaxLevel}";
|
}
|
|
//获取布阵属性
|
string GetAddAttrs(HA513_tagMCFamilyActionInfo.tagMCFamilyAction action)
|
{
|
var layerNum = action.Value3;
|
var superHitRate = GuildBossManager.Instance.initSuperHitRate + (int)layerNum * GuildBossManager.Instance.bzAddAttrs[0];
|
var addHurtPer = (int)layerNum * GuildBossManager.Instance.bzAddAttrs[1];
|
|
if (addHurtPer == 0)
|
{
|
return Language.Get("GuildBoss18_0", superHitRate / 100);
|
}
|
return Language.Get("GuildBoss18_0", superHitRate / 100) + Language.Get("L1112") + Language.Get("GuildBoss18_1", addHurtPer / 100);
|
}
|
|
void OnSecondEvent()
|
{
|
endTimeText.text = Language.Get("Arena14", TimeUtility.SecondsToHMS((int)(TimeUtility.GetTodayEndTime() - TimeUtility.ServerNow).TotalSeconds));
|
}
|
|
void ShowProcess(float value)
|
{
|
//颜色从00FF0B 到 FFE400 到 E30400
|
processLeft.fillAmount = value;
|
processRight.fillAmount = value;
|
|
Color processColor = GetProcessColor(value);
|
processLeft.color = processColor;
|
processRight.color = processColor;
|
}
|
|
Color GetProcessColor(float value)
|
{
|
// 限制值在0-1范围内
|
value = Mathf.Clamp01(value);
|
|
if (value <= 0.5f)
|
{
|
float t = value / 0.5f;
|
return Color.Lerp(new Color(0f, 1f, 0.043f), new Color(1f, 0.894f, 0f), t);
|
}
|
else
|
{
|
float t = (value - 0.5f) / 0.5f;
|
return Color.Lerp(new Color(1f, 0.894f, 0f), new Color(0.89f, 0.016f, 0f), t);
|
}
|
}
|
|
|
}
|