lcy
18 小时以前 247c64258e0102a1028199f14866a1fd1c1a205f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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");
    }
}