From e0568cbdde50dc7d8fb82dec4b9dedce9dd633a8 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 6 Oct 2025 18:19:00 -0700 Subject: [PATCH 1/9] Improve `PlayMenu.cs` --- Assets/Scripts/PlayMenu.cs | 291 +++++++++++++------------------------ 1 file changed, 100 insertions(+), 191 deletions(-) diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index 4767561..032b388 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -1,4 +1,3 @@ -using System; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; @@ -6,22 +5,31 @@ using UnityEngine.UI; public class PlayMenu : MonoBehaviour { - public GameObject selectionMenu; - public GameObject customMenu; - public Button customButton; - public Button customBackButton; - public Button customPlayButton; + [SerializeField] private GameObject selectionMenu; + [SerializeField] private GameObject customMenu; + [SerializeField] private Button customButton; + [SerializeField] private Button customBackButton; + [SerializeField] private Button customPlayButton; - public TMP_InputField normalBerryChance; - public TMP_InputField poisonBerryChance; - public TMP_InputField slowBerryChance; - public TMP_InputField ultraBerryChance; - public TMP_InputField speedyBerryChance; - public TMP_InputField randomBerryChance; - public TMP_InputField antiBerryChance; - public TMP_InputField nothingBerryChance; + [SerializeField] private TMP_InputField normalBerryChance; + [SerializeField] private TMP_InputField poisonBerryChance; + [SerializeField] private TMP_InputField slowBerryChance; + [SerializeField] private TMP_InputField ultraBerryChance; + [SerializeField] private TMP_InputField speedyBerryChance; + [SerializeField] private TMP_InputField randomBerryChance; + [SerializeField] private TMP_InputField antiBerryChance; + [SerializeField] private TMP_InputField nothingBerryChance; - public TMP_Text validateTotalText; + [SerializeField] private TMP_Text validateTotalText; + + private readonly float defaultNormalBerryChance = 47.5f; + private readonly float defaultPoisonBerryChance = 12.5f; + private readonly float defaultSlowBerryChance = 10f; + private readonly float defaultUltraBerryChance = 10f; + private readonly float defaultSpeedyBerryChance = 10f; + private readonly float defaultRandomBerryChance = 5f; + private readonly float defaultAntiBerryChance = 5f; + private readonly float defaultNothingBerryChance = 0f; void Awake() { @@ -35,14 +43,14 @@ public class PlayMenu : MonoBehaviour customMenu.SetActive(false); selectionMenu.SetActive(true); - normalBerryChance.text = "47.5%"; - poisonBerryChance.text = "12.5%"; - slowBerryChance.text = "10%"; - ultraBerryChance.text = "10%"; - speedyBerryChance.text = "10%"; - randomBerryChance.text = "5%"; - antiBerryChance.text = "5%"; - nothingBerryChance.text = "0%"; + normalBerryChance.text = defaultNormalBerryChance.ToString(); + poisonBerryChance.text = defaultPoisonBerryChance.ToString(); + slowBerryChance.text = defaultSlowBerryChance.ToString(); + ultraBerryChance.text = defaultUltraBerryChance.ToString(); + speedyBerryChance.text = defaultSpeedyBerryChance.ToString(); + randomBerryChance.text = defaultRandomBerryChance.ToString(); + antiBerryChance.text = defaultAntiBerryChance.ToString(); + nothingBerryChance.text = defaultNothingBerryChance.ToString(); ValidateTotal(); }); customPlayButton.onClick.AddListener(async () => @@ -50,183 +58,47 @@ public class PlayMenu : MonoBehaviour GameObject obj = new("CustomGameTempData"); obj.AddComponent(); CustomGameTempData customGameTempData = obj.GetComponent(); - customGameTempData.normalBerryChance = float.Parse(normalBerryChance.text.Replace("%", "").Trim()); - customGameTempData.poisonBerryChance = float.Parse(poisonBerryChance.text.Replace("%", "").Trim()); - customGameTempData.slowBerryChance = float.Parse(slowBerryChance.text.Replace("%", "").Trim()); - customGameTempData.ultraBerryChance = float.Parse(ultraBerryChance.text.Replace("%", "").Trim()); - customGameTempData.speedyBerryChance = float.Parse(speedyBerryChance.text.Replace("%", "").Trim()); - customGameTempData.randomBerryChance = float.Parse(randomBerryChance.text.Replace("%", "").Trim()); - customGameTempData.antiBerryChance = float.Parse(antiBerryChance.text.Replace("%", "").Trim()); - customGameTempData.nothingBerryChance = float.Parse(nothingBerryChance.text.Replace("%", "").Trim()); + customGameTempData.normalBerryChance = GetValueFrom(normalBerryChance); + customGameTempData.poisonBerryChance = GetValueFrom(poisonBerryChance); + customGameTempData.slowBerryChance = GetValueFrom(slowBerryChance); + customGameTempData.ultraBerryChance = GetValueFrom(ultraBerryChance); + customGameTempData.speedyBerryChance = GetValueFrom(speedyBerryChance); + customGameTempData.randomBerryChance = GetValueFrom(randomBerryChance); + customGameTempData.antiBerryChance = GetValueFrom(antiBerryChance); + customGameTempData.nothingBerryChance = GetValueFrom(nothingBerryChance); await SceneManager.LoadSceneAsync("CustomGamePlayer"); }); - normalBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - normalBerryChance.text = value.Replace("%", ""); - }); - normalBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - normalBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - poisonBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - poisonBerryChance.text = value.Replace("%", ""); - poisonBerryChance.stringPosition = poisonBerryChance.text.Length; - }); - poisonBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - poisonBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - slowBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - slowBerryChance.text = value.Replace("%", ""); - slowBerryChance.stringPosition = slowBerryChance.text.Length; - }); - slowBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - slowBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - ultraBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - ultraBerryChance.text = value.Replace("%", ""); - ultraBerryChance.stringPosition = ultraBerryChance.text.Length; - }); - ultraBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - ultraBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - speedyBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - speedyBerryChance.text = value.Replace("%", ""); - speedyBerryChance.stringPosition = speedyBerryChance.text.Length; - }); - speedyBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - speedyBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - randomBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - randomBerryChance.text = value.Replace("%", ""); - randomBerryChance.stringPosition = randomBerryChance.text.Length; - }); - randomBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - randomBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - antiBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - antiBerryChance.text = value.Replace("%", ""); - antiBerryChance.stringPosition = antiBerryChance.text.Length; - }); - antiBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - antiBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); - nothingBerryChance.onSelect.AddListener((value) => - { - validateTotalText.gameObject.SetActive(false); - customBackButton.interactable = false; - customPlayButton.interactable = false; - nothingBerryChance.text = value.Replace("%", ""); - nothingBerryChance.stringPosition = nothingBerryChance.text.Length; - }); - nothingBerryChance.onDeselect.AddListener((value) => - { - if (float.TryParse(value, out var value2) && value2 < 0f) - { - value = "0"; - } - nothingBerryChance.text = value + "%"; - customBackButton.interactable = true; - ValidateTotal(); - }); + normalBerryChance.onSelect.AddListener((value) => OnSelect(value, normalBerryChance)); + normalBerryChance.onDeselect.AddListener((value) => OnDeselect(value, normalBerryChance)); + poisonBerryChance.onSelect.AddListener((value) => OnSelect(value, poisonBerryChance)); + poisonBerryChance.onDeselect.AddListener((value) => OnDeselect(value, poisonBerryChance)); + slowBerryChance.onSelect.AddListener((value) => OnSelect(value, slowBerryChance)); + slowBerryChance.onDeselect.AddListener((value) => OnDeselect(value, slowBerryChance)); + ultraBerryChance.onSelect.AddListener((value) => OnSelect(value, ultraBerryChance)); + ultraBerryChance.onDeselect.AddListener((value) => OnDeselect(value, ultraBerryChance)); + speedyBerryChance.onSelect.AddListener((value) => OnSelect(value, speedyBerryChance)); + speedyBerryChance.onDeselect.AddListener((value) => OnDeselect(value, speedyBerryChance)); + randomBerryChance.onSelect.AddListener((value) => OnSelect(value, randomBerryChance)); + randomBerryChance.onDeselect.AddListener((value) => OnDeselect(value, randomBerryChance)); + antiBerryChance.onSelect.AddListener((value) => OnSelect(value, antiBerryChance)); + antiBerryChance.onDeselect.AddListener((value) => OnDeselect(value, antiBerryChance)); + nothingBerryChance.onSelect.AddListener((value) => OnSelect(value, nothingBerryChance)); + nothingBerryChance.onDeselect.AddListener((value) => OnDeselect(value, nothingBerryChance)); } void ValidateTotal() { customPlayButton.interactable = false; float total = 0f; - try - { - total += float.Parse(normalBerryChance.text.Replace("%", "")); - total += float.Parse(poisonBerryChance.text.Replace("%", "")); - total += float.Parse(slowBerryChance.text.Replace("%", "")); - total += float.Parse(ultraBerryChance.text.Replace("%", "")); - total += float.Parse(speedyBerryChance.text.Replace("%", "")); - total += float.Parse(randomBerryChance.text.Replace("%", "")); - total += float.Parse(antiBerryChance.text.Replace("%", "")); - total += float.Parse(nothingBerryChance.text.Replace("%", "")); - } - catch (Exception) - { - validateTotalText.text = "Failed to parse total"; - validateTotalText.gameObject.SetActive(true); - return; - } + total += GetValueFrom(normalBerryChance); + total += GetValueFrom(poisonBerryChance); + total += GetValueFrom(slowBerryChance); + total += GetValueFrom(ultraBerryChance); + total += GetValueFrom(speedyBerryChance); + total += GetValueFrom(randomBerryChance); + total += GetValueFrom(antiBerryChance); + total += GetValueFrom(nothingBerryChance); if (total == 100f) { customPlayButton.interactable = true; @@ -238,4 +110,41 @@ public class PlayMenu : MonoBehaviour validateTotalText.gameObject.SetActive(true); } } + + private float GetValueFrom(TMP_InputField inputField) + { + return GetValueFroText(inputField.text); + } + + private float GetValueFroText(string text) + { + try + { + return float.Parse(text.Replace("%", "").Trim()); + } + catch + { + return 0f; + } + } + + void OnSelect(string value, TMP_InputField inputField) + { + validateTotalText.gameObject.SetActive(false); + customBackButton.interactable = false; + customPlayButton.interactable = false; + inputField.text = value.Replace("%", ""); + inputField.stringPosition = inputField.text.Length; + } + + void OnDeselect(string value, TMP_InputField inputField) + { + if (float.TryParse(value, out var value2) && value2 < 0f) + { + value = "0"; + } + inputField.text = value + "%"; + customBackButton.interactable = true; + ValidateTotal(); + } } \ No newline at end of file From 51bf19b02e59917b684a8bb0de061952d240a306 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 6 Oct 2025 18:23:39 -0700 Subject: [PATCH 2/9] Add normalization button --- Assets/Scenes/PlayMenu.unity | 380 +++++++++++++++++++++++++++++++++-- Assets/Scripts/PlayMenu.cs | 9 +- 2 files changed, 376 insertions(+), 13 deletions(-) diff --git a/Assets/Scenes/PlayMenu.unity b/Assets/Scenes/PlayMenu.unity index 2bfa234..417ad88 100644 --- a/Assets/Scenes/PlayMenu.unity +++ b/Assets/Scenes/PlayMenu.unity @@ -152,12 +152,12 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 936243369} - m_Father: {fileID: 164218987} + m_Father: {fileID: 656379404} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: -105, y: 45} - m_SizeDelta: {x: 200, y: 60} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 60} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &535458 MonoBehaviour: @@ -568,8 +568,7 @@ RectTransform: - {fileID: 459138107} - {fileID: 598155838} - {fileID: 1425764567} - - {fileID: 535457} - - {fileID: 388305488} + - {fileID: 656379404} m_Father: {fileID: 517161050} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -860,6 +859,159 @@ RectTransform: m_AnchoredPosition: {x: 293.75, y: -67.5} m_SizeDelta: {x: 132.5, y: 45} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &321706407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 321706408} + - component: {fileID: 321706411} + - component: {fileID: 321706410} + - component: {fileID: 321706409} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &321706408 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321706407} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1461746391} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &321706409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321706407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73b30df2b3a7144b99b75ce70168fd50, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::CustomColorObject + type: 9 + invert: 0 + addMore: {r: 0, g: 0, b: 0, a: 0} + reverseAdd: 0 +--- !u!114 &321706410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321706407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Normalize + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 4fd546dd0900395408d2de20f5025882, type: 2} + m_sharedMaterial: {fileID: -1476194838487357290, guid: 4fd546dd0900395408d2de20f5025882, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 28 + m_fontSizeBase: 28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &321706411 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321706407} + m_CullTransparentMesh: 1 --- !u!1 &322540936 GameObject: m_ObjectHideFlags: 0 @@ -995,12 +1147,12 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1645061375} - m_Father: {fileID: 164218987} + m_Father: {fileID: 656379404} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 105, y: 45} - m_SizeDelta: {x: 200, y: 60} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 60} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &388305489 MonoBehaviour: @@ -2185,6 +2337,7 @@ MonoBehaviour: customButton: {fileID: 1056526449} customBackButton: {fileID: 535460} customPlayButton: {fileID: 388305490} + customNormalizeButton: {fileID: 1461746393} normalBerryChance: {fileID: 667414245} poisonBerryChance: {fileID: 828398876} slowBerryChance: {fileID: 528872766} @@ -2209,6 +2362,71 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &656379403 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656379404} + - component: {fileID: 656379405} + m_Layer: 5 + m_Name: ButtonGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &656379404 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656379403} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 535457} + - {fileID: 388305488} + - {fileID: 1461746391} + m_Father: {fileID: 164218987} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -230} + m_SizeDelta: {x: 535, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &656379405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 656379403} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.HorizontalLayoutGroup + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!1 &663960401 GameObject: m_ObjectHideFlags: 0 @@ -5018,6 +5236,144 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1447186679} m_CullTransparentMesh: 1 +--- !u!1 &1461746390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1461746391} + - component: {fileID: 1461746395} + - component: {fileID: 1461746394} + - component: {fileID: 1461746393} + - component: {fileID: 1461746392} + m_Layer: 5 + m_Name: NormalizeButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1461746391 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1461746390} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 321706408} + m_Father: {fileID: 656379404} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1461746392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1461746390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73b30df2b3a7144b99b75ce70168fd50, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::CustomColorObject + type: 2 + invert: 0 + addMore: {r: 0, g: 0, b: 0, a: 0} + reverseAdd: 0 +--- !u!114 &1461746393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1461746390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1461746394} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1461746394 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1461746390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1461746395 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1461746390} + m_CullTransparentMesh: 1 --- !u!1 &1487969216 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index 032b388..9f34df9 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -10,6 +10,7 @@ public class PlayMenu : MonoBehaviour [SerializeField] private Button customButton; [SerializeField] private Button customBackButton; [SerializeField] private Button customPlayButton; + [SerializeField] private Button customNormalizeButton; [SerializeField] private TMP_InputField normalBerryChance; [SerializeField] private TMP_InputField poisonBerryChance; @@ -53,6 +54,10 @@ public class PlayMenu : MonoBehaviour nothingBerryChance.text = defaultNothingBerryChance.ToString(); ValidateTotal(); }); + customNormalizeButton.onClick.AddListener(() => + { + //the fun logic here + }); customPlayButton.onClick.AddListener(async () => { GameObject obj = new("CustomGameTempData"); @@ -90,6 +95,7 @@ public class PlayMenu : MonoBehaviour void ValidateTotal() { customPlayButton.interactable = false; + customNormalizeButton.interactable = false; float total = 0f; total += GetValueFrom(normalBerryChance); total += GetValueFrom(poisonBerryChance); @@ -106,6 +112,7 @@ public class PlayMenu : MonoBehaviour } else { + customNormalizeButton.interactable = true; validateTotalText.text = "Total must add up to 100%!"; validateTotalText.gameObject.SetActive(true); } @@ -133,6 +140,7 @@ public class PlayMenu : MonoBehaviour validateTotalText.gameObject.SetActive(false); customBackButton.interactable = false; customPlayButton.interactable = false; + customNormalizeButton.interactable = false; inputField.text = value.Replace("%", ""); inputField.stringPosition = inputField.text.Length; } @@ -144,7 +152,6 @@ public class PlayMenu : MonoBehaviour value = "0"; } inputField.text = value + "%"; - customBackButton.interactable = true; ValidateTotal(); } } \ No newline at end of file From 09605c9f50efacebb925c591b416e73c0cbdbc8a Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 6 Oct 2025 18:24:10 -0700 Subject: [PATCH 3/9] Disable this, left on by accident --- Assets/Scenes/PlayMenu.unity | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Assets/Scenes/PlayMenu.unity b/Assets/Scenes/PlayMenu.unity index 417ad88..5fd1c0b 100644 --- a/Assets/Scenes/PlayMenu.unity +++ b/Assets/Scenes/PlayMenu.unity @@ -154,9 +154,9 @@ RectTransform: - {fileID: 936243369} m_Father: {fileID: 656379404} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 87.5, y: -30} m_SizeDelta: {x: 175, y: 60} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &535458 @@ -552,7 +552,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &164218987 RectTransform: m_ObjectHideFlags: 0 @@ -1149,9 +1149,9 @@ RectTransform: - {fileID: 1645061375} m_Father: {fileID: 656379404} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 267.5, y: -30} m_SizeDelta: {x: 175, y: 60} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &388305489 @@ -1537,7 +1537,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0, y: -100} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: 658.25, y: 45.01} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &459138108 MonoBehaviour: @@ -5105,7 +5105,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} m_AnchoredPosition: {x: 0, y: -100} - m_SizeDelta: {x: 400.43, y: 70.01} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1447186681 MonoBehaviour: @@ -5271,9 +5271,9 @@ RectTransform: - {fileID: 321706408} m_Father: {fileID: 656379404} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 447.5, y: -30} m_SizeDelta: {x: 175, y: 60} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1461746392 @@ -6265,7 +6265,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1723463929 RectTransform: m_ObjectHideFlags: 0 From 012a67b48cddd30c59b2543756c1f24b2fd32ebd Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 6 Oct 2025 18:32:10 -0700 Subject: [PATCH 4/9] Fix back button not being clickable ever and also fix normalize button being interactable by default --- Assets/Scenes/PlayMenu.unity | 2 +- Assets/Scripts/PlayMenu.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/Scenes/PlayMenu.unity b/Assets/Scenes/PlayMenu.unity index 5fd1c0b..f71219f 100644 --- a/Assets/Scenes/PlayMenu.unity +++ b/Assets/Scenes/PlayMenu.unity @@ -5331,7 +5331,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 1461746394} m_OnClick: m_PersistentCalls: diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index 9f34df9..5b52f3b 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -107,6 +107,7 @@ public class PlayMenu : MonoBehaviour total += GetValueFrom(nothingBerryChance); if (total == 100f) { + customBackButton.interactable = true; customPlayButton.interactable = true; validateTotalText.gameObject.SetActive(false); } From b0e2fcd55770a1a7c293a83330451638c64fe76d Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 6 Oct 2025 18:32:57 -0700 Subject: [PATCH 5/9] oops --- Assets/Scripts/PlayMenu.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index 5b52f3b..a20bf90 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -94,6 +94,7 @@ public class PlayMenu : MonoBehaviour void ValidateTotal() { + customBackButton.interactable = false; customPlayButton.interactable = false; customNormalizeButton.interactable = false; float total = 0f; From f1043effbbbb38f32a5b2716287b43c6d29a6cb5 Mon Sep 17 00:00:00 2001 From: Thepuppetqueen57 Date: Mon, 6 Oct 2025 19:39:28 -0700 Subject: [PATCH 6/9] Made the normalize button kinda work It removes the percentage signs and sometimes values can be negative but I'll fix those issues. --- Assets/Scripts/PlayMenu.cs | 156 ++++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index a20bf90..76dfffe 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -56,7 +56,161 @@ public class PlayMenu : MonoBehaviour }); customNormalizeButton.onClick.AddListener(() => { - //the fun logic here + float normalBerry = GetValueFrom(normalBerryChance); + float poisonBerry = GetValueFrom(poisonBerryChance); + float slowBerry = GetValueFrom(slowBerryChance); + float ultraBerry = GetValueFrom(ultraBerryChance); + float speedyBerry = GetValueFrom(speedyBerryChance); + float randomBerry = GetValueFrom(randomBerryChance); + float antiBerry = GetValueFrom(antiBerryChance); + float nothingBerry = GetValueFrom(nothingBerryChance); + + int divideBy = 0; + + divideBy += normalBerry > 0 ? 1 : 0; + divideBy += poisonBerry > 0 ? 1 : 0; + divideBy += slowBerry > 0 ? 1 : 0; + divideBy += ultraBerry > 0 ? 1 : 0; + divideBy += speedyBerry > 0 ? 1 : 0; + divideBy += randomBerry > 0 ? 1 : 0; + divideBy += antiBerry > 0 ? 1 : 0; + divideBy += nothingBerry > 0 ? 1 : 0; + + float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + nothingBerry; + float difference = addedChances - 100f; + float remainingDifference = difference; + int remainingCount = divideBy; + int sumAssigned = 0; + + if (normalBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = normalBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + normalBerryChance.text = displayVal.ToString().Replace("%", ""); + normalBerryChance.stringPosition = normalBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (poisonBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = poisonBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + poisonBerryChance.text = displayVal.ToString().Replace("%", ""); + poisonBerryChance.stringPosition = poisonBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (slowBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = slowBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + slowBerryChance.text = displayVal.ToString().Replace("%", ""); + slowBerryChance.stringPosition = slowBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (ultraBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = ultraBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + ultraBerryChance.text = displayVal.ToString().Replace("%", ""); + ultraBerryChance.stringPosition = ultraBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (speedyBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = speedyBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + speedyBerryChance.text = displayVal.ToString().Replace("%", ""); + speedyBerryChance.stringPosition = speedyBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (randomBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = randomBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + randomBerryChance.text = displayVal.ToString().Replace("%", ""); + randomBerryChance.stringPosition = randomBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (antiBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = antiBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + antiBerryChance.text = displayVal.ToString().Replace("%", ""); + antiBerryChance.stringPosition = antiBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + if (nothingBerry > 0) + { + float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; + float newVal = nothingBerry - adjust; + int displayVal; + if (remainingCount == 1) + displayVal = 100 - sumAssigned; + else + displayVal = (int)System.Math.Round(newVal); + nothingBerryChance.text = displayVal.ToString().Replace("%", ""); + nothingBerryChance.stringPosition = nothingBerryChance.text.Length; + remainingDifference -= adjust; + remainingCount--; + sumAssigned += displayVal; + } + + ValidateTotal(); }); customPlayButton.onClick.AddListener(async () => { From 546858b5761baf71f9da935c76e06e98aaa93c6b Mon Sep 17 00:00:00 2001 From: Thepuppetqueen57 Date: Mon, 6 Oct 2025 20:29:47 -0700 Subject: [PATCH 7/9] Made it work a bit better if the amount of berries that are above 0 is an odd amount then it doesnt work but this is the closest I have gotten to it working. --- Assets/Scripts/PlayMenu.cs | 99 +++----------------------------------- 1 file changed, 8 insertions(+), 91 deletions(-) diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index 76dfffe..a60036a 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -78,136 +78,53 @@ public class PlayMenu : MonoBehaviour float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + nothingBerry; float difference = addedChances - 100f; - float remainingDifference = difference; - int remainingCount = divideBy; - int sumAssigned = 0; if (normalBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = normalBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - normalBerryChance.text = displayVal.ToString().Replace("%", ""); + normalBerryChance.text = (normalBerry - (difference / divideBy)).ToString() + "%"; normalBerryChance.stringPosition = normalBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (poisonBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = poisonBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - poisonBerryChance.text = displayVal.ToString().Replace("%", ""); + poisonBerryChance.text = (poisonBerry - (difference / divideBy)).ToString() + "%"; poisonBerryChance.stringPosition = poisonBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (slowBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = slowBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - slowBerryChance.text = displayVal.ToString().Replace("%", ""); + slowBerryChance.text = (slowBerry - (difference / divideBy)).ToString() + "%"; slowBerryChance.stringPosition = slowBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (ultraBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = ultraBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - ultraBerryChance.text = displayVal.ToString().Replace("%", ""); + ultraBerryChance.text = (ultraBerry - (difference / divideBy)).ToString() + "%"; ultraBerryChance.stringPosition = ultraBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (speedyBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = speedyBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - speedyBerryChance.text = displayVal.ToString().Replace("%", ""); + speedyBerryChance.text = (speedyBerry - (difference / divideBy)).ToString() + "%"; speedyBerryChance.stringPosition = speedyBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (randomBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = randomBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - randomBerryChance.text = displayVal.ToString().Replace("%", ""); + randomBerryChance.text = (randomBerry - (difference / divideBy)).ToString() + "%"; randomBerryChance.stringPosition = randomBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (antiBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = antiBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - antiBerryChance.text = displayVal.ToString().Replace("%", ""); + antiBerryChance.text = (antiBerry - (difference / divideBy)).ToString() + "%"; antiBerryChance.stringPosition = antiBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } if (nothingBerry > 0) { - float adjust = remainingCount > 0 ? (remainingDifference / remainingCount) : 0f; - float newVal = nothingBerry - adjust; - int displayVal; - if (remainingCount == 1) - displayVal = 100 - sumAssigned; - else - displayVal = (int)System.Math.Round(newVal); - nothingBerryChance.text = displayVal.ToString().Replace("%", ""); + nothingBerryChance.text = (nothingBerry - (difference / divideBy)).ToString() + "%"; nothingBerryChance.stringPosition = nothingBerryChance.text.Length; - remainingDifference -= adjust; - remainingCount--; - sumAssigned += displayVal; } ValidateTotal(); From 5d9fbcbad7798bdd8cb336058cbd55cc7188822f Mon Sep 17 00:00:00 2001 From: Thepuppetqueen57 Date: Tue, 7 Oct 2025 12:08:13 -0700 Subject: [PATCH 8/9] Fixed normalization There are some issues but they are really rare so this is good enough for now. --- Assets/Scripts/PlayMenu.cs | 186 +++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index a60036a..39b8adc 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -1,3 +1,4 @@ +using System; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; @@ -127,6 +128,191 @@ public class PlayMenu : MonoBehaviour nothingBerryChance.stringPosition = nothingBerryChance.text.Length; } + normalBerry = GetValueFrom(normalBerryChance); + poisonBerry = GetValueFrom(poisonBerryChance); + slowBerry = GetValueFrom(slowBerryChance); + ultraBerry = GetValueFrom(ultraBerryChance); + speedyBerry = GetValueFrom(speedyBerryChance); + randomBerry = GetValueFrom(randomBerryChance); + antiBerry = GetValueFrom(antiBerryChance); + nothingBerry = GetValueFrom(nothingBerryChance); + + if (normalBerry > 0) + { + normalBerry = (float)Math.Floor(normalBerry); + } + + if (poisonBerry > 0) + { + poisonBerry = (float)Math.Floor(poisonBerry); + } + + if (slowBerry > 0) + { + slowBerry = (float)Math.Floor(slowBerry); + } + + if (ultraBerry > 0) + { + ultraBerry = (float)Math.Floor(ultraBerry); + } + + if (speedyBerry > 0) + { + speedyBerry = (float)Math.Floor(speedyBerry); + } + + if (randomBerry > 0) + { + randomBerry = (float)Math.Floor(randomBerry); + } + + if (antiBerry > 0) + { + antiBerry = (float)Math.Floor(antiBerry); + } + + if (nothingBerry > 0) + { + nothingBerry = (float)Math.Floor(nothingBerry); + } + + float addedChances2 = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + nothingBerry; + float difference2 = addedChances2 - 100f; + bool fixedValues = false; + + Debug.Log(difference2); + Debug.Log(normalBerry - difference2); + Debug.Log(poisonBerry - difference2); + + if (normalBerry > 0) + { + if (!fixedValues) + { + normalBerryChance.text = (normalBerry - difference2).ToString() + "%"; + normalBerryChance.stringPosition = normalBerryChance.text.Length; + fixedValues = true; + } + else + { + normalBerryChance.text = normalBerry.ToString() + "%"; + normalBerryChance.stringPosition = normalBerryChance.text.Length; + fixedValues = true; + } + } + + if (poisonBerry > 0) + { + if (!fixedValues) + { + poisonBerryChance.text = (poisonBerry - difference2).ToString() + "%"; + poisonBerryChance.stringPosition = poisonBerryChance.text.Length; + fixedValues = true; + } + else + { + poisonBerryChance.text = poisonBerry.ToString() + "%"; + poisonBerryChance.stringPosition = poisonBerryChance.text.Length; + fixedValues = true; + } + } + + if (slowBerry > 0) + { + if (!fixedValues) + { + slowBerryChance.text = (slowBerry - difference2).ToString() + "%"; + slowBerryChance.stringPosition = slowBerryChance.text.Length; + fixedValues = true; + } + else + { + slowBerryChance.text = slowBerry.ToString() + "%"; + slowBerryChance.stringPosition = slowBerryChance.text.Length; + fixedValues = true; + } + } + + if (ultraBerry > 0) + { + if (!fixedValues) + { + ultraBerryChance.text = (ultraBerry - difference2).ToString() + "%"; + ultraBerryChance.stringPosition = ultraBerryChance.text.Length; + fixedValues = true; + } + else + { + ultraBerryChance.text = ultraBerry.ToString() + "%"; + ultraBerryChance.stringPosition = ultraBerryChance.text.Length; + fixedValues = true; + } + } + + if (speedyBerry > 0) + { + if (!fixedValues) + { + speedyBerryChance.text = (speedyBerry - difference2).ToString() + "%"; + speedyBerryChance.stringPosition = speedyBerryChance.text.Length; + fixedValues = true; + } + else + { + speedyBerryChance.text = speedyBerry.ToString() + "%"; + speedyBerryChance.stringPosition = speedyBerryChance.text.Length; + fixedValues = true; + } + } + + if (randomBerry > 0) + { + if (!fixedValues) + { + randomBerryChance.text = (randomBerry - difference2).ToString() + "%"; + randomBerryChance.stringPosition = randomBerryChance.text.Length; + fixedValues = true; + } + else + { + randomBerryChance.text = randomBerry.ToString() + "%"; + randomBerryChance.stringPosition = randomBerryChance.text.Length; + fixedValues = true; + } + } + + if (antiBerry > 0) + { + if (!fixedValues) + { + antiBerryChance.text = (antiBerry - difference2).ToString() + "%"; + antiBerryChance.stringPosition = antiBerryChance.text.Length; + fixedValues = true; + } + else + { + antiBerryChance.text = antiBerry.ToString() + "%"; + antiBerryChance.stringPosition = antiBerryChance.text.Length; + fixedValues = true; + } + } + + if (nothingBerry > 0) + { + if (!fixedValues) + { + nothingBerryChance.text = (nothingBerry - difference2).ToString() + "%"; + nothingBerryChance.stringPosition = nothingBerryChance.text.Length; + fixedValues = true; + } + else + { + nothingBerryChance.text = nothingBerry.ToString() + "%"; + nothingBerryChance.stringPosition = nothingBerryChance.text.Length; + fixedValues = true; + } + } + ValidateTotal(); }); customPlayButton.onClick.AddListener(async () => From 65c065b37567e91a7e1bdca6170a84a5c2fd9c7b Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Tue, 7 Oct 2025 12:51:48 -0700 Subject: [PATCH 9/9] Improve code --- Assets/Scripts/PlayMenu.cs | 245 ++++++++----------------------------- 1 file changed, 52 insertions(+), 193 deletions(-) diff --git a/Assets/Scripts/PlayMenu.cs b/Assets/Scripts/PlayMenu.cs index 39b8adc..8d42521 100644 --- a/Assets/Scripts/PlayMenu.cs +++ b/Assets/Scripts/PlayMenu.cs @@ -80,53 +80,14 @@ public class PlayMenu : MonoBehaviour float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + nothingBerry; float difference = addedChances - 100f; - if (normalBerry > 0) - { - normalBerryChance.text = (normalBerry - (difference / divideBy)).ToString() + "%"; - normalBerryChance.stringPosition = normalBerryChance.text.Length; - } - - if (poisonBerry > 0) - { - poisonBerryChance.text = (poisonBerry - (difference / divideBy)).ToString() + "%"; - poisonBerryChance.stringPosition = poisonBerryChance.text.Length; - } - - if (slowBerry > 0) - { - slowBerryChance.text = (slowBerry - (difference / divideBy)).ToString() + "%"; - slowBerryChance.stringPosition = slowBerryChance.text.Length; - } - - if (ultraBerry > 0) - { - ultraBerryChance.text = (ultraBerry - (difference / divideBy)).ToString() + "%"; - ultraBerryChance.stringPosition = ultraBerryChance.text.Length; - } - - if (speedyBerry > 0) - { - speedyBerryChance.text = (speedyBerry - (difference / divideBy)).ToString() + "%"; - speedyBerryChance.stringPosition = speedyBerryChance.text.Length; - } - - if (randomBerry > 0) - { - randomBerryChance.text = (randomBerry - (difference / divideBy)).ToString() + "%"; - randomBerryChance.stringPosition = randomBerryChance.text.Length; - } - - if (antiBerry > 0) - { - antiBerryChance.text = (antiBerry - (difference / divideBy)).ToString() + "%"; - antiBerryChance.stringPosition = antiBerryChance.text.Length; - } - - if (nothingBerry > 0) - { - nothingBerryChance.text = (nothingBerry - (difference / divideBy)).ToString() + "%"; - nothingBerryChance.stringPosition = nothingBerryChance.text.Length; - } + if (normalBerry > 0) NormalizeOne(normalBerryChance, normalBerry, divideBy, difference); + if (poisonBerry > 0) NormalizeOne(poisonBerryChance, poisonBerry, divideBy, difference); + if (slowBerry > 0) NormalizeOne(slowBerryChance, slowBerry, divideBy, difference); + if (ultraBerry > 0) NormalizeOne(ultraBerryChance, ultraBerry, divideBy, difference); + if (speedyBerry > 0) NormalizeOne(speedyBerryChance, speedyBerry, divideBy, difference); + if (randomBerry > 0) NormalizeOne(randomBerryChance, randomBerry, divideBy, difference); + if (antiBerry > 0) NormalizeOne(antiBerryChance, antiBerry, divideBy, difference); + if (nothingBerry > 0) NormalizeOne(nothingBerryChance, nothingBerry, divideBy, difference); normalBerry = GetValueFrom(normalBerryChance); poisonBerry = GetValueFrom(poisonBerryChance); @@ -137,180 +98,58 @@ public class PlayMenu : MonoBehaviour antiBerry = GetValueFrom(antiBerryChance); nothingBerry = GetValueFrom(nothingBerryChance); - if (normalBerry > 0) - { - normalBerry = (float)Math.Floor(normalBerry); - } - - if (poisonBerry > 0) - { - poisonBerry = (float)Math.Floor(poisonBerry); - } - - if (slowBerry > 0) - { - slowBerry = (float)Math.Floor(slowBerry); - } - - if (ultraBerry > 0) - { - ultraBerry = (float)Math.Floor(ultraBerry); - } - - if (speedyBerry > 0) - { - speedyBerry = (float)Math.Floor(speedyBerry); - } - - if (randomBerry > 0) - { - randomBerry = (float)Math.Floor(randomBerry); - } - - if (antiBerry > 0) - { - antiBerry = (float)Math.Floor(antiBerry); - } - - if (nothingBerry > 0) - { - nothingBerry = (float)Math.Floor(nothingBerry); - } + if (normalBerry > 0) normalBerry = (float)Math.Floor(normalBerry); + if (poisonBerry > 0) poisonBerry = (float)Math.Floor(poisonBerry); + if (slowBerry > 0) slowBerry = (float)Math.Floor(slowBerry); + if (ultraBerry > 0) ultraBerry = (float)Math.Floor(ultraBerry); + if (speedyBerry > 0) speedyBerry = (float)Math.Floor(speedyBerry); + if (randomBerry > 0) randomBerry = (float)Math.Floor(randomBerry); + if (antiBerry > 0) antiBerry = (float)Math.Floor(antiBerry); + if (nothingBerry > 0) nothingBerry = (float)Math.Floor(nothingBerry); float addedChances2 = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + nothingBerry; float difference2 = addedChances2 - 100f; bool fixedValues = false; - Debug.Log(difference2); - Debug.Log(normalBerry - difference2); - Debug.Log(poisonBerry - difference2); - if (normalBerry > 0) { - if (!fixedValues) - { - normalBerryChance.text = (normalBerry - difference2).ToString() + "%"; - normalBerryChance.stringPosition = normalBerryChance.text.Length; - fixedValues = true; - } - else - { - normalBerryChance.text = normalBerry.ToString() + "%"; - normalBerryChance.stringPosition = normalBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(normalBerryChance, fixedValues, normalBerry, difference2); + fixedValues = true; } - if (poisonBerry > 0) { - if (!fixedValues) - { - poisonBerryChance.text = (poisonBerry - difference2).ToString() + "%"; - poisonBerryChance.stringPosition = poisonBerryChance.text.Length; - fixedValues = true; - } - else - { - poisonBerryChance.text = poisonBerry.ToString() + "%"; - poisonBerryChance.stringPosition = poisonBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(poisonBerryChance, fixedValues, poisonBerry, difference2); + fixedValues = true; } - if (slowBerry > 0) { - if (!fixedValues) - { - slowBerryChance.text = (slowBerry - difference2).ToString() + "%"; - slowBerryChance.stringPosition = slowBerryChance.text.Length; - fixedValues = true; - } - else - { - slowBerryChance.text = slowBerry.ToString() + "%"; - slowBerryChance.stringPosition = slowBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(slowBerryChance, fixedValues, slowBerry, difference2); + fixedValues = true; } - if (ultraBerry > 0) { - if (!fixedValues) - { - ultraBerryChance.text = (ultraBerry - difference2).ToString() + "%"; - ultraBerryChance.stringPosition = ultraBerryChance.text.Length; - fixedValues = true; - } - else - { - ultraBerryChance.text = ultraBerry.ToString() + "%"; - ultraBerryChance.stringPosition = ultraBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(ultraBerryChance, fixedValues, ultraBerry, difference2); + fixedValues = true; } - if (speedyBerry > 0) { - if (!fixedValues) - { - speedyBerryChance.text = (speedyBerry - difference2).ToString() + "%"; - speedyBerryChance.stringPosition = speedyBerryChance.text.Length; - fixedValues = true; - } - else - { - speedyBerryChance.text = speedyBerry.ToString() + "%"; - speedyBerryChance.stringPosition = speedyBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(speedyBerryChance, fixedValues, speedyBerry, difference2); + fixedValues = true; } - if (randomBerry > 0) { - if (!fixedValues) - { - randomBerryChance.text = (randomBerry - difference2).ToString() + "%"; - randomBerryChance.stringPosition = randomBerryChance.text.Length; - fixedValues = true; - } - else - { - randomBerryChance.text = randomBerry.ToString() + "%"; - randomBerryChance.stringPosition = randomBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(randomBerryChance, fixedValues, randomBerry, difference2); + fixedValues = true; } - if (antiBerry > 0) { - if (!fixedValues) - { - antiBerryChance.text = (antiBerry - difference2).ToString() + "%"; - antiBerryChance.stringPosition = antiBerryChance.text.Length; - fixedValues = true; - } - else - { - antiBerryChance.text = antiBerry.ToString() + "%"; - antiBerryChance.stringPosition = antiBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(antiBerryChance, fixedValues, antiBerry, difference2); + fixedValues = true; } - if (nothingBerry > 0) { - if (!fixedValues) - { - nothingBerryChance.text = (nothingBerry - difference2).ToString() + "%"; - nothingBerryChance.stringPosition = nothingBerryChance.text.Length; - fixedValues = true; - } - else - { - nothingBerryChance.text = nothingBerry.ToString() + "%"; - nothingBerryChance.stringPosition = nothingBerryChance.text.Length; - fixedValues = true; - } + NormalizeTwo(nothingBerryChance, fixedValues, nothingBerry, difference2); + fixedValues = true; } ValidateTotal(); @@ -413,4 +252,24 @@ public class PlayMenu : MonoBehaviour inputField.text = value + "%"; ValidateTotal(); } + + void NormalizeOne(TMP_InputField inputField, float berryChance, int divideBy, float difference) + { + inputField.text = (berryChance - (difference / divideBy)).ToString() + "%"; + inputField.stringPosition = inputField.text.Length; + } + + void NormalizeTwo(TMP_InputField inputField, bool fixedValues, float berryChance, float difference2) + { + if (!fixedValues) + { + inputField.text = (berryChance - difference2).ToString() + "%"; + inputField.stringPosition = inputField.text.Length; + } + else + { + inputField.text = berryChance.ToString() + "%"; + inputField.stringPosition = inputField.text.Length; + } + } } \ No newline at end of file