diff --git a/Assets/Scenes/UpgradesScene.unity b/Assets/Scenes/UpgradesScene.unity index d16dadc..e214787 100644 --- a/Assets/Scenes/UpgradesScene.unity +++ b/Assets/Scenes/UpgradesScene.unity @@ -905,6 +905,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 153563567} m_CullTransparentMesh: 1 +--- !u!1 &171560550 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 171560551} + - component: {fileID: 171560553} + - component: {fileID: 171560552} + m_Layer: 5 + m_Name: UnlockedText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &171560551 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171560550} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.19999997, y: 0.19999997, z: 0.19999997} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 340945371} + 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: -300} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &171560552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171560550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Text + m_Material: {fileID: 0} + m_Color: {r: 0.96862745, g: 0.94509804, b: 0.8862745, 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_FontData: + m_Font: {fileID: 12800000, guid: 32565b2e72182494c8e58dae1ee512b0, type: 3} + m_FontSize: 250 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 250 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Unlocked +--- !u!222 &171560553 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171560550} + m_CullTransparentMesh: 1 --- !u!1 &201229658 GameObject: m_ObjectHideFlags: 0 @@ -1596,6 +1675,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 242722018} m_CullTransparentMesh: 1 +--- !u!1 &243760150 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 243760151} + - component: {fileID: 243760153} + - component: {fileID: 243760152} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &243760151 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 243760150} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 2069738521} + 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 &243760152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 243760150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Text + m_Material: {fileID: 0} + m_Color: {r: 0.96862745, g: 0.94509804, b: 0.8862745, 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_FontData: + m_Font: {fileID: 12800000, guid: 32565b2e72182494c8e58dae1ee512b0, type: 3} + m_FontSize: 250 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 250 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Unlock +--- !u!222 &243760153 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 243760150} + m_CullTransparentMesh: 1 --- !u!1 &262706393 GameObject: m_ObjectHideFlags: 0 @@ -2328,6 +2486,9 @@ RectTransform: - {fileID: 644691423} - {fileID: 625278903} - {fileID: 1436452374} + - {fileID: 2069738521} + - {fileID: 171560551} + - {fileID: 340974885} m_Father: {fileID: 1551399098} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -2373,6 +2534,85 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 340945370} m_CullTransparentMesh: 1 +--- !u!1 &340974884 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 340974885} + - component: {fileID: 340974887} + - component: {fileID: 340974886} + m_Layer: 5 + m_Name: PoorPeopleText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &340974885 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340974884} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.19999997, y: 0.19999997, z: 0.19999997} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 340945371} + 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: -300} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &340974886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340974884} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Text + m_Material: {fileID: 0} + m_Color: {r: 0.96862745, g: 0.94509804, b: 0.8862745, 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_FontData: + m_Font: {fileID: 12800000, guid: 32565b2e72182494c8e58dae1ee512b0, type: 3} + m_FontSize: 250 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 250 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Not enough money +--- !u!222 &340974887 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 340974884} + m_CullTransparentMesh: 1 --- !u!1 &391812062 GameObject: m_ObjectHideFlags: 0 @@ -11156,6 +11396,9 @@ MonoBehaviour: BuildingDisplay: {fileID: 803586394} LeftArrow: {fileID: 644691422} SpawnerText: {fileID: 1436452373} + UnlockButton: {fileID: 2069738522} + UnlockedText: {fileID: 171560550} + PoorPeopleText: {fileID: 340974884} --- !u!1 &1721077920 GameObject: m_ObjectHideFlags: 0 @@ -13043,6 +13286,128 @@ MonoBehaviour: m_Spacing: {x: 0, y: 25} m_Constraint: 0 m_ConstraintCount: 2 +--- !u!1 &2069738520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2069738521} + - component: {fileID: 2069738524} + - component: {fileID: 2069738523} + - component: {fileID: 2069738522} + m_Layer: 5 + m_Name: UnlockButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2069738521 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2069738520} + 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: 243760151} + m_Father: {fileID: 340945371} + 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: -300} + m_SizeDelta: {x: 400, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2069738522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2069738520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + 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: 2 + 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: 21300000, guid: 451e6df5541d3f4498972852b96985a0, + type: 3} + m_PressedSprite: {fileID: 21300000, guid: 451e6df5541d3f4498972852b96985a0, type: 3} + m_SelectedSprite: {fileID: 21300000, guid: fd64923844b14084ead7988cb85f3f18, type: 3} + m_DisabledSprite: {fileID: 21300000, guid: fd64923844b14084ead7988cb85f3f18, type: 3} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2069738523} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &2069738523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2069738520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + 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: 21300000, guid: fd64923844b14084ead7988cb85f3f18, type: 3} + 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: 3 +--- !u!222 &2069738524 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2069738520} + m_CullTransparentMesh: 1 --- !u!1 &2069879632 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Global/MoneyController.cs b/Assets/Scripts/Global/MoneyController.cs index 6754737..1688267 100644 --- a/Assets/Scripts/Global/MoneyController.cs +++ b/Assets/Scripts/Global/MoneyController.cs @@ -1,6 +1,7 @@ using PashaBibko.Pacore.Attributes; using Fruitomation.Game; using UnityEngine; +using UnityEngine.Rendering; namespace Fruitomation.Global { @@ -17,6 +18,12 @@ namespace Fruitomation.Global Instance.InternalCurrentMoney += amount; } + public static bool CouldBuy(double amount) + { + double val = Instance.InternalCurrentMoney - amount; + return val > 0f; + } + public static bool CanBuy(double amount) { double val = Instance.InternalCurrentMoney - amount; diff --git a/Assets/Scripts/UI/UpgradeInfoBoard.cs b/Assets/Scripts/UI/UpgradeInfoBoard.cs index 667971b..7e92320 100644 --- a/Assets/Scripts/UI/UpgradeInfoBoard.cs +++ b/Assets/Scripts/UI/UpgradeInfoBoard.cs @@ -1,6 +1,8 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Fruitomation.Game.Items; using Fruitomation.Game; +using Fruitomation.Global; using UnityEngine.UI; using UnityEngine; @@ -16,9 +18,15 @@ namespace Fruitomation.UI [SerializeField] private GameObject BuildingDisplay; [SerializeField] private GameObject LeftArrow; [SerializeField] private GameObject SpawnerText; + [SerializeField] private Button UnlockButton; + [SerializeField] private GameObject UnlockedText; + [SerializeField] private GameObject PoorPeopleText; private readonly Dictionary BuildingRegistry = new(); private readonly List ChildrenToKill = new(); + + private BasicUpgrade CurrentUpgrade; + private double CurrentCost; private void Start() { @@ -35,6 +43,12 @@ namespace Fruitomation.UI BuildingRegistry.Add(info.Type, info.Prefab); } } + + UnlockButton.onClick.AddListener(() => + { + MoneyController.CanBuy(CurrentCost); + UpgradeManager.Unlock(CurrentUpgrade); + }); } public void Enable @@ -47,7 +61,11 @@ namespace Fruitomation.UI ) // Wow, those function params are horrible { + CurrentUpgrade = upgrade; + CurrentCost = cost; + BoardGO.SetActive(true); + foreach (ItemType input in inputs) { ItemInfo info = ItemInfoRegistry.Get(input); @@ -92,6 +110,34 @@ namespace Fruitomation.UI } } + private void Update() + { + if (UpgradeManager.Is(CurrentUpgrade)) + { + UnlockedText.SetActive(true); + + UnlockButton.gameObject.SetActive(false); + PoorPeopleText.SetActive(false); + } + + else + { + UnlockedText.SetActive(false); + + if (MoneyController.CouldBuy(CurrentCost)) + { + UnlockButton.gameObject.SetActive(true); + PoorPeopleText.SetActive(false); + } + + else + { + UnlockButton.gameObject.SetActive(false); + PoorPeopleText.SetActive(true); + } + } + } + private void Disable() { BoardGO.SetActive(false);