sea-battle/Assets/Scripts/UI/Animation/UICharacterPathConfig.cs

62 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Òèïû ìàðøðóòîâ äëÿ ðàçíûõ ñèòóàöèé
/// </summary>
public enum PathType
{
Default, // Áàçîâûé ìàðøðóò
Victory, // Ìàðøðóò ïðè ïîáåäå
Defeat // Ìàðøðóò ïðè ïîðàæåíèè
}
/// <summary>
/// Îäèí ìàðøðóò ñ êëþ÷îì
/// </summary>
[Serializable]
public class PathData
{
public PathType pathType = PathType.Default;
public bool loop = false;
public List<UIPathPoint> points = new List<UIPathPoint>();
}
/// <summary>
/// Êîíôèãóðàöèÿ ìàðøðóòîâ äëÿ ïåðñîíàæà
/// Ñîäåðæèò Override Controller è ñïèñîê ìàðøðóòîâ ñ êëþ÷àìè
/// </summary>
[CreateAssetMenu(fileName = "CharacterPath", menuName = "UI/Character Path Config")]
public class UICharacterPathConfig : ScriptableObject
{
[Header("Ïåðñîíàæ")]
[Tooltip("Override Controller äëÿ ýòîãî ïåðñîíàæà (àíèìàöèè)")]
public AnimatorOverrideController overrideController;
[Header("Ïðåôàá êàðòèíêè")]
[Tooltip("Ïðåôàá UI ýëåìåíòà êîòîðûé áóäåò äâèãàòüñÿ")]
public GameObject characterPrefab;
[Header("Ìàðøðóòû")]
[Tooltip("Ñïèñîê ìàðøðóòîâ ñ êëþ÷àìè (Default, Victory, Defeat)")]
public List<PathData> paths = new List<PathData>();
/// <summary>
/// Ïîëó÷èòü ìàðøðóò ïî êëþ÷ó
/// </summary>
public PathData GetPath(PathType pathType)
{
PathData path = paths.Find(p => p.pathType == pathType);
// Åñëè íå íàøëè çàïðîøåííûé - âîçâðàùàåì Default
if (path == null)
{
path = paths.Find(p => p.pathType == PathType.Default);
}
return path;
}
}