using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using SiegeSong; namespace SiegeSong { public class HitBox : MonoBehaviour { public bool Active; public float TimeLive = 0.3f; public int BaseDamage; public float HitMomentumThreshold = 1.5f; public StatisticsManager Actor; public UnityEvent OnHit; public DamageType DamageType; public DamageWeight DamageWeight; public Equipable Weapon; public SkillCategory Category; public MartialSkill MartialSkill; public PhysicalSkill PhysicalSkill; public MentalSkill MentalSkill; public MagicalSkill MagicalSkill; public bool Sticky; private float timer; void Start() { } void Update() { if (Active) { timer += Time.deltaTime; if (timer > TimeLive) { Active = false; timer = 0.0f; } } } void OnCollisionEnter(Collision collision) { var collisionReceiver = collision.gameObject.GetComponent(); if (collisionReceiver == null) collisionReceiver = collision.gameObject.GetComponentInChildren(); if (Active && collisionReceiver != null) { if (collision.relativeVelocity.magnitude > HitMomentumThreshold) { var skill = -1; //switch (SkillCategory) //{ // case SkillCategory.MartialSkill: // skill = (int)MartialSkill; // break; // case SkillCategory.PhysicalSkill: // skill = (int)PhysicalSkill; // break; // case SkillCategory.MentalSkill: // skill = (int)MentalSkill; // break; // case SkillCategory.MagicalSkill: // skill = (int)MagicalSkill; // break; //} // TODO : autoPopulate skills on actor start var skillValue = 5;//(int)(ActorStats.SkillValueCategories[Category][skill]); if (Actor.Stats.ID != collisionReceiver.Actor.Stats.ID) { collisionReceiver.ApplyHit(BaseDamage, collision.relativeVelocity.magnitude, Weapon.PhysicalMaterial, DamageType, DamageWeight, skillValue, Weapon.OnHit, OnHit); Actor.Stats.Recoil = true; } } } } } }