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 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.number = finalDamage; } } }