增加meilingrest生命周期

This commit is contained in:
wuwenbo 2025-10-24 19:41:05 +08:00
parent fd79fc485c
commit ec8e547496
4 changed files with 49 additions and 5 deletions

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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)
{
}
}
}

View File

@ -414,6 +414,7 @@ namespace Logic
player.giantPenalty[(uint)info.ChessType] = 4;
Main.UnitLogic.Die(map, unit);
map.OnAnyUnitDie(map);
}