using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using System; 
 | 
  
 | 
public class ArenaRecordCell : MonoBehaviour 
 | 
{ 
 | 
    [SerializeField] AvatarCell avatarCell; 
 | 
    [SerializeField] TextEx txtName; 
 | 
    [SerializeField] TextEx txtDate; 
 | 
    [SerializeField] TextEx txtFightPoint; 
 | 
    [SerializeField] TextEx txtState; 
 | 
    [SerializeField] TextEx txtAdd; 
 | 
    [SerializeField] TextEx txtTimeInvalid; 
 | 
    [SerializeField] TextEx txtNeedCount; 
 | 
    [SerializeField] ImageEx imgMoneyIcon; 
 | 
    [SerializeField] ImageEx imgType; 
 | 
    [SerializeField] Transform transChallenge; 
 | 
    [SerializeField] OfficialTitleCell officialTitleCell; 
 | 
    [SerializeField] ButtonEx btnChallenge; 
 | 
    ArenaGameRec arenaGameRec; 
 | 
    void Start() 
 | 
    { 
 | 
        btnChallenge.SetListener(() => 
 | 
        { 
 | 
            if (arenaGameRec == null) 
 | 
                return; 
 | 
            ArenaManager.Instance.SendTurnFight(arenaGameRec.Value3); 
 | 
            ArenaManager.Instance.atkPlayerId = arenaGameRec.Value3; 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    public void Display(int index) 
 | 
    { 
 | 
        uint playerID = PlayerDatas.Instance.baseData.PlayerID; 
 | 
        ArenaManager.Instance.TryGetSortedArenaGameRecList(playerID, out List<ArenaGameRec> sortedList); 
 | 
        if (sortedList.IsNullOrEmpty() || index < 0 || index >= sortedList.Count) 
 | 
            return; 
 | 
        arenaGameRec = sortedList[index]; 
 | 
        imgType.SetSprite(arenaGameRec.Value2 == 1 ? "ArenaRecordTypeAtk" : "ArenaRecordTypeDef"); 
 | 
        txtDate.text = FormatTime(arenaGameRec.Time); 
 | 
        // true 已失效 false 未失效 
 | 
        bool isTimeInvalid = ArenaManager.Instance.IsTimeInvalid(arenaGameRec.Time); 
 | 
        // 发起攻击,打赢有积分,打输没有 
 | 
        //被攻击的,打赢没有积分,打输扣积分 
 | 
        // 0 打别人胜利 1 打别人输 2 被打,我赢 3 被打,我输 
 | 
        int state = GetState(arenaGameRec.Value2, arenaGameRec.Value4); 
 | 
        transChallenge.SetActive(!isTimeInvalid && state == 3); 
 | 
        txtTimeInvalid.SetActive(isTimeInvalid); 
 | 
        if (state == 0 || state == 2) 
 | 
        { 
 | 
            txtState.text = UIHelper.AppendColor(TextColType.Green, Language.Get("Arena09")); 
 | 
            txtAdd.text = UIHelper.AppendColor(TextColType.Green, Language.Get("Arena17", arenaGameRec.AddScore)); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            txtState.text = UIHelper.AppendColor(TextColType.Red, Language.Get("Arena10")); 
 | 
            if (arenaGameRec.AddScore == 0) 
 | 
            { 
 | 
                txtAdd.text = UIHelper.AppendColor(TextColType.Red, Language.Get("Arena21", arenaGameRec.AddScore)); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                txtAdd.text = UIHelper.AppendColor(TextColType.Red, Language.Get("Arena18", arenaGameRec.AddScore)); 
 | 
            } 
 | 
  
 | 
        } 
 | 
        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)arenaGameRec.Value3, (int)arenaGameRec.Value5, (int)arenaGameRec.Value6)); 
 | 
        txtName.text = arenaGameRec.Name; 
 | 
        txtFightPoint.text = UIHelper.ReplaceLargeArtNum(arenaGameRec.FightPower); 
 | 
        officialTitleCell.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID); 
 | 
        imgMoneyIcon.SetIconWithMoneyType(ArenaManager.Instance.ChallengeMoneyType); 
 | 
        txtNeedCount.text = ArenaManager.Instance.NeedChallengeMoneyCnt.ToString(); 
 | 
    } 
 | 
  
 | 
    // 0 打别人胜利 1 打别人输 2 被打,我赢 3 被打,我输 
 | 
    public int GetState(uint isAtk, uint isWin) 
 | 
    { 
 | 
        if (isAtk == 1) // 发起攻击 
 | 
        { 
 | 
            return isWin == 1 ? 0 : 1; 
 | 
        } 
 | 
        else // 被攻击 
 | 
        { 
 | 
            return isWin == 1 ? 2 : 3; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /// <summary> 
 | 
    /// 格式化时间戳为 "月-日 时:分:秒" 格式 
 | 
    /// </summary> 
 | 
    /// <param name="timeStamp">时间戳</param> 
 | 
    /// <returns>格式化后的时间字符串</returns> 
 | 
    private string FormatTime(uint timeStamp) 
 | 
    { 
 | 
        DateTime dateTime = TimeUtility.GetTime(timeStamp); 
 | 
        return dateTime.ToString("MM-dd HH:mm:ss"); 
 | 
    } 
 | 
} 
 |