| 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"); | 
|     } | 
| } |