/* * @Author: 白哉 * @Description: * @Date: 2025年04月23日 星期三 21:04:18 * @Modify: */ using System.Collections.Generic; using RuntimeData; using System; using TH1_Logic.Main; using TH1Renderer; using UnityEngine; namespace Logic.Skill { [Serializable] public class StompSkill : SkillBase { public StompSkill() { IsPermanent = true; TurnsLimit = 0; Score = 4; } public override SkillType GetSkillType() { return SkillType.STOMP; } public override void OnMove(UnitData self, GridData grid, MapData mapData, MoveType moveType) { var selfUnitList = new HashSet(); mapData.GetPlayerDataByUnitId(self.Id, out var selfPlayer); mapData.GetUnitDataListByPlayerId(selfPlayer.Id, selfUnitList); //遍历会溅射的所有格子 var roundGrids = mapData.GridMap.GetAroundGridData(1, 1, grid); foreach (var roundGrid in roundGrids) { var ROgrid = MapRenderer.Instance.ROGridMap[roundGrid.Id]; //如果格子上没有单位,播放地震动画 if (!mapData.GetUnitDataByGid(roundGrid.Id, out var unit)) { //TODO 下面的是不规范做法,后面要迭代 ROgrid.SetBounceAnim(NeedRandomWait:true); } //如果格子上有单位,播放地震动画,并且播放对方受伤动画 else { if (selfUnitList.Contains(unit)) continue; // 计算攻击伤害,执行伤害逻辑 var damage = Table.Instance.CalcDamage(mapData, self, unit, damagePara:0.5f); Main.UnitLogic.DamageSettlement(mapData, self, unit, damage, DamageType.Splash); //播放伤害数字特效 var damageMark = new GridVFXRenderMark(GridVFXType.Damage); damageMark.Damage = damage; roundGrid.SetGridVFXRenderMark(damageMark); //更新unit的显示 unit.RenderMark = true; //TODO 下面的是不规范做法,后面要迭代 //播放受伤特效 roundGrid.VFXRenderMarkHurt = true; // 执行相关动画,包括伤害特效、伤害数字、以及可能得死亡特效 ROgrid.SetBounceAnim(NeedRandomWait:true); } } } } }