Files
Cielonos/Assets/Scripts/MainGame/AttackArea/Submodules/AttackSubmodule.cs
SoulliesOfficial d15957c719 更新
2025-12-17 04:19:38 -05:00

53 lines
2.1 KiB
C#

using System;
using Cielonos.MainGame.Characters;
using DamageNumbersPro;
using Lean.Pool;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Cielonos.MainGame
{
public class AttackSubmodule : AttackAreaSubmoduleBase
{
public bool isOverridingHitEffect;
public GameObject hitVFXPrefab;
public GameObject damageNumberRegularPrefab;
public GameObject damageNumberCriticalPrefab;
public AttackValue originalAttackValue;
public AttackValue modifiedAttackValue;
public Action<GameObject, CharacterBase> modifyHitEffectAction;
public AttackSubmodule(AttackAreaBase attackArea, AttackValue originalAttackValue, GameObject hitVFXPrefab) : base(attackArea)
{
this.originalAttackValue = originalAttackValue;
this.modifiedAttackValue = originalAttackValue;
this.isOverridingHitEffect = false;
this.hitVFXPrefab = hitVFXPrefab;
this.damageNumberRegularPrefab = MainGameManager.BasePrefabs.hudTextCollection["DefaultDamageNumber_Regular"];
this.damageNumberCriticalPrefab = MainGameManager.BasePrefabs.hudTextCollection["DefaultDamageNumber_Critical"];
}
public GameObject SpawnHitVFX(CharacterBase creator, Vector3 position, Vector3 direction = default)
{
if (isOverridingHitEffect) return null;
if (hitVFXPrefab != null)
{
direction = direction == default ? direction : Vector3.up;
GameObject hitEffect = VFXObject.Spawn(hitVFXPrefab, creator, position, Quaternion.LookRotation(direction));
return hitEffect;
}
return null;
}
public void SpawnDamageNumber(Vector3 position, bool isCritical, float finalDamage)
{
GameObject damageNumberGameObject = isCritical ? damageNumberCriticalPrefab : damageNumberRegularPrefab;
DamageNumber damageNumber = Object.Instantiate(damageNumberGameObject, position, Quaternion.identity).GetComponent<DamageNumber>();
damageNumber.number = finalDamage;
}
}
}