using System.Collections.Generic; 
 | 
using Cysharp.Threading.Tasks; 
 | 
using LitJson; 
 | 
using UnityEngine; 
 | 
  
 | 
//战场结算界面,存在多个的情况 
 | 
public class ArenaBattleFailWin : UIBase 
 | 
{ 
 | 
    [SerializeField] AvatarCell myAvatarCell; 
 | 
    [SerializeField] AvatarCell enemyAvatarCell; 
 | 
    [SerializeField] TextEx txtMyName; 
 | 
    [SerializeField] TextEx txtEnemyName; 
 | 
    [SerializeField] TextEx txtMyScore; 
 | 
    [SerializeField] TextEx txtEnemyScore; 
 | 
     [SerializeField] TextEx txtFuncName; 
 | 
    [SerializeField] ScrollerController scroller; 
 | 
    JsonData jsonData; 
 | 
    string battleName = "ArenaBattleField"; 
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
  
 | 
    } 
 | 
  
 | 
    protected override void OnPreOpen() 
 | 
    { 
 | 
        scroller.OnRefreshCell += OnRefreshCell; 
 | 
        jsonData = BattleSettlementManager.Instance.GetBattleSettlement(battleName); 
 | 
        if (jsonData == null) 
 | 
        { 
 | 
            DelayCloseWindow().Forget(); 
 | 
            return; 
 | 
        } 
 | 
        Display(); 
 | 
        CreateScroller(); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreClose() 
 | 
    { 
 | 
        scroller.OnRefreshCell -= OnRefreshCell; 
 | 
        BattleSettlementManager.Instance.WinShowOver(battleName); 
 | 
    } 
 | 
  
 | 
    // B4 20 回合制战斗状态 #tagMCTurnFightState  通用的结算状态 State 4-结算奖励 
 | 
    // Msg 中额外信息 
 | 
    // "tagPlayerID":对战的目标ID, 
 | 
    // "atkAddScore":发起方增加的积分,可能为0, 
 | 
    // "defDecScore":被击方减少的积分,可能为0, 
 | 
    // itemInfo:奖励物品列表,可能为空 
 | 
    void Display() 
 | 
    { 
 | 
        if (!jsonData.ContainsKey("tagPlayerID") || !jsonData.ContainsKey("atkAddScore") || !jsonData.ContainsKey("defDecScore")) 
 | 
            return; 
 | 
        uint tagPlayerID = (uint)jsonData["tagPlayerID"]; 
 | 
        int atkAddScore = (int)jsonData["atkAddScore"]; 
 | 
        int defDecScore = (int)jsonData["defDecScore"]; 
 | 
        if (!ArenaManager.Instance.TryGetPlayerInfo(tagPlayerID, out ArenaMatchInfo 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)); 
 | 
        txtMyName.text = PlayerDatas.Instance.baseData.PlayerName; 
 | 
        txtEnemyName.text = UIHelper.ServerStringTrim(info.PlayerName); 
 | 
        txtMyScore.text = Language.Get("Arena17", atkAddScore); 
 | 
        txtEnemyScore.text = Language.Get("Arena21", defDecScore); 
 | 
  
 | 
        int funcId = ArenaManager.Instance.funcId; 
 | 
        txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty; 
 | 
    } 
 | 
    List<Item> showItems = new List<Item>(); 
 | 
    void CreateScroller() 
 | 
    { 
 | 
  
 | 
        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); 
 | 
    } 
 | 
} 
 |