yyl
22 小时以前 4b5b31a23a74c1559460643836d70778d7d49931
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
using System;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using LitJson;
using UnityEngine;
using UnityEngine.UI;
 
// 【战斗结算】
// 当收到 // B4 20 回合制战斗状态 #tagMCTurnFightState    State 为 4-结算,时,代表本场战斗已结束并结算
// char Msg[Len]; //size = Len   Msg信息为
// {"winFaction":获胜阵营, "statInfo":统计信息, “itemInfo“:[奖励物品信息列表]}
// 获胜阵营:   一般为1或者2,当玩家发起的战斗时,如果获胜阵营不等于1代表玩家失败了
// 统计信息: 格式  {"阵营编号":{"阵容编号":{"站位编号":{该武将统计信息字典}, ...}, ...}, ...}
// 阵营编号: 一般时1或2, 对应 B424 同步下去的阵营
// 阵容编号: 隶属于某个阵营的阵容编号,一般是从1开始,一个阵营在多V多的情况下可以有多个阵容
// 站位编号: 某个阵容中武将战斗实例的站位编号,一般从1开始,代表站位1
// 武将统计信息字典: 格式: {"ObjID":实例ID, "HeroID":玩家阵容武将ID, "NPCID":npc表ID, "AtkHurt":总输出, "DefHurt":总承伤, "CureHP":总治疗}
 
// 处理战斗结束逻辑
// IsBattleFinish = true;
// 结算逻辑
 
// {
// "itemInfo": [],
// "winFaction": 1,//获胜阵营:   一般为1或者2,当玩家发起的战斗时,如果获胜阵营不等于1代表玩家失败了
// "statInfo": {
//     "1": {
//     "1": {
//         "5": {
//         "NPCID": 0,
//         "DefHurt": 633,
//         "CureHP": 0,
//         "AtkHurt": 169247,
//         "ObjID": 1,
//         "HeroID": 510006
//         }
//     }
//     },
//     "2": {
//     "1": {
//         "2": {
//         "NPCID": 10101001,
//         "DefHurt": 169246,
//         "CureHP": 143096,
//         "AtkHurt": 999952,
//         "ObjID": 2,
//         "HeroID": 0
//         },
//         "4": {
//         "NPCID": 10101001,
//         "DefHurt": 0,
//         "CureHP": 0,
//         "AtkHurt": 0,
//         "ObjID": 3,
//         "HeroID": 0
//         },
//         "6": {
//         "NPCID": 10101001,
//         "DefHurt": 1,
//         "CureHP": 0,
//         "AtkHurt": 0,
//         "ObjID": 4,
//         "HeroID": 0
//         }
//     }
//     }
// }
// }
 
//"Msg":{"itemInfo":[{"ItemID":5,"Count":2},{"ItemID":3,"Count":40}],"winFaction":1,"statInfo":{"1":{"1":{"1":{"NPCID":0,"DefHurt":727,"CureHP":0,"AtkHurt":1891,"ObjID":1,"HeroID":530004},"3":{"NPCID":0,"DefHurt":483,"CureHP":1511,"AtkHurt":782,"ObjID":6,"HeroID":520001},"2":{"NPCID":0,"DefHurt":953,"CureHP":0,"AtkHurt":1712,"ObjID":5,"HeroID":510003}}},"2":{"1":{"1":{"NPCID":10101091,"DefHurt":638,"CureHP":0,"AtkHurt":140,"ObjID":2,"HeroID":610001},"3":{"NPCID":10101092,"DefHurt":625,"CureHP":0,"AtkHurt":126,"ObjID":3,"HeroID":610001},"5":{"NPCID":10101093,"DefHurt":3122,"CureHP":0,"AtkHurt":1897,"ObjID":4,"HeroID":510003}}}}}
 
//战场结算界面,存在多个的情况
public class BattleVictoryWin : UIBase
{
 
    [SerializeField] ScrollerController scroller;
 
    string guid;
    protected override void OnPreOpen()
    {
        guid = BattleSettlementManager.Instance.notifyGuid;
        scroller.OnRefreshCell += OnRefreshCell;
        CreateScroller();
    }
 
 
    protected override void OnPreClose()
    {
        scroller.OnRefreshCell -= OnRefreshCell;
        BattleSettlementManager.Instance.WinShowOver(guid);
    }
 
    List<Item> showItems = new List<Item>();
    void CreateScroller()
    {
        var jsonData = BattleSettlementManager.Instance.GetBattleSettlement(guid);
        if (jsonData == null)
        {
            DelayCloseWindow().Forget();
            return;
        }
        showItems.Clear();
        scroller.Refresh();
 
        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"]));
        }
 
        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);
    }
 
}