using System; using System.Collections.Generic; using BitStrap; using UnityEngine; public class EquipmentManager : MonoBehaviour { [Serializable] public class SetSpecificParameters { public float currentFloatDepth = 50f; public float currentFloatWeight; public float currentHookSize; } [ReadOnly] public int equipmentCount; public List equipmentAll = new List(); public List equipmentRods = new List(); public List equipmentIceRods = new List(); public List equipmentReels = new List(); public List equipmentLines = new List(); public List equipmentFloats = new List(); public List equipmentBaits = new List(); public List equipmentHooks = new List(); public List equipmentNets = new List(); public List equipmentOther = new List(); public List equipmentBoilies = new List(); public List equipmentRodStands = new List(); public List equipmentFeeders = new List(); public List equipmentFeederBaits = new List(); public List equipmentBiteIndicator = new List(); [Header("Rods")] public List equipmentRodsSpinning = new List(); public List equipmentRodsCasting = new List(); [Header("Reels")] public List equipmentReelsStandard = new List(); public List equipmentReelsLineCounter = new List(); [Header("Ground")] public List equipmentRodsGround = new List(); public List equipmentReelsGround = new List(); [Header("Fly")] public List equipmentRodsFly = new List(); public List equipmentReelsFly = new List(); public List equipmentLinesFly = new List(); [Header("Hooks/Lures")] public List equipmentNormalHooks = new List(); public List equipmentSpinners = new List(); public List equipmentSpoons = new List(); public List equipmentWobblers = new List(); public List equipmentSoftBaits = new List(); public List equipmentFlies = new List(); public List equipmentDLC_01 = new List(); [Header("Current")] public List currentEquipment = new List(13); public List currentBaits = new List(); public const int equipmentSetsAmount = 5; public int currentEquipmentSetId; public List[] equipmentSets = new List[5]; public List[] baitsSets = new List[5]; public List equipmentSet_01 = new List(13); public List baitsSet_01 = new List(); public List equipmentSet_02 = new List(13); public List baitsSet_02 = new List(); public List equipmentSet_03 = new List(13); public List baitsSet_03 = new List(); public List equipmentSet_04 = new List(13); public List baitsSet_04 = new List(); public List equipmentSet_05 = new List(13); public List baitsSet_05 = new List(); [Space(10f)] public List startEquipment = new List(); [Header("Random params set")] public List equipmentFishingRods = new List(); public List equipmentFishingReels = new List(); public float minFloatDepth = 30f; public float maxFloatDepth = 250f; [Space(10f)] public SetSpecificParameters currentSetSpecificParameters; public List setSpecificParameters = new List(); public float currentFloatDepth; public float currentFloatWeight; public float currentHookSize; [Space(10f)] public List hookSizesCm = new List(); public float sellObjectFactor = 0.66f; [Header("Equipment Change")] public List equipmentChanged = new List(13); [Header("Producer Names")] public List producerNames = new List(); [Header("Prices")] public float globalPriceMultiplier = 1f; public Vector2 priceRod = Vector2.one; public Vector2 priceIceRod = Vector2.one; public Vector2 priceReel = Vector2.one; public Vector2 priceLine = Vector2.one; public Vector2 priceFloat = Vector2.one; public Vector2 priceBait = Vector2.one; public Vector2 priceHook = Vector2.one; [HideInInspector] public PlayerSettingsMy playerSettings; private void Awake() { equipmentSets[0] = equipmentSet_01; equipmentSets[1] = equipmentSet_02; equipmentSets[2] = equipmentSet_03; equipmentSets[3] = equipmentSet_04; equipmentSets[4] = equipmentSet_05; baitsSets[0] = baitsSet_01; baitsSets[1] = baitsSet_02; baitsSets[2] = baitsSet_03; baitsSets[3] = baitsSet_04; baitsSets[4] = baitsSet_05; ChangeCurrentEquipmentSet(0); foreach (EquipmentObject item in equipmentRodsSpinning) { equipmentRods.Add(item); } foreach (EquipmentObject item2 in equipmentRodsCasting) { equipmentRods.Add(item2); } foreach (EquipmentObject item3 in equipmentReelsStandard) { equipmentReels.Add(item3); } foreach (EquipmentObject item4 in equipmentReelsLineCounter) { equipmentReels.Add(item4); } foreach (EquipmentObject item5 in equipmentRodsGround) { equipmentRods.Add(item5); } foreach (EquipmentObject item6 in equipmentReelsGround) { equipmentReels.Add(item6); } foreach (EquipmentObject item7 in equipmentRodsFly) { equipmentRods.Add(item7); } foreach (EquipmentObject item8 in equipmentReelsFly) { equipmentReels.Add(item8); } foreach (EquipmentObject item9 in equipmentLinesFly) { equipmentLines.Add(item9); } foreach (EquipmentObject item10 in equipmentDLC_01) { if (item10.equipmentType != EquipmentObject.EquipmentType.HOOK) { continue; } if ((bool)DLCManager.Instance && DLCManager.Instance.IsDLCInstalled(DLCManager.DLC_ID.EQUIPMENT_01)) { switch (item10.prefab.GetComponent().baitType) { case Bait.BaitType.WOBBLER: equipmentWobblers.Add(item10); break; case Bait.BaitType.SOFT_BAIT: equipmentSoftBaits.Add(item10); break; case Bait.BaitType.SPINNER: equipmentSpinners.Add(item10); break; case Bait.BaitType.SPOON: equipmentSpoons.Add(item10); break; case Bait.BaitType.FLY: equipmentFlies.Add(item10); break; } } else { equipmentHooks.Add(item10); } } foreach (EquipmentObject equipmentNormalHook in equipmentNormalHooks) { equipmentHooks.Add(equipmentNormalHook); } foreach (EquipmentObject equipmentWobbler in equipmentWobblers) { equipmentHooks.Add(equipmentWobbler); } foreach (EquipmentObject equipmentSoftBait in equipmentSoftBaits) { equipmentHooks.Add(equipmentSoftBait); } foreach (EquipmentObject equipmentSpinner in equipmentSpinners) { equipmentHooks.Add(equipmentSpinner); } foreach (EquipmentObject equipmentSpoon in equipmentSpoons) { equipmentHooks.Add(equipmentSpoon); } foreach (EquipmentObject equipmentFly in equipmentFlies) { equipmentHooks.Add(equipmentFly); } } private void Start() { playerSettings = GlobalSettings.Instance.playerSettings; foreach (EquipmentObject equipmentRod in equipmentRods) { equipmentRod.equipmentType = EquipmentObject.EquipmentType.ROD; equipmentRod.hasAmount = true; equipmentRod.maxAmount = 5; equipmentRod.Initialize(); } foreach (EquipmentObject equipmentIceRod in equipmentIceRods) { equipmentIceRod.equipmentType = EquipmentObject.EquipmentType.ICE_ROD; equipmentIceRod.hasAmount = true; equipmentIceRod.maxAmount = 5; equipmentIceRod.Initialize(); } foreach (EquipmentObject equipmentReel in equipmentReels) { equipmentReel.equipmentType = EquipmentObject.EquipmentType.REEL; equipmentReel.hasAmount = true; equipmentReel.maxAmount = 5; equipmentReel.Initialize(); } foreach (EquipmentObject equipmentLine in equipmentLines) { equipmentLine.equipmentType = EquipmentObject.EquipmentType.LINE; equipmentLine.hasAmount = true; equipmentLine.maxAmount = 5; equipmentLine.Initialize(); } foreach (EquipmentObject equipmentFloat in equipmentFloats) { equipmentFloat.equipmentType = EquipmentObject.EquipmentType.FLOAT; equipmentFloat.hasAmount = true; equipmentFloat.maxAmount = 5; equipmentFloat.Initialize(); } foreach (EquipmentObject equipmentBait in equipmentBaits) { equipmentBait.equipmentType = EquipmentObject.EquipmentType.BAIT; equipmentBait.Initialize(); } foreach (EquipmentObject equipmentHook in equipmentHooks) { equipmentHook.equipmentType = EquipmentObject.EquipmentType.HOOK; equipmentHook.Initialize(); } foreach (EquipmentObject item in equipmentOther) { item.equipmentType = EquipmentObject.EquipmentType.OTHER; item.Initialize(); } foreach (EquipmentObject equipmentBoily in equipmentBoilies) { equipmentBoily.equipmentType = EquipmentObject.EquipmentType.BOILIE; equipmentBoily.Initialize(); } foreach (EquipmentObject equipmentRodStand in equipmentRodStands) { equipmentRodStand.equipmentType = EquipmentObject.EquipmentType.ROD_STAND; equipmentRodStand.Initialize(); } foreach (EquipmentObject equipmentFeeder in equipmentFeeders) { equipmentFeeder.equipmentType = EquipmentObject.EquipmentType.FEEDER; equipmentFeeder.Initialize(); } foreach (EquipmentObject equipmentFeederBait in equipmentFeederBaits) { equipmentFeederBait.price = Mathf.RoundToInt((float)equipmentFeederBait.price * 0.66f); equipmentFeederBait.equipmentType = EquipmentObject.EquipmentType.FEEDER_BAIT; equipmentFeederBait.Initialize(); } foreach (EquipmentObject item2 in equipmentBiteIndicator) { item2.equipmentType = EquipmentObject.EquipmentType.BITE_INDICATOR; item2.Initialize(); } UpdateAllPriceAndLevel(); } public List GetEquipmentList(EquipmentObject.EquipmentType type) { switch (type) { case EquipmentObject.EquipmentType.ROD: return equipmentRods; case EquipmentObject.EquipmentType.ICE_ROD: return equipmentIceRods; case EquipmentObject.EquipmentType.REEL: return equipmentReels; case EquipmentObject.EquipmentType.LINE: return equipmentLines; case EquipmentObject.EquipmentType.FLOAT: return equipmentFloats; case EquipmentObject.EquipmentType.BAIT: return equipmentBaits; case EquipmentObject.EquipmentType.HOOK: return equipmentHooks; case EquipmentObject.EquipmentType.OTHER: return equipmentOther; case EquipmentObject.EquipmentType.BOILIE: return equipmentBoilies; case EquipmentObject.EquipmentType.ROD_STAND: return equipmentRodStands; case EquipmentObject.EquipmentType.FEEDER: return equipmentFeeders; case EquipmentObject.EquipmentType.FEEDER_BAIT: return equipmentFeederBaits; case EquipmentObject.EquipmentType.BITE_INDICATOR: return equipmentBiteIndicator; default: return null; } } public List GetEquipmentSpecificList(EquipmentTileViewParameters equipmentTileViewParameters) { return GetEquipmentSpecificList(equipmentTileViewParameters.equipmentType, equipmentTileViewParameters.rodType, equipmentTileViewParameters.reelType, equipmentTileViewParameters.lineType, equipmentTileViewParameters.baitType, equipmentTileViewParameters.allTypes); } public List GetEquipmentSpecificList(EquipmentObject.EquipmentType type, FishingRod.RodType rodType, FishingReel.ReelType reelType, FishingLine.LineType lineType, Bait.BaitType baitType, bool allTypes) { switch (type) { case EquipmentObject.EquipmentType.ROD: if (allTypes) { return GetEquipmentList(type); } switch (rodType) { case FishingRod.RodType.SPINNING: return equipmentRodsSpinning; case FishingRod.RodType.CASTING: return equipmentRodsCasting; case FishingRod.RodType.GROUND: return equipmentRodsGround; case FishingRod.RodType.FLY_FISHING: return equipmentRodsFly; } break; case EquipmentObject.EquipmentType.REEL: if (allTypes) { return GetEquipmentList(type); } switch (reelType) { case FishingReel.ReelType.STANDARD: return equipmentReelsStandard; case FishingReel.ReelType.LINE_COUNTER: return equipmentReelsLineCounter; case FishingReel.ReelType.GROUND: return equipmentReelsGround; case FishingReel.ReelType.FLY: return equipmentReelsFly; } break; case EquipmentObject.EquipmentType.LINE: return GetEquipmentList(type); case EquipmentObject.EquipmentType.HOOK: switch (baitType) { case Bait.BaitType.HOOK: return equipmentNormalHooks; case Bait.BaitType.WOBBLER: return equipmentWobblers; case Bait.BaitType.SOFT_BAIT: return equipmentSoftBaits; case Bait.BaitType.SPINNER: return equipmentSpinners; case Bait.BaitType.SPOON: return equipmentSpoons; case Bait.BaitType.FLY: return equipmentFlies; case Bait.BaitType.SAKURA_DLC_01: return equipmentDLC_01; } break; default: return GetEquipmentList(type); } return null; } public List GetHooksList(Bait.BaitType type) { switch (type) { case Bait.BaitType.HOOK: return equipmentNormalHooks; case Bait.BaitType.WOBBLER: return equipmentWobblers; case Bait.BaitType.SOFT_BAIT: return equipmentSoftBaits; case Bait.BaitType.SPINNER: return equipmentSpinners; case Bait.BaitType.SPOON: return equipmentSpoons; case Bait.BaitType.FLY: return equipmentFlies; default: return null; } } public EquipmentObject FindEquipment(EquipmentObject.EquipmentType type, string id) { if (string.IsNullOrEmpty(id)) { return null; } List equipmentList = GetEquipmentList(type); if (equipmentList != null) { foreach (EquipmentObject item in equipmentList) { if (item.id == id) { return item; } } } Debug.LogError("FindEquipment not found: " + id); return null; } public EquipmentObject FindEquipment(EquipmentObject.EquipmentSubType type, string id) { if (string.IsNullOrEmpty(id)) { return null; } foreach (EquipmentObject item in equipmentOther) { if (item.id == id) { return item; } } Debug.LogError("FindEquipment SubType not found: " + id); return null; } public void EquipObject(EquipmentObject equipmentObject, int setId = -1, int baitId = -1) { if (equipmentObject.equipmentType == EquipmentObject.EquipmentType.BAIT) { List list = ((setId != -1) ? baitsSets[setId] : currentBaits); int num = ((baitId != -1) ? baitId : GetAvailableBaitSlot()); if (num < 0 || num >= list.Count) { Debug.LogWarning("No slot ID"); return; } if (list[num] != null) { } list[num] = equipmentObject; } else if (equipmentObject.equipmentType == EquipmentObject.EquipmentType.ROD_STAND || equipmentObject.equipmentType == EquipmentObject.EquipmentType.BOILIE) { for (int i = 0; i < equipmentSets.Length; i++) { if (equipmentSets[i][(int)equipmentObject.equipmentType] != null) { equipmentSets[i][(int)equipmentObject.equipmentType].Equip(false); } equipmentSets[i][(int)equipmentObject.equipmentType] = equipmentObject; } } else { List list2 = ((setId != -1) ? equipmentSets[setId] : currentEquipment); if (list2[(int)equipmentObject.equipmentType] != null) { list2[(int)equipmentObject.equipmentType].Equip(false); } list2[(int)equipmentObject.equipmentType] = equipmentObject; } equipmentObject.Equip(true); } public void UnequipObject(EquipmentObject.EquipmentType equipmentType, int setId = -1, int baitId = 0) { switch (equipmentType) { case EquipmentObject.EquipmentType.BAIT: { List list2 = ((setId != -1) ? baitsSets[setId] : currentBaits); if (list2[baitId] != null && list2[baitId].prefab != null) { list2[baitId].Equip(false); } list2[baitId] = null; break; } case EquipmentObject.EquipmentType.BOILIE: case EquipmentObject.EquipmentType.ROD_STAND: { for (int i = 0; i < equipmentSets.Length; i++) { if (equipmentSets[i][(int)equipmentType] != null) { equipmentSets[i][(int)equipmentType].Equip(false); } equipmentSets[i][(int)equipmentType] = null; } break; } default: { List list = ((setId != -1) ? equipmentSets[setId] : currentEquipment); if (list[(int)equipmentType] != null) { list[(int)equipmentType].Equip(false); } list[(int)equipmentType] = null; break; } } } public int GetAvailableBaitSlot() { for (int i = 0; i < currentBaits.Count; i++) { if (currentBaits[i] == null || currentBaits[i].prefab == null) { return i; } } return -1; } public bool HasAvailableBaitSlot() { return GetAvailableBaitSlot() >= 0; } public bool HasBoilieEquiped() { return GetCurrentEquipment(EquipmentObject.EquipmentType.BOILIE) != null && (bool)GetCurrentEquipment(EquipmentObject.EquipmentType.BOILIE).prefab; } public void BuyObject(EquipmentObject equipmentObject) { playerSettings.AddMoney(-equipmentObject.GetCurrentSellPrice()); equipmentObject.Buy(); Save(); playerSettings.Save(); } public void SellObject(EquipmentObject equipmentObject) { playerSettings.AddMoney(Mathf.RoundToInt((float)equipmentObject.price * sellObjectFactor)); equipmentObject.Sell(); Save(); playerSettings.Save(); } public EquipmentObject GetCurrentEquipment(EquipmentObject.EquipmentType equipmentType) { if (currentEquipment == null) { Debug.LogError("currentEquipment == null"); return null; } return currentEquipment[(int)equipmentType]; } public List GetCurrentEquipmentBaits() { return currentBaits; } public void ChangeCurrentEquipmentSet(int setId) { currentEquipmentSetId = setId; currentEquipment = equipmentSets[setId]; currentBaits = baitsSets[setId]; currentSetSpecificParameters = setSpecificParameters[setId]; } public int CountFillets(int fishMoney) { return Mathf.CeilToInt((float)fishMoney / ((float)FindEquipment(EquipmentObject.EquipmentType.OTHER, "FILLET_01").price * 1.3f)); } public void AddFillets(int fishMoney) { EquipmentObject equipmentObject = FindEquipment(EquipmentObject.EquipmentType.OTHER, "FILLET_01"); int num = Mathf.CeilToInt((float)fishMoney / ((float)equipmentObject.price * 1.3f)); equipmentObject.amount += Mathf.CeilToInt(num); Debug.Log("Added fillets: " + num + " fishMoney: " + fishMoney); } public void AddYoungFishBait(int size, int amount) { EquipmentObject equipmentObject = null; switch (size) { case 1: equipmentObject = FindEquipment(EquipmentObject.EquipmentType.BAIT, "BAIT_YOUNG_FISH_S_01"); break; case 2: equipmentObject = FindEquipment(EquipmentObject.EquipmentType.BAIT, "BAIT_YOUNG_FISH_M_01"); break; case 3: equipmentObject = FindEquipment(EquipmentObject.EquipmentType.BAIT, "BAIT_YOUNG_FISH_L_01"); break; } if (equipmentObject != null) { equipmentObject.amount += amount; } Debug.Log("AddYoungFishBait size:" + size); } public int GetRodId() { if ((bool)GetCurrentEquipment(EquipmentObject.EquipmentType.ROD).prefab) { for (int i = 0; i < equipmentRods.Count; i++) { if (equipmentRods[i].prefab == GetCurrentEquipment(EquipmentObject.EquipmentType.ROD).prefab) { return i; } } } return 0; } [Button] public void BuyAll() { for (int i = 0; i < 13; i++) { List equipmentList = GetEquipmentList((EquipmentObject.EquipmentType)i); if (equipmentList != null) { for (int j = 0; j < equipmentList.Count; j++) { equipmentList[j].Buy(); } } } } [Button] public void BuyAllMax() { for (int i = 0; i < 13; i++) { List equipmentList = GetEquipmentList((EquipmentObject.EquipmentType)i); if (equipmentList != null) { for (int j = 0; j < equipmentList.Count; j++) { equipmentList[j].SetAmount(equipmentList[j].maxAmount); } } } } public bool HasAnythingChanged() { for (int i = 0; i < equipmentChanged.Count; i++) { if (equipmentChanged[i]) { return true; } } return false; } public void ResetChanged() { for (int i = 0; i < equipmentChanged.Count; i++) { equipmentChanged[i] = false; } } public void EquipmentChanged(EquipmentObject.EquipmentType equipmentType) { if (equipmentType == EquipmentObject.EquipmentType.COUNT) { equipmentChanged[0] = GameController.Instance; equipmentChanged[10] = GameController.Instance; equipmentChanged[12] = GameController.Instance; } else { equipmentChanged[(int)equipmentType] = GameController.Instance; } } public string GetProducerName(int id) { if (id >= 0) { return producerNames[id]; } return string.Empty; } public float CalculateEquipmentDurability() { return 0f; } [Button] public void UpdateAllPriceAndLevel() { foreach (EquipmentObject equipmentRod in equipmentRods) { equipmentRod.CalculateValue(); } foreach (EquipmentObject equipmentIceRod in equipmentIceRods) { equipmentIceRod.CalculateValue(); } foreach (EquipmentObject equipmentReel in equipmentReels) { equipmentReel.CalculateValue(); } foreach (EquipmentObject equipmentLine in equipmentLines) { equipmentLine.CalculateValue(); } foreach (EquipmentObject equipmentFloat in equipmentFloats) { equipmentFloat.CalculateValue(); } foreach (EquipmentObject equipmentBait in equipmentBaits) { equipmentBait.CalculateValue(); } foreach (EquipmentObject equipmentHook in equipmentHooks) { equipmentHook.CalculateValue(); } foreach (EquipmentObject item in equipmentOther) { item.CalculateValue(); } foreach (EquipmentObject equipmentBoily in equipmentBoilies) { equipmentBoily.CalculateValue(); } } public Vector2 GetEquipmentPriceAndLevel(EquipmentObject.EquipmentType equipmentType, float value) { Vector2 one = Vector2.one; if (value < 0f) { return -one; } bool flag = value > 1f; if (flag) { value -= 1f; } value = Mathf.Pow(value, 1.5f); switch (equipmentType) { case EquipmentObject.EquipmentType.ROD: one.x = Mathf.Lerp(priceRod.x, priceRod.y, value); break; case EquipmentObject.EquipmentType.ICE_ROD: one.x = Mathf.Lerp(priceIceRod.x, priceIceRod.y, value); break; case EquipmentObject.EquipmentType.REEL: one.x = Mathf.Lerp(priceReel.x, priceReel.y, value); break; case EquipmentObject.EquipmentType.LINE: one.x = Mathf.Lerp(priceLine.x, priceLine.y, value); break; case EquipmentObject.EquipmentType.FLOAT: one.x = Mathf.Lerp(priceFloat.x, priceFloat.y, value); break; case EquipmentObject.EquipmentType.BAIT: one.x = Mathf.Lerp(priceBait.x, priceBait.y, value); break; case EquipmentObject.EquipmentType.HOOK: one.x = Mathf.Lerp(priceHook.x, priceHook.y, value); break; } one.x *= globalPriceMultiplier; if (equipmentType == EquipmentObject.EquipmentType.REEL) { value *= 1.2f; } one.y = Mathf.Lerp(0f, (int)playerSettings.maxPlayerLevelPrices, value); one.y = Mathf.Clamp(one.y, 1f, (int)playerSettings.maxPlayerLevel); if (flag) { switch (equipmentType) { case EquipmentObject.EquipmentType.ROD: one.x += priceRod.y; break; case EquipmentObject.EquipmentType.REEL: one.x += priceReel.y; break; case EquipmentObject.EquipmentType.LINE: one.x += priceLine.y; break; } one.y = (float)(int)playerSettings.maxPlayerLevelPrices + 1f; } return one; } [Button] public void CalculateEquipmentCount() { equipmentCount = 0; equipmentCount += equipmentRods.Count; equipmentCount += equipmentIceRods.Count; equipmentCount += equipmentReels.Count; equipmentCount += equipmentLines.Count; equipmentCount += equipmentFloats.Count; equipmentCount += equipmentBaits.Count; equipmentCount += equipmentOther.Count; equipmentCount += equipmentRods.Count; equipmentCount += equipmentNormalHooks.Count; equipmentCount += equipmentSpinners.Count; equipmentCount += equipmentSpoons.Count; equipmentCount += equipmentWobblers.Count; equipmentCount += equipmentSoftBaits.Count; } [Button] public void CopyRodsToTypes() { for (int i = 0; i < equipmentRods.Count; i++) { switch (equipmentRods[i].prefab.GetComponent().rodType) { case FishingRod.RodType.SPINNING: equipmentRodsSpinning.Add(equipmentRods[i]); break; case FishingRod.RodType.CASTING: equipmentRodsCasting.Add(equipmentRods[i]); break; } } } [Button] public void CopyReelsToTypes() { for (int i = 0; i < equipmentReels.Count; i++) { switch (equipmentReels[i].prefab.GetComponent().reelType) { case FishingReel.ReelType.STANDARD: equipmentReelsStandard.Add(equipmentReels[i]); break; case FishingReel.ReelType.LINE_COUNTER: equipmentReelsLineCounter.Add(equipmentReels[i]); break; } } } [Button] public void ShuffleRods() { Utilities.Shuffle(equipmentFishingRods); } [Button] public void CalculateRodParams() { float num = 19f; for (int i = 0; i < equipmentFishingRods.Count; i++) { float num2 = num; float num3 = UnityEngine.Random.Range(-1f, 1f); num3 = num3 * num * 0.25f; equipmentFishingRods[i].durability = Mathf.Clamp01((num2 + num3) / 100f); num += 3.4f; } Debug.Log("currentValue: " + num); } [Button] public void ShuffleReels() { Utilities.Shuffle(equipmentFishingReels); } [Button] public void CalculateReelParams() { float num = 22f; for (int i = 0; i < equipmentFishingReels.Count; i++) { float num2 = num; float num3 = num; float num4 = num; float num5 = UnityEngine.Random.Range(-1f, 1f); num5 = num5 * num * 0.25f; equipmentFishingReels[i].durability = Mathf.Clamp01((num2 + num5) / 200f); equipmentFishingReels[i].dragSteps = Mathf.RoundToInt(Mathf.Clamp01((num3 - num5) / 200f) * (float)FishingReel.maxDragSteps); equipmentFishingReels[i].maxLineLength = Mathf.RoundToInt(Mathf.Lerp(6f, 30f, Mathf.Clamp01(num / 200f))) * 10; num += 8.5f; } Debug.Log("currentReelValue: " + num); } public bool CheckMinimumRequiredEquipment() { if (GameController.Instance.iceLevel) { if (GetCurrentEquipment(EquipmentObject.EquipmentType.ICE_ROD) == null || GetCurrentEquipment(EquipmentObject.EquipmentType.ICE_ROD).prefab == null) { return false; } if (GetCurrentEquipment(EquipmentObject.EquipmentType.LINE) == null || GetCurrentEquipment(EquipmentObject.EquipmentType.LINE).prefab == null) { return false; } } else { if (GetCurrentEquipment(EquipmentObject.EquipmentType.ROD) == null || GetCurrentEquipment(EquipmentObject.EquipmentType.ROD).prefab == null) { return false; } if (GetCurrentEquipment(EquipmentObject.EquipmentType.REEL) == null || GetCurrentEquipment(EquipmentObject.EquipmentType.REEL).prefab == null) { return false; } if (GetCurrentEquipment(EquipmentObject.EquipmentType.LINE) == null || GetCurrentEquipment(EquipmentObject.EquipmentType.LINE).prefab == null) { return false; } } return true; } [Button] public void TestUnequip() { List list = equipmentSets[0]; for (int i = 0; i < list.Count; i++) { UnequipObject((EquipmentObject.EquipmentType)i); } } [Button] public void TestUnequipRod() { List list = equipmentSets[0]; UnequipObject(EquipmentObject.EquipmentType.ROD); } [Button] public void CheckStartEquipment() { if ((int)GlobalSettings.Instance.playerSettings.playersExperience > 0) { return; } bool flag = true; List list = equipmentSets[0]; for (int i = 0; i < list.Count; i++) { if (list[i] != null && list[i].prefab != null) { flag = false; break; } } if (flag) { Debug.LogError("CheckStartEquipment sthWrong"); Reset(); } } public bool CanBeSold(EquipmentObject equipmentObject) { return !IsThisStartEquipment(equipmentObject); } public bool IsThisStartEquipment(EquipmentObject equipmentObject) { if ((int)equipmentObject.equipmentType >= startEquipment.Count) { return false; } return startEquipment[(int)equipmentObject.equipmentType] == equipmentObject.id; } public void AddFakeBaits() { EquipmentObject equipmentObject = FindEquipment(EquipmentObject.EquipmentType.BAIT, startEquipment[6]); if (equipmentObject.amount == 0 && (int)playerSettings.playersMoney < equipmentObject.price) { equipmentObject.amount = 1; Debug.LogError("AddFakeBaits"); } } public void Save() { string currentProfilePrefix = GlobalSettings.Instance.saveManager.GetCurrentProfilePrefix(); using (ES2Writer eS2Writer = ES2Writer.Create(currentProfilePrefix)) { for (int i = 0; i < 13; i++) { List equipmentList = GetEquipmentList((EquipmentObject.EquipmentType)i); if (equipmentList != null) { for (int j = 0; j < equipmentList.Count; j++) { eS2Writer.Write(equipmentList[j].isBought, equipmentList[j].id + "_isBought"); eS2Writer.Write(equipmentList[j].amount, equipmentList[j].id + "_amount"); } } } for (int k = 0; k < equipmentSets.Length; k++) { string text = ((k != 0) ? (k + 1 + "_") : string.Empty); List list = equipmentSets[k]; for (int l = 0; l < list.Count; l++) { if (list[l] != null) { string id = list[l].id; EquipmentObject.EquipmentType equipmentType = (EquipmentObject.EquipmentType)l; eS2Writer.Write(id, "currentEquipment_" + text + equipmentType); } else { string empty = string.Empty; EquipmentObject.EquipmentType equipmentType2 = (EquipmentObject.EquipmentType)l; eS2Writer.Write(empty, "currentEquipment_" + text + equipmentType2); } } List list2 = baitsSets[k]; for (int m = 0; m < list2.Count; m++) { if (list2[m] != null) { eS2Writer.Write(list2[m].id, "currentBaits_" + text + m); } else { eS2Writer.Write(string.Empty, "currentBaits_" + text + m); } } eS2Writer.Write(setSpecificParameters[k].currentFloatDepth, "currentFloatDepth" + text); eS2Writer.Write(setSpecificParameters[k].currentFloatWeight, "currentFloatWeight" + text); eS2Writer.Write(setSpecificParameters[k].currentHookSize, "currentHookSize" + text); } try { eS2Writer.Save(); } catch (Exception exception) { Debug.LogException(exception, this); } Debug.Log("Save Equipment"); } } public void Load() { string currentProfilePrefix = GlobalSettings.Instance.saveManager.GetCurrentProfilePrefix(); using (ES2Reader reader = ES2Reader.Create(currentProfilePrefix)) { for (int i = 0; i < 13; i++) { List equipmentList = GetEquipmentList((EquipmentObject.EquipmentType)i); if (equipmentList == null) { continue; } for (int j = 0; j < equipmentList.Count; j++) { equipmentList[j].isBought = SaveManager.Read(reader, equipmentList[j].id + "_isBought", false); equipmentList[j].amount = SaveManager.Read(reader, equipmentList[j].id + "_amount", (!equipmentList[j].hasAmount) ? (-1) : 0); if (equipmentList[j].hasAmount && equipmentList[j].amount < 0) { equipmentList[j].amount = 0; } if (equipmentList[j].hasAmount && equipmentList[j].amount < 0 && equipmentList[j].isBought && !equipmentList[j].isEquipped) { equipmentList[j].amount = 1; } if (equipmentList[j].isBought && equipmentList[j].IsBuyAndEquip()) { equipmentList[j].isEquipped = true; } } } for (int k = 0; k < equipmentSets.Length; k++) { string text = ((k != 0) ? (k + 1 + "_") : string.Empty); List list = equipmentSets[k]; for (int l = 0; l < list.Count; l++) { EquipmentObject.EquipmentType equipmentType = (EquipmentObject.EquipmentType)l; string id = SaveManager.Read(reader, "currentEquipment_" + text + equipmentType, string.Empty); EquipmentObject equipmentObject = FindEquipment((EquipmentObject.EquipmentType)l, id); if (equipmentObject != null) { EquipObject(equipmentObject, k); } else { UnequipObject((EquipmentObject.EquipmentType)l, k); } } List list2 = baitsSets[k]; for (int m = 0; m < list2.Count; m++) { string text2 = SaveManager.Read(reader, "currentBaits_" + text + m, string.Empty); EquipmentObject equipmentObject2 = FindEquipment(EquipmentObject.EquipmentType.BAIT, text2); if (equipmentObject2 != null && text2 != string.Empty) { EquipObject(equipmentObject2, k, m); } else { UnequipObject(EquipmentObject.EquipmentType.BAIT, k, m); } } setSpecificParameters[k].currentFloatDepth = SaveManager.Read(reader, "currentFloatDepth" + text, 50f); setSpecificParameters[k].currentFloatWeight = SaveManager.Read(reader, "currentFloatWeight" + text, 2f); setSpecificParameters[k].currentHookSize = SaveManager.Read(reader, "currentHookSize" + text, 0f); } } AddFakeBaits(); ChangeCurrentEquipmentSet(0); Debug.Log("Load Equipment"); } public void Reset() { if (GlobalSettings.Instance.currentPlatform == GlobalSettings.Platform.ARCADE) { return; } for (int i = 0; i < 13; i++) { List equipmentList = GetEquipmentList((EquipmentObject.EquipmentType)i); if (equipmentList == null) { continue; } for (int j = 0; j < equipmentList.Count; j++) { equipmentList[j].isBought = equipmentList[j].isBoughtAtStart; equipmentList[j].isEquipped = false; if (equipmentList[j].equipmentSubType == EquipmentObject.EquipmentSubType.FLOAT_WEIGHT) { equipmentList[j].amount = 2; } else { equipmentList[j].amount = ((!equipmentList[j].hasAmount) ? (-1) : 0); } } } EquipmentObject equipmentObject = FindEquipment(EquipmentObject.EquipmentType.HOOK, "HOOK_GNOME_MIKADO_01"); equipmentObject.isBought = true; equipmentObject.amount = 1; RefreshStartEquipment(); Debug.Log("Reset Equipment"); Save(); } public void RefreshStartEquipment() { for (int i = 0; i < equipmentSets.Length; i++) { string text = ((i != 0) ? (i + 1 + "_") : string.Empty); List list = baitsSets[i]; for (int j = 0; j < list.Count; j++) { UnequipObject(EquipmentObject.EquipmentType.BAIT, i, j); } List list2 = equipmentSets[i]; for (int k = 0; k < list2.Count; k++) { EquipmentObject equipmentObject = FindEquipment((EquipmentObject.EquipmentType)k, startEquipment[k]); if (equipmentObject != null) { switch (k) { case 5: equipmentObject.amount = 1; break; case 6: equipmentObject.amount = 30; break; default: equipmentObject.isBought = true; break; } } else if (!string.IsNullOrEmpty(startEquipment[k])) { Debug.LogError("StartEquipment not found: " + startEquipment[k]); } if (equipmentObject != null && i == 0) { EquipObject(equipmentObject, 0); } else { UnequipObject((EquipmentObject.EquipmentType)k, i); } } setSpecificParameters[i].currentFloatDepth = 50f; setSpecificParameters[i].currentFloatWeight = 2f; setSpecificParameters[i].currentHookSize = 3f; } } }