sea-battle/Assets/Scripts/UI/EnemyData.cs
2026-01-09 08:45:22 +03:00

71 lines
2.3 KiB
C#

using UnityEngine;
[CreateAssetMenu(fileName = "NewEnemyData", menuName = "Enemies/EnemyData")]
public class EnemyData : ScriptableObject
{
public string nickname;
[Header("Îçâó÷êà ïîáåäû èãðîêà")]
public AudioClip[] playerVictory;
[Header("Îçâó÷êà ïîáåäû áîòà")]
public AudioClip[] playerDefeat;
[Header("Àíèìàöèè ïåðñîíàæà")]
public AnimatorOverrideController animatorOverride; // äëÿ ïîêàäðîâîé àíèìàöèè
public Sprite characterSprite; // òåêóùèé/íåéòðàëüíûé ñïðàéò (fallback)
[Header("Ôðàçû äëÿ äèàëîãà")]
public DialogueLine[] dialogues;
[Header("Ñîáûòèéíûå äèàëîãè")]
public DialogueLine[] onPlayerHit; // Èãðîê ïîïàë
public DialogueLine[] onPlayerMiss; // Èãðîê ïðîìàçàë
public DialogueLine[] onBotHit; // Áîò ïîïàë
public DialogueLine[] onBotMiss; // Áîò ïðîìàçàë
public DialogueLine[] onPlayerShipDestroyed; // Êîðàáëü èãðîêà óíè÷òîæåí
public DialogueLine[] onBotShipDestroyed; // Êîðàáëü áîòà óíè÷òîæåí
// Âñïîìîãàòåëüíûé ìåòîä äëÿ ïîëó÷åíèÿ ñëó÷àéíîé ôðàçû èç êàòåãîðèè
public DialogueLine? GetRandomDialogue(DialogueEventType eventType)
{
DialogueLine[] sourceArray = null;
switch (eventType)
{
case DialogueEventType.PlayerHit: sourceArray = onPlayerHit; break;
case DialogueEventType.PlayerMiss: sourceArray = onPlayerMiss; break;
case DialogueEventType.BotHit: sourceArray = onBotHit; break;
case DialogueEventType.BotMiss: sourceArray = onBotMiss; break;
case DialogueEventType.PlayerShipDestroyed: sourceArray = onPlayerShipDestroyed; break;
case DialogueEventType.BotShipDestroyed: sourceArray = onBotShipDestroyed; break;
}
if (sourceArray != null && sourceArray.Length > 0)
{
return sourceArray[Random.Range(0, sourceArray.Length)];
}
return null;
}
}
public enum DialogueEventType
{
None,
PlayerHit,
PlayerMiss,
BotHit,
BotMiss,
PlayerShipDestroyed,
BotShipDestroyed
}
[System.Serializable]
public struct DialogueLine
{
[TextArea(2, 5)]
public string text;
public string animationName; // íàïðèìåð "Talk", "Angry", "Idle"
public AudioClip voiceClip;
}