using System.Collections.Generic; using Ai; using Equip; using UnityEngine; using Utils; namespace Meta { public class PlayerResources : MonoSingleton { public MainCharacter Player { get; set; } public UiResources UiResources { get; set; } public bool AlreadyUnlocked { get; set; } private int _currentExp; private int _currentCoins; public int CurrentCoins { get { return _currentCoins; } } private readonly List _items = new List(); public List Items { get { return _items; } } private int _currentLevel; private float _expMult = 1; public float ExpMult { get { return _expMult + _skinExp; } set { _expMult = value; } } private float _skinExp; public float SkinExp { set { _skinExp = value; } } private float _coinsMult = 1; public float CoinsMult { get { return _coinsMult; } set { _coinsMult = value; } } private float _equipChance; public float EquipChance { get { return _equipChance; } set { _equipChance = value; } } private static readonly int[] EXP_TABLE = { 100, 300, 550, 900, 1200, 1500, 1800, 2100, 2500 }; private float _npcHitPoints = 1f; public float NPCHitPoints { get { return _npcHitPoints; } set { _npcHitPoints = value; } } protected override void Init() { base.Init(); Debug.LogWarning("init player resources"); DontDestroyOnLoad(this); } public void Repaint() { if (UiResources != null) UiResources.SetExp(EXP_TABLE[_currentLevel], _currentExp); if (UiResources != null) UiResources.SetCoins(_currentCoins); } public void AddExp(int exp) { _currentExp += (int)(exp * ExpMult); if (_currentExp >= EXP_TABLE[_currentLevel]) { _currentExp -= EXP_TABLE[_currentLevel]; GameBoard.Instance.LevelUp(); _currentLevel++; FlyingText.Init("LVL UP", FlyingText.State.Normal, AiController.Instance.PlayerPosition, Color.yellow); } if (UiResources != null) UiResources.SetExp(EXP_TABLE[_currentLevel], _currentExp); } public void AddCoins(int coins) { _currentCoins += (int)(coins * _coinsMult); } public void Clear() { _currentCoins = 0; _currentExp = 0; _currentLevel = 0; _expMult = 1; _coinsMult = 1; AlreadyUnlocked = true; Instance.NPCHitPoints = 1; MainCharacter.Clear(); } public void AddItem(EquipItem item) { _items.Add(item); AlreadyUnlocked = true; } } }