96 lines
2.5 KiB
C#

using Lights;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Player : MonoBehaviour
{
//[SerializeField] TextMeshProUGUI angleTest;
[Header("Управление")]
[SerializeField] private InSignal DiveSignal;
[SerializeField] private InSignal ShootSignal;
[SerializeField] private InSignal ChangeWeapon;
[Header("Оружие")]
public List<Weapon> weaponsContainer;
private int weaponIndex = 0;
public Weapon ActiveWeapon => weaponsContainer[weaponIndex];
[Header("Система ныряния")]
public PlayerDiveSystem DiveSystem;
[Header("Здоровье")]
public Health HealthComponent;
[SerializeField] private List<Hitbox> hitboxes;
[SerializeField] private float maxHp = 500; //вариант из настроек инициализировать
[Header("Прицеливание врагов")]
[Tooltip("Точка в которую будут целиться враги")] public Transform EnemiesTarget;
private void Awake()
{
foreach (var hitbox in hitboxes)
hitbox.Initialize(gameObject);
HealthComponent.Initialize(maxHp, hitboxes);
HealthComponent.Damaged += HealthComponent_Damaged;
}
private void OnDestroy()
{
if(HealthComponent != null)
HealthComponent.Damaged -= HealthComponent_Damaged;
}
private void HealthComponent_Damaged(float obj)
{
LightSystem.Ef_Alarm();
}
void Update()
{
//тест нормализации
//float angle = CamerasManager.VR_Camera.transform.localRotation.eulerAngles.y;
//angle = YawOnlyTracker.NormalizeAngle(angle);
//angleTest.text = angle.ToString();
//Тестовый выход
if (Input.GetKeyDown(KeyCode.T))
{
G.Terminator.TerminateGame(EndGameConditionChecker.EndgameReason.Timeout);
}
DiveSystem.Dive = In.GetButton(DiveSignal);
Debug.Log(In.GetButtonDown(ShootSignal));
if (In.GetButtonDown(ShootSignal))
{
Debug.Log("Shoot");
Shoot();
}
if (In.GetButtonDown(ChangeWeapon))
{
NextWeapon();
}
}
private void NextWeapon()
{
print("Смена оружия");
weaponIndex = (weaponIndex + 1) % weaponsContainer.Count;
G.WeaponModel.WeaponChangeHandler(ActiveWeapon);
}
private void Shoot()
{
ActiveWeapon.Shoot();
}
}