From e3ffaf333f0cf198af908fe8e69619aa77b9903c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 14 一月 2026 18:13:13 +0800
Subject: [PATCH] 287 【公会】BOSS讨伐

---
 Main/System/Guild/GuildBossWin.cs |  148 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 140 insertions(+), 8 deletions(-)

diff --git a/Main/System/Guild/GuildBossWin.cs b/Main/System/Guild/GuildBossWin.cs
index 979e6ec..65535f8 100644
--- a/Main/System/Guild/GuildBossWin.cs
+++ b/Main/System/Guild/GuildBossWin.cs
@@ -36,7 +36,7 @@
     [SerializeField] Button atkBtn;
     [SerializeField] Image angerAtk; //鎬掓皵鏀诲嚮
     [SerializeField] Transform normalAtk; //鏅�氭敾鍑�
-    [SerializeField] UIEffectPlayer atkEffect;  //鏅�氭敾鍑荤壒鏁� 0娆′笉鏄剧ず
+    [SerializeField] UIEffectPlayer atkEffect;  //鏅�氭敾鍑荤壒鏁� 0娆′笉鏄剧ず 鎸夐挳鐢�
     [SerializeField] Text normalAtkCntText; //鏅�氭敾鍑绘鏁�
     [SerializeField] Text atkCDText; //鏀诲嚮cd
     [SerializeField] Transform addTimesRect;
@@ -55,6 +55,15 @@
     [SerializeField] Transform attackArea3;
     [SerializeField] GuildBossOtherPlayer otherPlayer;  //鍒涘缓澶氫釜鐢�
     [SerializeField] GuildBossOtherPlayerAttack otherPlayerAttack;  //鍒涘缓澶氫釜鐢�
+
+    //鑷繁鐨勬敾鍑�
+    [SerializeField] UIEffectPlayer hurtEffect; 
+    [SerializeField] UIEffectPlayer hurtAngerEffect; 
+    [SerializeField] Text[] hurtValues;
+    [SerializeField] Text[] awardValues;
+    [SerializeField] Image[] awardIcons;
+    [SerializeField] Transform pos1;
+    [SerializeField] Transform pos2;
 
     [SerializeField] Transform fakeRedBZ;
     [SerializeField] Transform fakeRedAward;
@@ -79,15 +88,21 @@
         {
             UIManager.Instance.OpenWindow<GuildBossAwardWin>();
         });
+
+        bossModel.Create(GuildBossManager.Instance.bossSkinID, 1, motionName: "chuxian");
+        heroModel.Create(PhantasmPavilionManager.Instance.GetMyModelSkinID(), 1.5f);
     }
 
 
     protected override void OnPreOpen()
     {
+        
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
         GuildBossManager.Instance.BossHurtEvent += BossHurtEvent;
+        GuildBossManager.Instance.AtkResultEvent += AtkResultEvent;
         Display();
+        InitAttack();
     }
 
     protected override void OnPreClose()
@@ -95,7 +110,14 @@
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
         GuildBossManager.Instance.BossHurtEvent -= BossHurtEvent;
+        GuildBossManager.Instance.AtkResultEvent -= AtkResultEvent;
+
     }
+    protected override void NextFrameAfterOpen()
+    {
+        SoundPlayer.Instance.PlayUIAudio(28);
+    }
+
 
 
     void Display()
@@ -108,8 +130,7 @@
 
         nameText.text = PlayerDatas.Instance.baseData.PlayerName;
         BossHurtEvent();
-        bossModel.Create(GuildBossManager.Instance.bossSkinID);
-        heroModel.Create(PhantasmPavilionManager.Instance.GetMyModelSkinID());
+
     }
 
     //鎴樺姏鍙樺寲
@@ -304,11 +325,11 @@
             curLayer = (int)bossAction.Value3;
         }
 
-        if (curLayer >= GuildBossManager.Instance.bzMaxLevel)
-        {
-            SysNotifyMgr.Instance.ShowTip("GuildBoss2");
-            return;
-        }
+        // if (curLayer >= GuildBossManager.Instance.bzMaxLevel)
+        // {
+        //     SysNotifyMgr.Instance.ShowTip("GuildBoss2");
+        //     return;
+        // }
         if (GuildBossManager.Instance.m_BuZhenState == 1)
         {
             SysNotifyMgr.Instance.ShowTip("GuildBoss1");
@@ -371,4 +392,115 @@
         ShowDynamicUI();
     }
 
+    void AtkResultEvent()
+    {
+        //1. 鐜╁浠巔os1 绉诲姩鍒皃os2
+        //2. 鎾斁鏀诲嚮鍔ㄤ綔 - 鏄剧ず瀵瑰簲绫诲瀷鐗规晥
+        //3. 寤惰繜100姣椋樿鐗╁搧
+        heroModel.onComplete = null;
+        heroModel.PlayAnimation("run");
+        heroModel.transform.localPosition = pos1.localPosition;
+        heroModel.transform.DOLocalMove(pos2.localPosition, 0.3f).OnComplete(() =>
+        {
+            ShowDmg().Forget();
+        });
+
+    }
+
+    async UniTask ShowDmg()
+    {
+        heroModel.onComplete = () =>
+        {
+            heroModel.transform.localPosition = pos1.localPosition;
+        };
+        heroModel.PlayAnimation("attack");
+        if (GuildBossManager.Instance.atkResult.AtkType == 0)
+        {
+            hurtEffect.Play();
+        }
+        else
+        {
+            hurtAngerEffect.Play();
+        }
+        bossModel.PlayAnimation("hit");
+        bossModel.onComplete = () =>
+        {
+            bossModel.PlayAnimation("idle", true);
+            bossModel.onComplete = null;
+        };
+
+        for (int i = 0; i < hurtValues.Length; i++)
+        {
+            if (i < GuildBossManager.Instance.atkResult.HurtCount)
+            {
+                int index = i;
+                hurtValues[i].SetActive(true);
+                var tween = hurtValues[i].GetComponent<PositionTween>();
+                tween.SetStartState();
+                tween.Play(() =>
+                {
+                    hurtValues[index].SetActive(false);
+                });
+                var hurtData = GuildBossManager.Instance.atkResult.HurtList[i];
+                BattleDmg dmg = new BattleDmg()
+                {
+                    damage = hurtData.HurtValue + hurtData.HurtValueEx * Constants.ExpPointValue,
+                    attackType = hurtData.IsSuper == 1 ? (int)DamageType.CritDamage : 2
+                };
+                hurtValues[i].text = BattleUtility.DisplayDamageNum(dmg);
+                await UniTask.Delay(100);
+            }
+            else
+            {
+                hurtValues[i].SetActive(false);
+            }
+        }
+
+        for (int i = 0; i < awardValues.Length; i++)
+        {
+            if (i < GuildBossManager.Instance.atkResult.ItemCount)
+            {
+                var itemData = GuildBossManager.Instance.atkResult.ItemList[i];
+                awardValues[i].SetActive(true);
+                var tween = hurtValues[i].GetComponent<PositionTween>();
+                tween.SetStartState();
+                int index = i;
+                tween.Play(() =>
+                {
+                    awardValues[index].SetActive(false);
+                });
+
+
+                awardValues[i].text = itemData.Count.ToString();
+                awardIcons[i].SetItemSprite((int)itemData.ItemID);
+                await UniTask.Delay(100);
+            }
+            else
+            {
+                awardValues[i].SetActive(false);
+            }
+        }
+
+    }
+
+    void InitAttack()
+    {
+        for (int i = 0; i < hurtValues.Length; i++)
+        {
+            hurtValues[i].SetActive(false);
+        }
+
+        for (int i = 0; i < awardValues.Length; i++)
+        {
+            awardValues[i].SetActive(false);
+        }
+
+        heroModel.transform.localPosition = pos1.localPosition;
+        bossModel.onComplete = () =>
+        {
+            bossModel.PlayAnimation("idle", true);
+            bossModel.onComplete = null;
+        };
+        bossModel.PlayAnimation("chuxian");
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0