using System; using System.Collections.Generic; using UnityEngine; using OHM.UnityToolkit; [CreateAssetMenu(fileName = "CoreGameDef", menuName = "GameSqueleton/New Core Game Def")] public class CoreDef : ScriptableObject { [Serializable] public class TextByRich : SerializableDictionary { } public PlayerDef player; public float levelWidth; public AI ai; [Header("Revive")] public float maxReviveDuration; public float reviveProtectionDuration; [Header("Timing")] public float sectionEndingDuration = 0.5f; public float sectionTransitionDuration = 1f; [Header("Currencies")] public CoreCurrenciesDef currencies; public GameObject keyPrefab; [Header("Levels/ Progression")] [SerializeField] private ProgressionDef progression; [Header("Debug")] public bool showHumanHand; public TextByRich textByRich; public ProgressionDef GetProgression() { return progression; } public LevelDef GetLevel(long index) { List list = GetProgression().levelsDiffPath; LevelDef result = null; int acc = 0; int cur = -1; foreach (LevelDef level in list) { if (acc > index) { break; } cur += level.levelCount; acc = cur + 1; result = level; } return result ?? list[0]; } public TypeRich GetTextRich(int rich) { TypeRich result = textByRich[0]; int best = 0; foreach (KeyValuePair kv in textByRich) { if (kv.Key <= rich && best <= kv.Key) { best = kv.Key; result = kv.Value; } } return result; } public bool HaveMinLevelRich(string level, int rich) { foreach (KeyValuePair kv in textByRich) { if (kv.Value.text == level) { return kv.Key <= rich; } } return false; } }