From 4d6ffb3f8acce7b230076ed7124b3e3c4aebe4d1 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 23 十月 2025 15:53:27 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Battle/BattleField/BoneBattleField.cs   |   85 ++++----
 Main/System/Settlement/BoneBattleVictoryWin.cs      |   76 ++++++++
 Main/System/Settlement/BoneBattleFailWin.cs.meta    |   11 +
 Main/System/Settlement/BoneBattleVictoryWin.cs.meta |   11 +
 Main/System/Settlement/BattleSettlementManager.cs   |   13 +
 Main/System/Settlement/BoneBattleFailWin.cs         |   41 ++++
 Main/System/ChallengeTab/ChallengeTabWin.cs         |   21 ++
 Main/System/Battle/BoneFieldBattleWin.cs            |  260 ++++++++++++++++++++++++----
 8 files changed, 438 insertions(+), 80 deletions(-)

diff --git a/Main/System/Battle/BattleField/BoneBattleField.cs b/Main/System/Battle/BattleField/BoneBattleField.cs
index 51d655f..c0146ed 100644
--- a/Main/System/Battle/BattleField/BoneBattleField.cs
+++ b/Main/System/Battle/BattleField/BoneBattleField.cs
@@ -1,24 +1,14 @@
-using System;
 using LitJson;
-using UnityEngine;
 using System.Collections.Generic;
-
+using System.Linq;
 
 public class BoneBattleField : BattleField
 {
-    protected int chapter;//   绔犺妭
-    protected int wave;//  娉㈡暟
-    protected int level;// 鍏冲崱
     protected JsonData extendData;
-
-    protected MainChapterConfig chapterConfig;
-
     protected MainLevelConfig levelConfig;
-
-
     public BoneBattleField(string _guid) : base(_guid)
     {
-        
+
     }
 
     public override void Init(int MapID, int FuncLineID, JsonData _extendData,
@@ -26,22 +16,12 @@
     {
         base.Init(MapID, FuncLineID, extendData, _redTeamList, _blueTeamList, turnMax);
 
-        chapter = FuncLineID / 10000;
-        wave = MapID == 1 ? FuncLineID % 100 : 1;//绗嚑娉㈡��
-        level = (FuncLineID % 10000) / 100;
-
+        int level = FuncLineID;// 鍏冲崱
         extendData = _extendData;
-        chapterConfig = MainChapterConfig.Get(chapter);
         levelConfig = MainLevelConfig.Get(level);
 
         SetBattleMode(BattleMode.Record);
     }
-
-    public override void Release()
-    {
-        base.Release();
-    }
-
 
     public override void AutoSetBattleMode()
     {
@@ -81,25 +61,15 @@
 
     public override void WhaleFall()
     {
-        UIManager.Instance.CloseWindow<StoryBossBattleWin>();
         AutoFightModel.Instance.isPause = false;
         Destroy();
-        UIManager.Instance.OpenWindow<BoneFieldWin>();
+
+        if (UIManager.Instance.IsOpened<BoneFieldBattleWin>())
+        {
+            UIManager.Instance.CloseWindow<BoneFieldBattleWin>();
+            UIManager.Instance.OpenWindow<BoneFieldWin>();
+        }
     }
-
-    
-
-    public override void HaveRest()
-    {
-        //  涓荤嚎BOSS鎴樻枟娌℃湁浼戞伅
-    }
-
-
-    // public override void OnBattleEnd(JsonData turnFightStateData)
-    // {
-    //     base.OnBattleEnd(turnFightStateData);
-    //     // HaveRest();
-    // }
 
     public override void Run()
     {
@@ -115,7 +85,7 @@
     {
         if (IsBattleFinish)
             return;
-            
+
         //  涓嶈璋冪敤base鐨勫嚱鏁�
         BattleManager.Instance.DistributeNextReportPackage(guid);
     }
@@ -128,6 +98,39 @@
             fsBattleWin = UIManager.Instance.OpenWindow<BoneFieldBattleWin>();
         }
         fsBattleWin.SetBattleField(this);
-        UIManager.Instance.CloseWindow<BoneFieldWin>();
+
+        if (UIManager.Instance.IsOpened<BoneFieldWin>())
+        {
+            UIManager.Instance.CloseWindow<BoneFieldWin>();
+        }
+    }
+
+    public NPCLineupConfig GetBossLineupConfig()
+    {
+        if (!DungeonConfig.TryGetDungeonID(MapID, FuncLineID, out int dungeonID))
+            return null;
+        if (!DungeonConfig.HasKey(dungeonID))
+            return null;
+        int[] lineupIDList = DungeonConfig.Get(dungeonID).LineupIDList;
+        if (lineupIDList.IsNullOrEmpty())
+            return null;
+        int lineupID = lineupIDList[0];
+        if (!NPCLineupConfig.HasKey(lineupID))
+            return null;
+        NPCLineupConfig nPCLineupConfig = NPCLineupConfig.Get(lineupID);
+
+        return nPCLineupConfig;
+    }
+
+    public override BattleObject FindBoss()
+    {
+        var config = GetBossLineupConfig();
+        if (config != null)
+        {
+            int bossId = config.BossID;
+            BattleObject bo = battleObjMgr.allBattleObjDict.Values.FirstOrDefault(bo => bo.teamHero.NPCID == bossId);
+            return bo;
+        }
+        return null;
     }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/BoneFieldBattleWin.cs b/Main/System/Battle/BoneFieldBattleWin.cs
index d9fa190..a3445c0 100644
--- a/Main/System/Battle/BoneFieldBattleWin.cs
+++ b/Main/System/Battle/BoneFieldBattleWin.cs
@@ -1,53 +1,39 @@
-锘縰sing System;
+锘縰sing System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class BoneFieldBattleWin : UIBase
 {
-
-    // 缁勪欢寮曠敤
+    [SerializeField] Transform transButtons;
     public Transform mountPoint;
-
     private BattleRootNode battleRootNode = null;
+    private BoneBattleField battleField;
+    [SerializeField] private Button btnSpeed;
 
+    [SerializeField] private Text textSpeed;
 
-    private BattleField battleField;
+    [SerializeField] private Button btnPass;
 
-    [SerializeField]
-    private Button btnSpeed;
-
-    [SerializeField]
-    private Text textSpeed;
-
-    [SerializeField]
-    private Button btnPass;
-
-    [SerializeField]
-    private Button btnPause;
+    [SerializeField] private Button btnPause;
 
     public BossLifeBar bossLifeBar;
-
-
     public SkillWordCell[] skillWordCells;
-
     public BossHeadCell bossHeadCell;
-
     public Text txtBossName;
-
     public Text txtBattleRound;
-
     public TotalDamageDisplayer totalDamageDisplayer;
+    // public SkillTips skillTipsRed;
+    // public SkillTips skillTipsBlue;
+    private BattleObject bossBattleObject = null;
+    // [SerializeField] public List<BattleBuffCell> buffCells;
 
     // 鐢熷懡鍛ㄦ湡
     protected override void InitComponent()
     {
         base.InitComponent();
         // 鍒濆鍖栫粍浠跺紩鐢� 缁戝畾鎸夐挳绛塙I缁勪欢浜嬩欢
-
         btnSpeed.AddListener(ChangeSpeed);
-
         btnPass.AddListener(OnClickPass);
-
         btnPause.AddListener(OnClickPause);
     }
 
@@ -55,7 +41,6 @@
     {
         if (null == battleField)
             return;
-
         battleField.IsPause = !battleField.IsPause;
     }
 
@@ -63,7 +48,6 @@
     {
         if (null == battleField)
             return;
-
         battleField.ForceFinish();
     }
 
@@ -71,7 +55,6 @@
     {
         if (null == battleField)
             return;
-
         BattleManager.Instance.speedIndex = (BattleManager.Instance.speedIndex + 1) % BattleManager.Instance.speedGear.Length;
         battleField.SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]);
         textSpeed.text = (BattleManager.Instance.speedIndex + 1).ToString();
@@ -81,32 +64,166 @@
     {
         base.OnPreOpen();
         // SetBattleField(BattleManager.Instance.storyBattleField);
+        MainWin.TabChangeEvent += OnTabChangeEvent;
         BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
-
-        UIManager.Instance.CloseWindow<MainWin>();
+        EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
+        EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnCastSkill);
+        BattleManager.Instance.storyBattleField.IsPause = true;
+        bool isOpenBattleChangeTab = IsOpenBattleChangeTab();
+        transButtons.localPosition = new Vector3(0, isOpenBattleChangeTab ? 200 : 0, 0);
+        if (isOpenBattleChangeTab)
+        {
+            UIManager.Instance.GetUI<MainWin>()?.CloseSubUI();
+        }
+        else
+        {
+            UIManager.Instance.CloseWindow<MainWin>();
+        }
     }
+
+
 
     protected override void OnPreClose()
     {
         base.OnPreClose();
-        UIManager.Instance.CloseWindow<BattleHUDWin>();
+        MainWin.TabChangeEvent -= OnTabChangeEvent;
         BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
+        EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
+        EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnCastSkill);
+        UIManager.Instance.CloseWindow<BattleHUDWin>();
 
-        if (!UIManager.Instance.IsOpened<MainWin>())
+        bool isOpenBattleChangeTab = IsOpenBattleChangeTab();
+        if (isOpenBattleChangeTab)
+        {
+            UIManager.Instance.GetUI<MainWin>()?.RestoreSubUI();
+        }
+        else
+        {
             UIManager.Instance.OpenWindow<MainWin>();
+        }
+
+        if (bossBattleObject != null)
+        {
+            if (bossBattleObject.buffMgr != null)
+            {
+                bossBattleObject.buffMgr.onBuffChanged -= OnBuffChanged;
+            }
+            bossBattleObject = null;
+        }
+
+        if (battleField != null)
+        {
+            battleField.OnRoundChange -= OnRoundChange;
+            battleField = null;
+        }
+    }
+
+    private void OnTabChangeEvent()
+    {
+        UIManager.Instance.CloseWindow<BoneFieldBattleWin>();
+    }
+    
+    private void OnCastSkill(string guid, SkillConfig skillConfig, TeamHero teamHero)
+    {
+        if (battleField == null)
+            return;
+
+        if (battleField.guid != guid)
+            return;
+
+        BattleObject battleObject = battleField.battleObjMgr.GetBattleObject(teamHero.ObjID);
+        bool isRed = battleObject.Camp == BattleCamp.Red;
+        // SkillTips tips = isRed ? skillTipsRed : skillTipsBlue;
+        // tips.PlayMotion(battleField, isRed, teamHero, skillConfig);
     }
 
     private void OnCreateBattleField(string arg1, BattleField field)
     {
         if (field.GetType() == battleField.GetType())
         {
-            SetBattleField(field);
+            SetBattleField(field as BoneBattleField);
         }
     }
 
-    protected override void OnOpen()
+
+    public void Display()
     {
-        base.OnOpen();
+
+        NPCLineupConfig lineupConfig = battleField.GetBossLineupConfig();
+
+        if (bossBattleObject != null)
+        {
+            if (bossBattleObject.buffMgr != null)
+            {
+                bossBattleObject.buffMgr.onBuffChanged -= OnBuffChanged;
+            }
+            bossBattleObject = null;
+        }
+
+        bossBattleObject = battleField.FindBoss();
+
+        DisplaySkillWordsList(lineupConfig);
+
+        if (null != bossBattleObject)
+        {
+            TeamHero teamHero = bossBattleObject.teamHero;
+            bossHeadCell.SetTeamHero(teamHero);
+            txtBossName.text = teamHero.name;
+            NPCConfig npcConfig = NPCConfig.Get(teamHero.NPCID);
+            bossLifeBar.SetBaseInfo(Mathf.Max(1, npcConfig.LifeBarCount), (ulong)teamHero.curHp, (ulong)teamHero.maxHp);
+            bossBattleObject.buffMgr.onBuffChanged -= OnBuffChanged;
+            bossBattleObject.buffMgr.onBuffChanged += OnBuffChanged;
+        }
+        else
+        {
+            bossHeadCell.SetTeamHero(null);
+            txtBossName.text = string.Empty;
+            bossLifeBar.SetBaseInfo(2, 2, 2);
+            Debug.LogError("鎵句笉鍒癰oss");
+        }
+
+        OnRoundChange(battleField.round, battleField.turnMax);
+
+        OnBuffChanged();
+
+        totalDamageDisplayer.SetActive(false);
+
+        // skillTipsBlue.SetActive(false);
+        // skillTipsRed.SetActive(false);
+    }
+
+    private void OnBuffChanged()
+    {
+        var buffList = new List<HB428_tagSCBuffRefresh>();
+        if (null != bossBattleObject)
+        {
+            buffList = bossBattleObject.buffMgr.GetBuffList();
+        }
+        // RefreshBuff(buffList);
+    }
+
+    private void RefreshHP()
+    {
+        if (null != bossBattleObject)
+        {
+            TeamHero teamHero = bossBattleObject.teamHero;
+            bossLifeBar.Show((ulong)teamHero.curHp, (ulong)teamHero.maxHp);
+        }
+    }
+
+
+    private void OnDamageTaken(BattleDmgInfo info)
+    {
+        if (info.battleFieldGuid != battleField.guid)
+            return;
+
+        if (info.hurtObj.ObjID == bossBattleObject.ObjID)
+        {
+            // Update the boss's health bar
+            RefreshHP();
+        }
+
+        totalDamageDisplayer.SetDamage(info);
     }
 
     protected override void OnClose()
@@ -132,8 +249,14 @@
         base.CompleteClose();
     }
 
-    public void SetBattleField(BattleField _battleField)
+    public void SetBattleField(BoneBattleField _battleField)
     {
+        if (battleField != null)
+        {
+            battleField.OnRoundChange -= OnRoundChange;
+            battleField = null;
+        }
+
         battleField = _battleField;
         if (battleRootNode != null)
         {
@@ -156,7 +279,70 @@
 
         ui.SetBattleField(battleField);
         battleField.UpdateCanvas(canvas);
-
+        Display();
+        battleField.OnRoundChange += OnRoundChange;
         textSpeed.text = (BattleManager.Instance.speedIndex + 1).ToString();
     }
+
+    public void DisplaySkillWordsList(NPCLineupConfig lineUPConfig)
+    {
+        if (skillWordCells.IsNullOrEmpty())
+            return;
+
+        if (null == lineUPConfig)
+            return;
+
+        for (int i = 0; i < skillWordCells.Length; i++)
+        {
+            if (i < lineUPConfig.SkillIDExList.Length)
+            {
+                skillWordCells[i].SetActive(true);
+                int skillID = lineUPConfig.SkillIDExList[i];
+                skillWordCells[i].Init(skillID, () =>
+                {
+                    SmallTipWin.showText = Language.Get("SmallTipFomat", SkillConfig.Get(skillID)?.SkillName, SkillConfig.Get(skillID)?.Description);
+                    SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition);
+                    SmallTipWin.isDownShow = true;
+                    UIManager.Instance.OpenWindow<SmallTipWin>();
+                });
+            }
+            else
+            {
+                skillWordCells[i].SetActive(false);
+            }
+        }
+    }
+
+    // public void RefreshBuff(List<HB428_tagSCBuffRefresh> datas)
+    // {
+    //     if (buffCells.IsNullOrEmpty())
+    //         return;
+
+
+    //     for (int i = 0; i < buffCells.Count; i++)
+    //     {
+    //         if (i < datas.Count)
+    //         {
+    //             buffCells[i].SetActive(true);
+    //             HB428_tagSCBuffRefresh buffData = datas[i];
+    //             buffCells[i].Init(buffData, () =>
+    //             {
+    //                 //  鐐瑰嚮buff鍥炬爣 鏄剧ずbuff鎻忚堪/褰撳墠韬笂鎵�鏈塨uff
+    //             });
+    //         }
+    //         else
+    //         {
+    //             buffCells[i].SetActive(false);
+    //         }
+    //     }
+    // }
+
+    private void OnRoundChange(int round, int maxRound)
+    {
+        txtBattleRound.text = string.Format("{0}/{1}", round, maxRound);
+    }
+    bool IsOpenBattleChangeTab()
+    {
+        return FuncOpen.Instance.IsFuncOpen(ArenaManager.Instance.BattleChangeTabFuncId);
+    }
 }
diff --git a/Main/System/ChallengeTab/ChallengeTabWin.cs b/Main/System/ChallengeTab/ChallengeTabWin.cs
index bc04981..5bf2086 100644
--- a/Main/System/ChallengeTab/ChallengeTabWin.cs
+++ b/Main/System/ChallengeTab/ChallengeTabWin.cs
@@ -5,7 +5,7 @@
 {
     [SerializeField] ChallengeTabButton btnBoneField;
     [SerializeField] ChallengeTabButton btnArena;
-    
+
     protected override void InitComponent()
     {
         base.InitComponent();
@@ -126,7 +126,24 @@
             UIManager.Instance.CloseWindow<ChallengeTabWin>();
             if (!FuncOpen.Instance.IsFuncOpen(funcId, true))
                 return;
-            UIManager.Instance.OpenWindow<BoneFieldWin>();
+            BattleField battleField = BattleManager.Instance.GetBattleFieldByMapID(30010);
+            if (battleField != null)
+            {
+                BoneFieldBattleWin battleWin;
+                if (!UIManager.Instance.IsOpened<BoneFieldBattleWin>())
+                {
+                    battleWin = UIManager.Instance.OpenWindow<BoneFieldBattleWin>();
+                }
+                else
+                {
+                    battleWin = UIManager.Instance.GetUI<BoneFieldBattleWin>();
+                }
+                battleWin.SetBattleField(battleField as BoneBattleField);
+            }
+            else
+            {
+                UIManager.Instance.OpenWindow<BoneFieldWin>();
+            }
         });
     }
 
diff --git a/Main/System/Settlement/BattleSettlementManager.cs b/Main/System/Settlement/BattleSettlementManager.cs
index 0e2f583..c55daaf 100644
--- a/Main/System/Settlement/BattleSettlementManager.cs
+++ b/Main/System/Settlement/BattleSettlementManager.cs
@@ -38,6 +38,9 @@
             case "ArenaBattleField":
                 PopupWindowsProcessor.Instance.Add(isWin ? "ArenaBattleVictoryWin" : "ArenaBattleFailWin", false);
                 break;
+            case "BoneBattleField":
+                PopupWindowsProcessor.Instance.Add(isWin ? "BoneBattleVictoryWin" : "BoneBattleFailWin", false);
+                break;
             default:
                 PopupWindowsProcessor.Instance.Add(isWin ? "BattleVictoryWin" : "BattleFailWin", false);
                 break;
@@ -59,6 +62,16 @@
                     UIManager.Instance.OpenWindow<ArenaBattleFailWin>();
                 }
                 break;
+            case "BoneBattleField":
+                if (isWin)
+                {
+                    UIManager.Instance.OpenWindow<BoneBattleVictoryWin>();
+                }
+                else
+                {
+                    UIManager.Instance.OpenWindow<BoneBattleFailWin>();
+                }
+                break;
             default:
                 if (isWin)
                 {
diff --git a/Main/System/Settlement/BoneBattleFailWin.cs b/Main/System/Settlement/BoneBattleFailWin.cs
new file mode 100644
index 0000000..bb0319d
--- /dev/null
+++ b/Main/System/Settlement/BoneBattleFailWin.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
+using LitJson;
+using UnityEngine;
+using UnityEngine.UI;
+
+//鎴樺満缁撶畻鐣岄潰锛屽瓨鍦ㄥ涓殑鎯呭喌
+public class BoneBattleFailWin : UIBase
+{
+    [SerializeField] TextEx txtFuncName;
+    [SerializeField] Button tipEquipBtn;
+    [SerializeField] Button tipHeroPosBtn;
+    string battleName = "BoneBattleField";
+    protected override void InitComponent()
+    {
+        tipEquipBtn.AddListener(() =>
+        {
+            CloseWindow();
+        });
+
+        tipHeroPosBtn.AddListener(() =>
+        {
+            CloseWindow();
+            UIManager.Instance.OpenWindow<HeroPosWin>();
+        });
+    }
+
+    protected override void OnPreOpen()
+    {
+        int funcId = BoneFieldManager.Instance.funcId;
+        txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty;
+    }
+
+
+    protected override void OnPreClose()
+    {
+        BattleSettlementManager.Instance.WinShowOver(battleName);
+    }
+
+}
\ No newline at end of file
diff --git a/Main/System/Settlement/BoneBattleFailWin.cs.meta b/Main/System/Settlement/BoneBattleFailWin.cs.meta
new file mode 100644
index 0000000..a161a1e
--- /dev/null
+++ b/Main/System/Settlement/BoneBattleFailWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 67d3854b366b0f64cb73de975d6aa391
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Settlement/BoneBattleVictoryWin.cs b/Main/System/Settlement/BoneBattleVictoryWin.cs
new file mode 100644
index 0000000..f5c4dba
--- /dev/null
+++ b/Main/System/Settlement/BoneBattleVictoryWin.cs
@@ -0,0 +1,76 @@
+using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
+using UnityEngine;
+
+public class BoneBattleVictoryWin : UIBase
+{
+    [SerializeField] TextEx txtFuncName;
+    [SerializeField] ScrollerController scroller;
+
+    string battleName = "BoneBattleField";
+    protected override void OnPreOpen()
+    {
+        scroller.OnRefreshCell += OnRefreshCell;
+        CreateScroller();
+        int funcId = BoneFieldManager.Instance.funcId;
+        txtFuncName.text = FuncOpenLVConfig.HasKey(funcId) ? FuncOpenLVConfig.Get(funcId).Name : string.Empty;
+    }
+
+
+    protected override void OnPreClose()
+    {
+        scroller.OnRefreshCell -= OnRefreshCell;
+        BattleSettlementManager.Instance.WinShowOver(battleName);
+    }
+
+    List<Item> showItems = new List<Item>();
+    void CreateScroller()
+    {
+        var jsonData = BattleSettlementManager.Instance.GetBattleSettlement(battleName);
+        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);
+    }
+
+}
\ No newline at end of file
diff --git a/Main/System/Settlement/BoneBattleVictoryWin.cs.meta b/Main/System/Settlement/BoneBattleVictoryWin.cs.meta
new file mode 100644
index 0000000..a09a3c8
--- /dev/null
+++ b/Main/System/Settlement/BoneBattleVictoryWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8c57d47824f8a4e4fb5f62b5cbe99f86
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0