using UnityEngine;
using System.Collections.Generic;
using Unity.VisualScripting;
[RequireComponent (typeof(MeshCollider))]
[RequireComponent (typeof(DynamicDamageSource))]
public class Player_Basic_Sword : PlayerWeapon
{
//needs these to actual hit and damage the target
private DynamicDamageSource m_damageSource;
private Collider m_collider;
private MeshRenderer m_renderer;
protected override void Start()
{
base.Start();
m_collider = GetComponent<Collider>();
m_renderer = GetComponent<MeshRenderer>();
m_damageSource = GetComponent<DynamicDamageSource>();
m_damageSource.i_sources = new List<GameObject>
{
r_owner.gameObject
};
ToggleOnOff(false);
}
public override void Attack()
{
base.Attack();
r_owner.SetPlayerImmobile(true);
r_owner.r_animator.SetInteger("Weapon Animation ID", Random.Range(0, 4));
r_owner.r_animator.SetTrigger("Attack");
m_damageSource.StartAttacking();
}
public override void SetIsAttacking(bool attacking)
{
base.SetIsAttacking(attacking);
if (!attacking)
{
r_owner.SetPlayerImmobile(false);
m_damageSource.StopAttacking();
}
}
//Secondary for base sword is to block
public override void SecondaryHeld()
{
if (!IsAttacking())
{
r_owner.r_animator.SetBool("Blocking", true);
r_owner.m_isInvulnerable = true;
}
else
{
r_owner.m_isInvulnerable = false;
}
}
public override void SecondaryReleased()
{
r_owner.r_animator.SetBool("Blocking", false);
r_owner.m_isInvulnerable = false;
}
public override void Reload(){}
public override void Equip()
{
base.Equip();
ToggleOnOff(true);
}
public override void UnEquip()
{
base.UnEquip();
ToggleOnOff(false);
}
private void ToggleOnOff(bool isOn)
{
m_collider.enabled = isOn;
m_renderer.enabled = isOn;
m_damageSource.enabled = isOn;
}
}