You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.9 KiB
C#

3 years ago
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<HitReceiver>();
if (collisionReceiver == null)
collisionReceiver = collision.gameObject.GetComponentInChildren<HitReceiver>();
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;
}
}
}
}
}
}