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#
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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|