using System; using System.Collections.Generic; using BitStrap; using UnityEngine; [Serializable] public class EquipmentObject { public enum EquipmentType { ROD = 0, ICE_ROD = 1, REEL = 2, LINE = 3, FLOAT = 4, HOOK = 5, BAIT = 6, OTHER = 7, BOILIE = 8, ROD_STAND = 9, FEEDER = 10, FEEDER_BAIT = 11, BITE_INDICATOR = 12, COUNT = 13 } public enum EquipmentSubType { FILLET = 0, FILLET_FRIED = 1, BEER = 2, DRILLER = 3, FISHING_NET = 4, GAS_STOVE = 5, FLOAT_WEIGHT = 6 } [Serializable] public class Parameter { public enum ParameterType { STRING = 0, INT = 1, FLOAT = 2, BOOL = 3 } public string parameterName = "EQUIPMENT/PARAMETER_TEST_NAME"; public ParameterType type; public string parameterString = "EQUIPMENT/PARAMETER_TEST_VALUE"; public int parameterInt = 1; public float parameterFloat = 1f; public bool parameterBool = true; public bool isVisible = true; } public string id = string.Empty; public GameObject prefab; public int price = 100; public int level = 1; public Sprite icon; public int producerId; public Sprite producerIcon; [ReadOnly] public string producerName = string.Empty; public string equipmentName = string.Empty; public string equipmentTranslateName = string.Empty; public string description = "EQUIPMENT/TEST_DESCRIPTION"; public bool isBoughtAtStart; public bool isBought; public bool isEquipped; public bool canBeSold = true; public bool isAvailable = true; [HideInInspector] public bool isInDemo; public bool onlyCheat; [HideInInspector] public bool onlyBeta; public bool hasAmount; public int amount = -1; public int maxAmount = 99; public EquipmentType equipmentType; public EquipmentSubType equipmentSubType; public bool isAvailableFromDLCs = true; public List fromDLC = new List(); public List parameters = new List(); public List sizes = new List(); public void Awake() { } public int GetCurrentSellPrice() { return GlobalSettings.Instance.playerSettings.GetMoneyUpdated(price); } public void Initialize(bool refresh = false) { if ((bool)GlobalSettings.Instance) { producerName = GlobalSettings.Instance.equipmentManager.GetProducerName(producerId); } Parameter parameter = null; int num = 0; if (equipmentType == EquipmentType.ROD || equipmentType == EquipmentType.ICE_ROD) { FishingRod component = prefab.GetComponent(); component.CalculateWeightDurability(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/TYPE"); parameter.type = Parameter.ParameterType.STRING; if (component.rodType == FishingRod.RodType.CASTING) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ROD_CASTING"); } else if (component.rodType == FishingRod.RodType.FLY_FISHING) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ROD_FLY"); } else if (component.rodType == FishingRod.RodType.GROUND) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ROD_FEEDER"); } else if (component.rodType == FishingRod.RodType.ICE_FISHING) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ROD_ICE"); } else if (component.rodType == FishingRod.RodType.SPINNING) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ROD_SPINNING"); } else if (component.rodType == FishingRod.RodType.BAT) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ROD_BAT"); } if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DURABILITY"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetWeightString(component.weightDurability, "F1"); if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[2]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LENGTH"); parameter.type = Parameter.ParameterType.STRING; int num2 = component.lengthSimple; if (equipmentType != EquipmentType.ICE_ROD) { num2 = Mathf.RoundToInt((float)component.lengthSimple * 0.75f / 10f) * 10; } parameter.parameterString = UtilitiesUnits.GetLengthCmString(num2, (!GlobalSettings.Instance.playerSettings.imperialUnits) ? "F0" : "F1"); if (!refresh) { parameters.Add(parameter); } if (equipmentType == EquipmentType.ICE_ROD) { FishingReel component2 = component.mountedReel.GetComponent(); component2.CalculateDragWeight(); parameter = ((!refresh) ? new Parameter() : parameters[3]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DURABILITY") + ": " + Utilities.GetTranslation("EQUIPMENT/REEL"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetWeightString(component2.maxDragWeight, "F1"); if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[4]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DRAG_PRECISION"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = component2.dragSteps + "/10"; if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[5]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_CAPACITY"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetLengthString(component2.maxLineLength, "F0"); if (!refresh) { parameters.Add(parameter); } } } else if (equipmentType == EquipmentType.REEL) { FishingReel component3 = prefab.GetComponent(); if (component3.dragSteps > 10) { component3.dragSteps = 10; } component3.CalculateDragWeight(); parameter = ((!refresh) ? new Parameter() : parameters[num++]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/TYPE"); parameter.type = Parameter.ParameterType.STRING; if (component3.reelType == FishingReel.ReelType.STANDARD) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/REEL_SPINNING"); } else if (component3.reelType == FishingReel.ReelType.LINE_COUNTER) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/REEL_LINE_COUNTER"); } else if (component3.reelType == FishingReel.ReelType.GROUND) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/REEL_GROUND"); } else if (component3.reelType == FishingReel.ReelType.FLY) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/REEL_FLY"); } if (!refresh) { parameters.Add(parameter); } if (component3.reelType != FishingReel.ReelType.FLY) { parameter = ((!refresh) ? new Parameter() : parameters[num++]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/SIZE"); parameter.type = Parameter.ParameterType.INT; parameter.parameterInt = component3.reelSize; if (!refresh) { parameters.Add(parameter); } } parameter = ((!refresh) ? new Parameter() : parameters[num++]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DURABILITY"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetWeightString(component3.maxDragWeight, "F1"); if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[num++]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DRAG_PRECISION"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = component3.dragSteps + "/10"; if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[num++]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_CAPACITY"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetLengthString(component3.maxLineLength, "F0"); if (!refresh) { parameters.Add(parameter); } if (component3.reelType == FishingReel.ReelType.FLY) { parameter = ((!refresh) ? new Parameter() : parameters[num++]); if (!refresh) { parameters.Add(parameter); } parameter.isVisible = false; } } else if (equipmentType == EquipmentType.LINE) { FishingLine component4 = prefab.GetComponent(); component4.CalculateWeightDurability(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DURABILITY"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetWeightString(component4.weightDurability); if (!refresh) { parameters.Add(parameter); } component4.UpdateThickness(); parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/THICKNESS"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetLengthMMString(component4.thikness); if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[2]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/TYPE"); parameter.type = Parameter.ParameterType.STRING; if (component4.lineType == FishingLine.LineType.MONO) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_MONOFILAMENT"); } else if (component4.lineType == FishingLine.LineType.BRAID) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_BRAID"); } else if (component4.lineType == FishingLine.LineType.FLUORO) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_FLUORO"); } else if (component4.lineType == FishingLine.LineType.FLY) { if (component4.flyLineType == FishingLine.FlyLineType.FLOATING) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_FLY_FLOATING"); } else if (component4.flyLineType == FishingLine.FlyLineType.SINKING) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_FLY_SINKING"); } else if (component4.flyLineType == FishingLine.FlyLineType.SINK_TIP) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LINE_FLY_SINK_TIP"); } } if (!refresh) { parameters.Add(parameter); } } else if (equipmentType == EquipmentType.HOOK) { Bait component5 = prefab.GetComponent(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/SIZE"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = string.Empty; for (int i = 0; i < sizes.Count; i++) { if (!refresh) { sizes[i] += 1f; } parameter.parameterString += UtilitiesUnits.GetHookSizeString((int)sizes[i]); if (i < sizes.Count - 1) { parameter.parameterString += ", "; } } if (!refresh) { parameters.Add(parameter); } if (component5.baitType == Bait.BaitType.HOOK) { parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/MAX_BAITS"); parameter.type = Parameter.ParameterType.INT; parameter.parameterInt = component5.baitPartsMax; if (!refresh) { parameters.Add(parameter); } } else { parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/TYPE"); parameter.type = Parameter.ParameterType.STRING; if (component5.baitType == Bait.BaitType.WOBBLER) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/BAIT_WOBBLER"); } else if (component5.baitType == Bait.BaitType.SOFT_BAIT) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/BAIT_SOFT_BAIT"); } else if (component5.baitType == Bait.BaitType.SPINNER) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/BAIT_SPINNER"); } else if (component5.baitType == Bait.BaitType.SPOON) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/BAIT_SPOON"); } else if (component5.baitType == Bait.BaitType.FLY) { if (component5.flyType == Bait.FlyType.DRY) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/FLY_DRY"); } else if (component5.flyType == Bait.FlyType.WET) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/FLY_WET"); } else if (component5.flyType == Bait.FlyType.NYMPH) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/FLY_NYMPH"); } else if (component5.flyType == Bait.FlyType.STREAMER) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/FLY_STREAMER"); } } if (!refresh) { parameters.Add(parameter); } } if (GlobalSettings.Instance.playerSettings.IsCasual()) { FishManager fishManager = GlobalSettings.Instance.fishManager; Vector2 one = Vector2.one; Vector2 one2 = Vector2.one; if (sizes.Count > 0) { if (component5.baitType == Bait.BaitType.HOOK) { one = fishManager.hookToFishWeight[(int)sizes[0]]; one2 = fishManager.hookToFishWeight[(int)sizes[sizes.Count - 1]]; } else if (component5.baitType == Bait.BaitType.FLY) { one = fishManager.flyToFishWeight[(int)sizes[0]]; one2 = fishManager.flyToFishWeight[(int)sizes[sizes.Count - 1]]; } else { one = fishManager.lureToFishWeight[(int)sizes[0]]; one2 = fishManager.lureToFishWeight[(int)sizes[sizes.Count - 1]]; } string parameterString = UtilitiesUnits.GetWeightString(one.x) + " - " + UtilitiesUnits.GetWeightString(one2.y); parameter = ((!refresh) ? new Parameter() : parameters[2]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/HOOK_TO_WEIGHT"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = parameterString; if (!refresh) { parameters.Add(parameter); } } } else if (parameters.Count > 2) { parameters.RemoveAt(2); } } else if (equipmentType == EquipmentType.BAIT) { BaitPart component6 = prefab.GetComponent(); } else if (equipmentType == EquipmentType.FLOAT) { FishingFloat component7 = prefab.GetComponent(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/LENGTH"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetLengthCmString(component7.length); if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/OPTIMAL_WEIGHT"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = Mathf.RoundToInt(component7.optimalBurden) + " " + Utilities.GetTranslation("UNITS/GRAMS"); if (GlobalSettings.Instance.playerSettings.imperialUnits) { Parameter parameter2 = parameter; parameter2.parameterString = parameter2.parameterString + " (" + UtilitiesUnits.GetWeightGramString(Mathf.RoundToInt(component7.optimalBurden)) + ")"; } if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[2]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/WEIGHT"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = UtilitiesUnits.GetWeightGramString(component7.realMass, "F1"); if (!refresh) { parameters.Add(parameter); } parameter.isVisible = false; } else if (equipmentType == EquipmentType.ROD_STAND) { RodStand component8 = prefab.GetComponent(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("GUI/BTN_RODS"); if (component8.isBoatStand) { parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = Utilities.GetTranslation("EDITOR/CATEGORY_BOATS"); } else { parameter.type = Parameter.ParameterType.INT; parameter.parameterInt = component8.rodPlaces.Count; } if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/ELECTRONIC_INDICATOR"); parameter.type = Parameter.ParameterType.STRING; if (component8.isHorizontal) { parameter.parameterString = Utilities.GetTranslation("GUI/BTN_YES"); } else { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/CANT_BE_USED"); } if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[2]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/PLACEMENT"); parameter.type = Parameter.ParameterType.STRING; if (component8.isBoatStand) { parameter.parameterString = Utilities.GetTranslation("All Boats"); } else if (component8.onlyOnTerrain) { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/GROUND"); } else { parameter.parameterString = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/GROUND_PIERS"); } if (!refresh) { parameters.Add(parameter); } } else if (equipmentType == EquipmentType.BITE_INDICATOR) { BiteIndicator component9 = prefab.GetComponent(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/VOLUME"); parameter.type = Parameter.ParameterType.STRING; if (component9.indicatorType == BiteIndicator.IndicatorType.BELL) { parameter.parameterString = Utilities.GetTranslation("GUI/QUALITY_MEDIUM"); } else if (component9.indicatorType == BiteIndicator.IndicatorType.ELECTRONIC) { parameter.parameterString = Utilities.GetTranslation("GUI/QUALITY_HIGH"); } if (!refresh) { parameters.Add(parameter); } } else if (equipmentType == EquipmentType.FEEDER) { Feeder component10 = prefab.GetComponent(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/DURATION"); parameter.type = Parameter.ParameterType.STRING; if (component10.feederType == Feeder.FeederType.WEIGHT) { parameter.parameterString = "-"; } else { parameter.parameterString = string.Empty + (int)(component10.duration / 60f) + " " + Utilities.GetTranslation("UNITS/MINUTES"); } if (!refresh) { parameters.Add(parameter); } parameter = ((!refresh) ? new Parameter() : parameters[1]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/EFFECTIVENESS"); parameter.type = Parameter.ParameterType.STRING; if (component10.feederType == Feeder.FeederType.WEIGHT) { parameter.parameterString = "-"; } else { parameter.parameterString = string.Empty + Mathf.RoundToInt(component10.multiplier * 100f) + " %"; } if (!refresh) { parameters.Add(parameter); } } else if (equipmentType == EquipmentType.OTHER && equipmentSubType == EquipmentSubType.FLOAT_WEIGHT) { FloatWeight component11 = prefab.GetComponent(); parameter = ((!refresh) ? new Parameter() : parameters[0]); parameter.parameterName = Utilities.GetTranslation("EQUIPMENT_PARAMETERS/MASS"); parameter.type = Parameter.ParameterType.STRING; parameter.parameterString = component11.weight.ToString("F1") + " " + Utilities.GetTranslation("UNITS/GRAMS"); if (GlobalSettings.Instance.playerSettings.imperialUnits) { Parameter parameter3 = parameter; parameter3.parameterString = parameter3.parameterString + " (" + UtilitiesUnits.GetWeightGramString(component11.weight) + ")"; } if (!refresh) { parameters.Add(parameter); } } if (fromDLC.Count > 0) { isAvailableFromDLCs = DLCManager.Instance.IsAnyDLCInstalled(fromDLC); } else { isAvailableFromDLCs = isAvailable; } } public void CalculateValue() { float num = -1f; if (equipmentType == EquipmentType.ROD) { FishingRod component = prefab.GetComponent(); num = component.durability; } else if (equipmentType == EquipmentType.ICE_ROD) { FishingRod component2 = prefab.GetComponent(); FishingReel mountedReel = component2.mountedReel; num = component2.durability * 1.5f; num += mountedReel.durability * 1.7f; num += ((float)mountedReel.dragSteps + 1f) / (float)FishingReel.maxDragSteps * 0.3f; num += Mathf.InverseLerp(50f, 120f, mountedReel.maxLineLength) * 0.8f; num /= 4.3f; num *= 1.2f; } else if (equipmentType == EquipmentType.REEL) { FishingReel component3 = prefab.GetComponent(); num = component3.durability * 1.7f; num += ((float)component3.dragSteps + 1f) / (float)FishingReel.maxDragSteps * 0.3f; num += Mathf.InverseLerp(60f, 350f, component3.maxLineLength) * 0.8f; num /= 2.8f; } else if (equipmentType == EquipmentType.LINE) { FishingLine component4 = prefab.GetComponent(); num = component4.durability; } else if (equipmentType == EquipmentType.HOOK) { Bait component5 = prefab.GetComponent(); num = Utilities.GetAverage(sizes) / 18f; if (component5.baitType == Bait.BaitType.HOOK) { num += (float)component5.baitPartsMax / 3f; num *= 0.5f; } num *= component5.valueMultiplier; } else if (equipmentType == EquipmentType.BAIT) { BaitPart component6 = prefab.GetComponent(); num = component6.priceFactor; num *= 0.65f; } else if (equipmentType == EquipmentType.FLOAT) { FishingFloat component7 = prefab.GetComponent(); num = component7.optimalBurden / 30f; } else if (equipmentType == EquipmentType.OTHER && equipmentSubType == EquipmentSubType.FLOAT_WEIGHT) { FloatWeight component8 = prefab.GetComponent(); } if (equipmentType != EquipmentType.ROD && equipmentType != EquipmentType.REEL && equipmentType != EquipmentType.LINE) { num = Mathf.Clamp(num, -1f, 1f); } Vector2 equipmentPriceAndLevel = GlobalSettings.Instance.equipmentManager.GetEquipmentPriceAndLevel(equipmentType, num); if (num >= 0f) { price = Mathf.RoundToInt(equipmentPriceAndLevel.x); level = Mathf.RoundToInt(equipmentPriceAndLevel.y); } } public string GetFullName() { if (equipmentTranslateName != string.Empty) { return Utilities.GetTranslation(equipmentTranslateName); } if (equipmentName != string.Empty) { return producerName + " " + equipmentName; } return string.Empty; } public void Buy() { isBought = true; if (IsBuyAndEquip()) { isEquipped = true; } if (hasAmount) { amount++; } } public void SetAmount(int newAmount) { isBought = true; if (IsBuyAndEquip()) { isEquipped = true; } if (hasAmount) { amount = newAmount; } } public void Sell() { if (hasAmount && amount > 0) { amount--; return; } Equip(false); isBought = false; } public void Equip(bool equip) { isEquipped = equip; } public bool IsBuyAndEquip() { return equipmentType == EquipmentType.OTHER && (equipmentSubType == EquipmentSubType.FISHING_NET || equipmentSubType == EquipmentSubType.DRILLER); } public bool CanAllBeSold() { return equipmentType != EquipmentType.ROD && equipmentType != EquipmentType.REEL && equipmentType != EquipmentType.LINE && equipmentType != EquipmentType.HOOK && equipmentType != EquipmentType.BAIT; } }