53 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
} |