From ec8e5474968ec657d33e381bb50eaed90d4899a7 Mon Sep 17 00:00:00 2001 From: wuwenbo Date: Fri, 24 Oct 2025 19:41:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0meilingrest=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=91=A8=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Unity/Assets/Scripts/TH1_Data/MapData.cs | 23 +++++++++++++++++-- .../Skill/AllSkill/MeilingRestSkill.cs | 14 ++++++++--- .../Scripts/TH1_Logic/Skill/SkillBase.cs | 16 +++++++++++++ .../Scripts/TH1_Logic/Unit/UnitLogic.cs | 1 + 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/Unity/Assets/Scripts/TH1_Data/MapData.cs b/Unity/Assets/Scripts/TH1_Data/MapData.cs index 404a1e874..76efa3efb 100644 --- a/Unity/Assets/Scripts/TH1_Data/MapData.cs +++ b/Unity/Assets/Scripts/TH1_Data/MapData.cs @@ -908,6 +908,7 @@ namespace RuntimeData _gridToUnitDict[gid] = newUnit.Id; //Step #3 增加技能 AddUnitSkill(newUnit); + OnAnyUnitCreate(this, newUnit); //新增renderer MapRenderer.Instance.RenderUpdateUnitMap(); @@ -1144,9 +1145,27 @@ namespace RuntimeData // 当场上有小兵移动时 public void OnAnyUnitMove(MapData map, UnitData moveUnit, GridData target, MoveType moveType) { - foreach (var idBase in GetAllIdentifierBase()) + foreach (var unit in UnitMap.UnitList) { - foreach (var skill in idBase.Skills) skill.OnAnyUnitMove(map, idBase as UnitData, moveUnit, target, moveType); + foreach (var skill in unit.Skills) skill.OnAnyUnitMove(map, unit, moveUnit, target, moveType); + } + } + + // 当场上有小兵死亡时 + public void OnAnyUnitDie(MapData map) + { + foreach (var unit in UnitMap.UnitList) + { + foreach (var skill in unit.Skills) skill.OnAnyUnitDie(map, unit); + } + } + + // 当场上有小兵创建时 + public void OnAnyUnitCreate(MapData map, UnitData newUnit) + { + foreach (var unit in UnitMap.UnitList) + { + foreach (var skill in unit.Skills) skill.OnAnyUnitCreate(map, unit, newUnit); } } diff --git a/Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/MeilingRestSkill.cs b/Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/MeilingRestSkill.cs index bc69a4755..19d5a8e31 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/MeilingRestSkill.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Skill/AllSkill/MeilingRestSkill.cs @@ -6,9 +6,6 @@ */ -using System; -using System.Collections.Generic; -using MemoryPack; using RuntimeData; using TH1_Logic.Core; @@ -43,6 +40,16 @@ namespace Logic.Skill RefreshAroundGiant(map, self); } + public override void OnAnyUnitDie(MapData map, UnitData self) + { + RefreshAroundGiant(map, self); + } + + public override void OnAnyUnitCreate(MapData map, UnitData self, UnitData newUnit) + { + RefreshAroundGiant(map, self); + } + public override void OnTurnEnd(UnitData self, MapData mapData) { if(_aroundGiant) return; @@ -70,6 +77,7 @@ namespace Logic.Skill var roundGrid = mapData.GridMap.GetAroundGridData(1, 1, targetGrid); foreach (var gridData in roundGrid) { + if (gridData == targetGrid) continue; var unit = gridData.Unit(mapData); if (unit == null) continue; if (unit.UnitFullType.UnitType != UnitType.Giant) continue; diff --git a/Unity/Assets/Scripts/TH1_Logic/Skill/SkillBase.cs b/Unity/Assets/Scripts/TH1_Logic/Skill/SkillBase.cs index 0e8b9730a..d227b0e5c 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Skill/SkillBase.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Skill/SkillBase.cs @@ -141,6 +141,12 @@ namespace Logic.Skill // 当有单位移动时 public void OnAnyUnitMove(MapData map, UnitData self, UnitData moveUnit, GridData target, MoveType moveType); + + // 当有单位死亡时 + public void OnAnyUnitDie(MapData map, UnitData self); + + // 当有单位创建时 + public void OnAnyUnitCreate(MapData map, UnitData self, UnitData newUnit); } @@ -500,5 +506,15 @@ namespace Logic.Skill { } + + public virtual void OnAnyUnitDie(MapData map, UnitData self) + { + + } + + public virtual void OnAnyUnitCreate(MapData map, UnitData self, UnitData newUnit) + { + + } } } \ No newline at end of file diff --git a/Unity/Assets/Scripts/TH1_Logic/Unit/UnitLogic.cs b/Unity/Assets/Scripts/TH1_Logic/Unit/UnitLogic.cs index e05cecece..9982ebd6a 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Unit/UnitLogic.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Unit/UnitLogic.cs @@ -414,6 +414,7 @@ namespace Logic player.giantPenalty[(uint)info.ChessType] = 4; Main.UnitLogic.Die(map, unit); + map.OnAnyUnitDie(map); }