hch
昨天 f88d20f956b355588cf987a6534c39e016b1d8e8
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using LitJson;
using UnityEngine;
 
public class QYBattleVictoryWin : UIBase
{
    [SerializeField] AvatarCell myAvatarCell;
    [SerializeField] AvatarCell enemyAvatarCell;
    [SerializeField] TextEx txtMyName;
    [SerializeField] TextEx txtEnemyName;
    [SerializeField] TextEx winInfo;
    [SerializeField] TextEx quickWinInfo;
    [SerializeField] TextEx txtFuncName;
    [SerializeField] ScrollerController scroller;
    [SerializeField] ButtonEx detailBtn;
    JsonData jsonData;
    string battleName = BattleConst.QYBattleField;
 
    protected override void InitComponent()
    {
        detailBtn.SetListener(() =>
        {
            BattleSettlementManager.Instance.OpenBattleDetailWin(battleName);
        });
    }
 
    protected override void OnPreOpen()
    {
        scroller.OnRefreshCell += OnRefreshCell;
        jsonData = BattleSettlementManager.Instance.GetBattleSettlement(battleName);
        if (jsonData == null && QunyingManager.Instance.quickCnt == 0)
        {
            DelayCloseWindow().Forget();
            return;
        }
        Display();
        CreateScroller();
    }
 
    protected override void OnPreClose()
    {
        scroller.OnRefreshCell -= OnRefreshCell;
        BattleSettlementManager.Instance.WinShowOver(battleName);
        QunyingManager.Instance.quickCnt = 0;
        QunyingManager.Instance.itemInfos.Clear();
    }
    // B4 20 回合制战斗状态 #tagMCTurnFightState  通用的结算状态 State 4-结算奖励
    // Msg 中额外信息
    // "tagPlayerID":对战的目标ID,
    // "atkAddScore":发起方增加的积分,可能为0,
    // "defDecScore":被击方减少的积分,可能为0,
    // itemInfo:奖励物品列表,可能为空
    void Display()
    {
        int quickCnt = QunyingManager.Instance.quickCnt;
        uint tmpTagPlayerID = 0;
        if (jsonData.ContainsKey("tagPlayerID"))
        {
            tmpTagPlayerID = (uint)jsonData["tagPlayerID"];
        }
        else
        {
            tmpTagPlayerID = (uint)QunyingManager.Instance.tagPlayerID;
        }
        uint tagPlayerID = quickCnt == 0 ? tmpTagPlayerID : (uint)QunyingManager.Instance.tagPlayerID;
        if (!QunyingManager.Instance.TryGetPlayerInfo(tagPlayerID, out QunyingMatchInfo info))
            return;
        uint enemyFace = info.Face;
        uint enemyFacePic = info.FacePic;
 
        myAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
                                                PlayerDatas.Instance.baseData.face,
                                                PlayerDatas.Instance.baseData.facePic));
        enemyAvatarCell.InitUI(AvatarHelper.GetAvatarModel((int)tagPlayerID, (int)enemyFace, (int)enemyFacePic));
        enemyAvatarCell.SetListener(() =>
        {
            AvatarHelper.TryViewOtherPlayerInfo((int)tagPlayerID, viewPlayerLineupType: (int)BattlePreSetType.Qunying);
        });
 
        txtMyName.text = PlayerDatas.Instance.baseData.PlayerName;
        txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName);
        if (quickCnt == 0)
        {
            winInfo.SetActive(true);
            quickWinInfo.SetActive(false);
            winInfo.text = QunyingManager.Instance.tagRank.ToString();
        }
        else
        {
            winInfo.SetActive(false);
            quickWinInfo.SetActive(true);
            quickWinInfo.text = Language.Get("Qunying16", quickCnt);
        }
 
        int funcId = (int)FuncOpenEnum.Qunying;
        txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty;
    }
 
    List<Item> showItems = new List<Item>();
    void CreateScroller()
    {
 
        showItems.Clear();
        scroller.Refresh();
 
        if (QunyingManager.Instance.quickCnt == 0)
        {
            if (!jsonData.ContainsKey("itemInfo"))
            {
                return;
            }
 
            var resultStr = jsonData["itemInfo"];
            for (int i = 0; i < resultStr.Count; i++)
            {
                showItems.Add(new Item((int)resultStr[i]["ItemID"], (long)resultStr[i]["Count"]));
            }
        }
        else
        {
            for (int i = 0; i < QunyingManager.Instance.itemInfos.Count; i++)
            {
                showItems.Add(QunyingManager.Instance.itemInfos[i]);
            }
        }
 
        showItems.Sort(SortItem);
        for (int i = 0; i < showItems.Count; i++)
        {
            scroller.AddCell(ScrollerDataType.Header, i);
        }
        scroller.Restart();
    }
 
    int SortItem(Item itemA, Item itemB)
    {
        var itemConfigA = ItemConfig.Get(itemA.id);
        var itemConfigB = ItemConfig.Get(itemB.id);
        return itemConfigB.ItemColor - itemConfigA.ItemColor;
    }
 
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as SettlementAwardCell;
        var item = showItems[cell.index];
        _cell?.Display(item.id, item.countEx);
    }
}