using Northbound.Data; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; namespace Northbound { [RequireComponent(typeof(EnemyUnit))] [RequireComponent(typeof(EnemyAIController))] [RequireComponent(typeof(NavMeshAgent))] [RequireComponent(typeof(NetworkObject))] public class MonsterDataComponent : MonoBehaviour { [Header("Data Reference")] [Tooltip("ScriptableObject containing monster data")] public MonsterData monsterData; [Header("Auto-Apply Settings")] [Tooltip("Automatically apply stats from monsterData on Awake")] public bool autoApplyOnAwake = true; private void Awake() { if (autoApplyOnAwake && monsterData != null) { ApplyMonsterData(); } } public void ApplyMonsterData() { if (monsterData == null) { return; } EnemyUnit enemyUnit = GetComponent(); if (enemyUnit != null) { enemyUnit.maxHealth = monsterData.maxHp; } EnemyAIController aiController = GetComponent(); if (aiController != null) { aiController.moveSpeed = monsterData.moveSpeed; aiController.attackDamage = monsterData.atkDamage; aiController.attackRange = monsterData.atkRange; aiController.attackInterval = monsterData.atkIntervalSec; } NavMeshAgent navAgent = GetComponent(); if (navAgent != null) { navAgent.speed = monsterData.moveSpeed; } } } }