using Michsky.UI.Heat; using Obvious.Soap; using UFS3; using UFS3.Management; using UnityEngine; using UnityEngine.Events; public class PlayerProfileManager : Singleton { public ScriptableEventNoParam OnGearDamaged; public ScriptableEventInt OnSellFishFromNetClick; public ScriptableEventItemData OnSellItemFromInventory; public PlayerProfile PlayerProfile; public ScriptableEventItemData OnAssignItem; public UnityEvent OnClearProfile = new UnityEvent(); public UnityEvent OnMorePlayerProfilesExists; [Tooltip("It's usable only for tests in editor beacuse we can load player profiles on start gameplay")] public bool LoadProfileOnStart; public ModalWindowManager modalWindowManager; private void Start() { if (LoadProfileOnStart) { PlayerProfile.ItemDatabase.ValidateIDs(); } PlayerProfile.FishDatabase.ValidateIDs(); } public void ProfileLoad() { if (!PlayerPrefs.HasKey("PlayerLastProfileLoaded")) { Debug.Log("No player last profile loaded, should be first game played if not check why it's does"); } string text = PlayerPrefs.GetString("PlayerLastProfileLoaded", "Angler"); if (!PlayerProfile.LoadData(text)) { Debug.Log("No player profile loaded, try create new from menu"); } } private void OnEnable() { OnAssignItem.OnRaised += OnAssignItemOnOnRaised; OnSellFishFromNetClick.OnRaised += OnSellFishFromNetOnOnRaised; OnGearDamaged.OnRaised += OnGearDamagedOnOnRaised; OnSellItemFromInventory.OnRaised += OnSellItemFromInventory_OnRaised; } private void OnGearDamagedOnOnRaised() { foreach (BaseItemData item in PlayerProfile.Inventory) { if (item.Durabilty <= 0f) { PlayerProfile.Inventory.Remove(item); } } } private void OnDisable() { OnSellItemFromInventory.OnRaised -= OnSellItemFromInventory_OnRaised; OnAssignItem.OnRaised -= OnAssignItemOnOnRaised; OnSellFishFromNetClick.OnRaised -= OnSellFishFromNetOnOnRaised; OnGearDamaged.OnRaised -= OnGearDamagedOnOnRaised; } private void OnSellFishFromNetOnOnRaised(int id) { PlayerProfile.SellFish(id); } private void OnSellItemFromInventory_OnRaised(BaseItemData item) { PlayerProfile.SellItemFromInventory(item); } private void OnAssignItemOnOnRaised(BaseItemData obj) { PlayerProfile.Inventory.Remove(obj); } }