62 lines
1.8 KiB
C#
62 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Cielonos.MainGame.Characters;
|
|
using Sirenix.OdinInspector;
|
|
using SLSFramework.General;
|
|
using UnityEngine;
|
|
|
|
namespace Cielonos.MainGame.Inventory
|
|
{
|
|
[CreateAssetMenu(fileName = "FunctionData", menuName = "Cielonos/Items/FunctionData")]
|
|
public partial class FunctionData : SerializedScriptableObject
|
|
{
|
|
[DictionaryDrawerSettings(KeyLabel = "Attack Unit", DisplayMode = DictionaryDisplayOptions.ExpandedFoldout)]
|
|
[Searchable]
|
|
public Dictionary<string, FunctionUnit> functionUnits = new Dictionary<string, FunctionUnit>();
|
|
|
|
[OnInspectorGUI("UpdateUnits")]
|
|
public void UpdateUnits()
|
|
{
|
|
foreach (var unit in functionUnits.Values)
|
|
{
|
|
unit.parentData = this;
|
|
}
|
|
}
|
|
}
|
|
|
|
public partial class FunctionData
|
|
{
|
|
public enum IntervalReductionType
|
|
{
|
|
None = 0,
|
|
Cooldown = 1,
|
|
AttackSpeed = 10
|
|
}
|
|
|
|
[Serializable]
|
|
public class FunctionUnit
|
|
{
|
|
[ReadOnly]
|
|
public FunctionData parentData;
|
|
|
|
[TitleGroup("Information")]
|
|
public bool shownInUI;
|
|
[TitleGroup("Information")]
|
|
public Sprite icon;
|
|
[TitleGroup("Information")]
|
|
public List<string> operation;
|
|
|
|
[TitleGroup("Costs")]
|
|
public float energyCost;
|
|
[TitleGroup("Costs")]
|
|
public int ammoCost;
|
|
|
|
[TitleGroup("Interval")]
|
|
public float interval;
|
|
[TitleGroup("Interval")]
|
|
public float intervalLowerLimit;
|
|
[TitleGroup("Interval")]
|
|
public IntervalReductionType intervalReductionType;
|
|
}
|
|
}
|
|
} |