From e3631d3e1590b5d955a21257a00ec661a5877eb1 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 04 十一月 2025 16:31:41 +0800
Subject: [PATCH] 0312 装备拾取调整:单武将攻击先掉落装备,不管中间发生几次攻击,几次技能 几次掉落都不弹装备,待下一个武将(含敌我)开始攻击前处理装备
---
Main/System/Equip/EquipModel.cs | 81 ++++++++++++++++++++++----
Main/System/Main/AutoFightModel.cs | 1
Main/System/Battle/RecordPlayer/RecordAction.cs | 8 ++
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 2
Main/Common/EventName.cs | 1
Main/System/Equip/ItemsOnFloor.cs | 5 +
Main/System/Equip/FloorItemCell.cs | 11 ---
Main/System/Equip/EquipExchangeCell.cs | 15 +++++
Main/System/Battle/BattleField/StoryBattleField.cs | 10 +--
9 files changed, 102 insertions(+), 32 deletions(-)
diff --git a/Main/Common/EventName.cs b/Main/Common/EventName.cs
index 15df307..4b7b3c2 100644
--- a/Main/Common/EventName.cs
+++ b/Main/Common/EventName.cs
@@ -15,4 +15,5 @@
public const string BATTLE_CAST_SKILL = "BATTLE_CAST_SKILL";//鏂芥斁鎶�鑳�
public const string BATTLE_END = "BATTLE_END";//鎴樻枟缁撴潫
+ public const string RECORDPLAYER_END = "RECORDPLAYER_END"; //鎴樻枟灏忕墖娈电粨鏉�
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/StoryBattleField.cs b/Main/System/Battle/BattleField/StoryBattleField.cs
index aa18fce..f4279e7 100644
--- a/Main/System/Battle/BattleField/StoryBattleField.cs
+++ b/Main/System/Battle/BattleField/StoryBattleField.cs
@@ -154,6 +154,7 @@
base.OnSettlement(turnFightStateData);
if (battleState == StoryBattleState.Battle)
{
+ EquipModel.Instance.CalcAllFloorItems();
BattleManager.Instance.MainFightRequest(4);
}
}
@@ -163,6 +164,7 @@
{
base.HaveRest();
battleState = StoryBattleState.Break;
+ EquipModel.Instance.CalcAllFloorItems();
BattleManager.Instance.MainFightRequest(0);
}
@@ -220,13 +222,7 @@
//鍐嶆鏌ヤ竴娆℃湁娌¤澶囨湭澶勭悊
if (PackManager.Instance.GetSinglePack(PackType.DropItem).GetItems().Count > 0)
{
- //鏋勫缓鎵�鏈夌墿鍝�
- List<int> dropList = new List<int>();
- foreach (var item in PackManager.Instance.GetSinglePack(PackType.DropItem).GetItems())
- {
- dropList.Add(item.gridIndex);
- }
- EquipModel.Instance.NotifyItemDrop(dropList, null);
+ EquipModel.Instance.CalcAllFloorItems();
BattleDebug.LogError("RequestFight: 瑁呭鏈鐞�");
return false;
}
diff --git a/Main/System/Battle/RecordPlayer/RecordAction.cs b/Main/System/Battle/RecordPlayer/RecordAction.cs
index 7a992ab..bc5ee39 100644
--- a/Main/System/Battle/RecordPlayer/RecordAction.cs
+++ b/Main/System/Battle/RecordPlayer/RecordAction.cs
@@ -38,4 +38,12 @@
isFinish = true;
}
+ public virtual string GetBattleFieldGuid()
+ {
+ if (battleField == null)
+ {
+ return string.Empty;
+ }
+ return battleField.guid;
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 2d26c5f..1281256 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -149,10 +149,12 @@
if (currentRecordAction != null && currentRecordAction.IsFinished())
{
+ var guid = currentRecordAction.GetBattleFieldGuid();
BattleDebug.LogError("record action " + currentRecordAction.GetType() + " play finished");
currentRecordAction = null;
isWaitingNextAction = true;
waitTimer = 0f;
+ EventBroadcast.Instance.Broadcast<string>(EventName.RECORDPLAYER_END, guid);
return;
}
diff --git a/Main/System/Equip/EquipExchangeCell.cs b/Main/System/Equip/EquipExchangeCell.cs
index c0703d1..28fdc6e 100644
--- a/Main/System/Equip/EquipExchangeCell.cs
+++ b/Main/System/Equip/EquipExchangeCell.cs
@@ -172,6 +172,21 @@
uieffect.transform.localScale = new Vector3(0.98f, bgRect.rect.height / uieffect.GetComponent<RectTransform>().rect.height, 1);
uieffect.Play();
}
+
+ //浜屾澶勭悊鏀惧ぇ鏁堟灉
+ await UniTask.Delay(100);
+ if (effectID == 0)
+ {
+ uieffect.Stop();
+ }
+ else
+ {
+ uieffect.Stop();
+ uieffect.effectId = effectID;
+ //璁$畻楂樺害缂╂斁姣斾緥 鐗规晥鏄剧ず渚濊禆rect鐨勬帓鐗�
+ uieffect.transform.localScale = new Vector3(0.98f, bgRect.rect.height / uieffect.GetComponent<RectTransform>().rect.height, 1);
+ uieffect.Play();
+ }
}
diff --git a/Main/System/Equip/EquipModel.cs b/Main/System/Equip/EquipModel.cs
index 97ec59d..a0f8ec5 100644
--- a/Main/System/Equip/EquipModel.cs
+++ b/Main/System/Equip/EquipModel.cs
@@ -27,12 +27,15 @@
public List<int> lastDropIndexs = new List<int>(); //涓婁竴娆℃帀钀界墿鍝佺储寮�
+ int lastAttackHeroID = 0;
+
public override void Init()
{
DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent += OnEquipResult;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += BeforePlayerDataInitialize;
- EventBroadcast.Instance.RemoveListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
EventBroadcast.Instance.AddListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
+ EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ EventBroadcast.Instance.AddListener<string>(EventName.RECORDPLAYER_END, RecordPlayerEnd);
ParseConfig();
}
@@ -41,6 +44,8 @@
DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent -= OnEquipResult;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= BeforePlayerDataInitialize;
EventBroadcast.Instance.RemoveListener<string, BattleDrops, Action>(EventName.BATTLE_DROP_ITEMS, OnDropEvent);
+ EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ EventBroadcast.Instance.RemoveListener<string>(EventName.RECORDPLAYER_END, RecordPlayerEnd);
}
@@ -82,6 +87,7 @@
return -1;
}
+ //琛ㄧ幇鎺夎惤鍜屾嬀鍙栧垎绂诲紑锛屽厛鎺夎惤绛夋湰姝﹀皢鍥炲悎瀹屽叏缁撴潫鍐嶆嬀鍙�
void OnDropEvent(string guid, BattleDrops drops, Action action)
{
if (!string.IsNullOrEmpty(guid))
@@ -93,21 +99,57 @@
action?.Invoke();
}
+ //鎷惧彇鏃舵満涓轰笅涓�姝﹀皢锛堝惈鏁屾垜锛夋敾鍑� 鎴栬�� 鏈疆缁撶畻锛圡ainFightRequest 鍓嶏級
+ void OnSkillCast(string guid, SkillConfig skillConfig, TeamHero teamHero)
+ {
+ bool checkDrop = false;
+ if (!string.IsNullOrEmpty(guid))
+ return;
+
+ //闃茶寖鍥炴敹鎶ラ敊
+ if (teamHero == null)
+ checkDrop = true;
+ //鍙�氱煡鐜╁姝﹀皢鐨勬垬鏂�
+ else if (teamHero.NPCID != 0)
+ checkDrop = true;
+ else if (teamHero.heroId != lastAttackHeroID)
+ {
+ lastAttackHeroID = teamHero.heroId;
+ checkDrop = true;
+ }
+
+ if (checkDrop)
+ {
+ CalcAllFloorItems();
+ }
+ }
+
+
+ void RecordPlayerEnd(string guid)
+ {
+ if (!string.IsNullOrEmpty(guid))
+ return;
+
+ CalcAllFloorItems();
+ }
+
+
//鎺夎惤閫氱煡
public void NotifyItemDrop(List<int> indexs, RectTransform rect)
{
// 鐣岄潰涓嶆樉绀哄垯绔嬪嵆澶勭悊
- if (!UIManager.Instance.IsOpened<HomeWin>())
- {
- for (int i = 0; i < indexs.Count; i++)
- {
- CalcFloorEquip(indexs[i]);
- }
- }
- else
- {
- OnItemDropEvent?.Invoke(indexs, rect);
- }
+ // if (!UIManager.Instance.IsOpened<HomeWin>())
+ // {
+ // for (int i = 0; i < indexs.Count; i++)
+ // {
+ // CalcFloorEquip(indexs[i]);
+ // }
+ // }
+ // else
+ // {
+ // OnItemDropEvent?.Invoke(indexs, rect);
+ // }
+ OnItemDropEvent?.Invoke(indexs, rect);
}
public void CalcFloorEquip(int itemIndex)
@@ -119,7 +161,6 @@
if (item == null)
return;
-
//闈炶嚜鍔ㄦā寮忎笅锛岀瓫閫夎澶囨墦寮�瑁呭鎿嶄綔鐣岄潰
if (IsEquip(item))
{
@@ -131,6 +172,20 @@
}
}
+ //澶勭悊鎵�鏈夋帀钀界殑鐗╁搧
+ public void CalcAllFloorItems()
+ {
+ if (PackManager.Instance.GetSinglePack(PackType.DropItem).GetItems().Count == 0)
+ {
+ return;
+ }
+ //鏋勫缓鎵�鏈夌墿鍝�
+ foreach (var item in PackManager.Instance.GetSinglePack(PackType.DropItem).GetItems())
+ {
+ CalcFloorEquip(item.gridIndex);
+ }
+ }
+
private void OnEquipResult(HA814_tagMCMakeItemAnswer info)
{
if (info.MakeType != (int)MakeType.EquipOP)
diff --git a/Main/System/Equip/FloorItemCell.cs b/Main/System/Equip/FloorItemCell.cs
index 6706b9a..110e517 100644
--- a/Main/System/Equip/FloorItemCell.cs
+++ b/Main/System/Equip/FloorItemCell.cs
@@ -62,9 +62,6 @@
else
{
this.transform.localPosition = startPos;
- // 鎵嬪姩鐐瑰嚮鎴栬�呰嚜鍔ㄦā寮忎笅澶勭悊
- // EquipModel.Instance.CalcFloorEquip(itemIndex);
- // itemIndex = -1;
}
}
@@ -76,15 +73,11 @@
void CompleteDrop()
{
- EquipModel.Instance.CalcFloorEquip(itemIndex);
+ // 鎺夎惤鍚庣洿鎺ユ嬀鍙� 鏀规垚浜嗘湰姝﹀皢鏀诲嚮瀹屽叏缁撴潫鍚庢垨鑰呭洖鍚堢粨鏉熷悗
+ // EquipModel.Instance.CalcFloorEquip(itemIndex);
isPlaying = false;
itemIndex = -1;
}
-
- // void OnDisable()
- // {
- // CompleteDrop();
- // }
}
diff --git a/Main/System/Equip/ItemsOnFloor.cs b/Main/System/Equip/ItemsOnFloor.cs
index 5bc8e96..6861534 100644
--- a/Main/System/Equip/ItemsOnFloor.cs
+++ b/Main/System/Equip/ItemsOnFloor.cs
@@ -40,7 +40,8 @@
//涓荤晫闈㈠垏鎹㈡ā寮忚Е鍙�
private void OnEnable()
{
- //bug璁板綍锛氬啀闃茶寖涓�娆★紝閲嶇櫥閿�姣佸悗鎰忓鐨勬敞鍐屼簡澶氭锛屽悗缁鏌ヨ繑鍥炵櫥褰曠晫闈㈠啀杩涘叆娓告垙鐨勬儏鍐�
+ //bug璁板綍锛氬洜涓烘柇绾块噸杩炵洿鎺ラ攢姣佺晫闈㈠鑷碠nEnable浜屾瑙﹀彂涓棿娌℃湁瑙﹀彂OnDisable锛屽嚭鐜板娆℃帀钀界殑鐜拌薄
+ // 宸茬粡璋冩暣鏂嚎閲嶈繛閫昏緫锛屽悗缁瀵熻繑鍥炵櫥褰曠晫闈㈡儏鍐�
EquipModel.Instance.OnItemDropEvent -= NotifyPlayItemDrop;
PackManager.Instance.DeleteItemEvent -= DeleteDropItem;
//涓荤晫闈㈡墦寮�鍜屾樉闅愰兘瑕佸埛鏂�
@@ -110,7 +111,7 @@
if (item.isActiveAndEnabled)
{
//闃茶寖涓�鐩存挱鏀炬帀钀藉姩鐢�,鏌愮鍘熷洜琚墦鏂簡鍚庣画鐨勭晫闈㈡樉绀猴紝杩欓噷鐩存帴瑙﹀彂鎵撳紑鐣岄潰
- EquipModel.Instance.CalcFloorEquip(i);
+ // EquipModel.Instance.CalcFloorEquip(i);
continue;
}
diff --git a/Main/System/Main/AutoFightModel.cs b/Main/System/Main/AutoFightModel.cs
index 7507453..27b651a 100644
--- a/Main/System/Main/AutoFightModel.cs
+++ b/Main/System/Main/AutoFightModel.cs
@@ -95,7 +95,6 @@
ParseConfig();
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
- EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
}
--
Gitblit v1.8.0