using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(ParticleSystem))]
public class Player_Basic_Rifle : PlayerWeapon, IDamageSource
{
public List<GameObject> i_sources { get => m_sources;
set => m_sources = value; }
public float i_damage { get => m_damage; set => m_damage = value; }
[SerializeField]
private List<GameObject> m_sources;
[SerializeField]
private float m_damage;
//Gives muzzle flash
public ParticleSystem m_ParticleSystem;
private MeshRenderer m_renderer;
protected override void Start()
{
base.Start();
m_renderer = GetComponent<MeshRenderer>();
m_ParticleSystem = GetComponent<ParticleSystem>();
m_ParticleSystem.Stop();
ToggleOnOff(false);
}
public override void Attack()
{
m_ParticleSystem.Play();
base.Attack();
r_owner.r_animator.SetInteger("Weapon Animation ID", Random.Range(0, 4));
r_owner.r_animator.SetTrigger("Attack");
//player controls aiming/targeting. Might need to be changed later.
RaycastHit hit = r_owner.GetAimTarget();
GameObject other = hit.transform.gameObject;
if (!m_sources.Contains(other))
{
IHarmable harmable = other.GetComponent<IHarmable>();
if (harmable != null)
{
InflictDamage(harmable);
}
}
}
public override void SecondaryHeld()
{
r_owner.m_isOTSCamera = true;
}
public override void SecondaryReleased()
{
r_owner.m_isOTSCamera = false;
}
public override void Reload()
{
//TODO: whole ammunition system. For now, gow nuts
}
public override void Equip()
{
base.Equip();
ToggleOnOff(true);
}
public override void UnEquip()
{
base.UnEquip();
ToggleOnOff(false);
}
private void ToggleOnOff(bool isOn)
{
m_renderer.enabled = isOn;
}
public void InflictDamage(IHarmable target)
{
target.TakeDamage(m_damage);
}
}