Finished upgrade menu

This commit is contained in:
Pasha Bibko
2026-05-05 11:37:07 +01:00
parent 066b3bc958
commit 528ed9f413
3 changed files with 419 additions and 1 deletions

View File

@@ -905,6 +905,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 153563567} m_GameObject: {fileID: 153563567}
m_CullTransparentMesh: 1 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 --- !u!1 &201229658
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -1596,6 +1675,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 242722018} m_GameObject: {fileID: 242722018}
m_CullTransparentMesh: 1 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 --- !u!1 &262706393
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2328,6 +2486,9 @@ RectTransform:
- {fileID: 644691423} - {fileID: 644691423}
- {fileID: 625278903} - {fileID: 625278903}
- {fileID: 1436452374} - {fileID: 1436452374}
- {fileID: 2069738521}
- {fileID: 171560551}
- {fileID: 340974885}
m_Father: {fileID: 1551399098} m_Father: {fileID: 1551399098}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
@@ -2373,6 +2534,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 340945370} m_GameObject: {fileID: 340945370}
m_CullTransparentMesh: 1 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 --- !u!1 &391812062
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -11156,6 +11396,9 @@ MonoBehaviour:
BuildingDisplay: {fileID: 803586394} BuildingDisplay: {fileID: 803586394}
LeftArrow: {fileID: 644691422} LeftArrow: {fileID: 644691422}
SpawnerText: {fileID: 1436452373} SpawnerText: {fileID: 1436452373}
UnlockButton: {fileID: 2069738522}
UnlockedText: {fileID: 171560550}
PoorPeopleText: {fileID: 340974884}
--- !u!1 &1721077920 --- !u!1 &1721077920
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -13043,6 +13286,128 @@ MonoBehaviour:
m_Spacing: {x: 0, y: 25} m_Spacing: {x: 0, y: 25}
m_Constraint: 0 m_Constraint: 0
m_ConstraintCount: 2 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 --- !u!1 &2069879632
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -1,6 +1,7 @@
using PashaBibko.Pacore.Attributes; using PashaBibko.Pacore.Attributes;
using Fruitomation.Game; using Fruitomation.Game;
using UnityEngine; using UnityEngine;
using UnityEngine.Rendering;
namespace Fruitomation.Global namespace Fruitomation.Global
{ {
@@ -17,6 +18,12 @@ namespace Fruitomation.Global
Instance.InternalCurrentMoney += amount; Instance.InternalCurrentMoney += amount;
} }
public static bool CouldBuy(double amount)
{
double val = Instance.InternalCurrentMoney - amount;
return val > 0f;
}
public static bool CanBuy(double amount) public static bool CanBuy(double amount)
{ {
double val = Instance.InternalCurrentMoney - amount; double val = Instance.InternalCurrentMoney - amount;

View File

@@ -1,6 +1,8 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using Fruitomation.Game.Items; using Fruitomation.Game.Items;
using Fruitomation.Game; using Fruitomation.Game;
using Fruitomation.Global;
using UnityEngine.UI; using UnityEngine.UI;
using UnityEngine; using UnityEngine;
@@ -16,10 +18,16 @@ namespace Fruitomation.UI
[SerializeField] private GameObject BuildingDisplay; [SerializeField] private GameObject BuildingDisplay;
[SerializeField] private GameObject LeftArrow; [SerializeField] private GameObject LeftArrow;
[SerializeField] private GameObject SpawnerText; [SerializeField] private GameObject SpawnerText;
[SerializeField] private Button UnlockButton;
[SerializeField] private GameObject UnlockedText;
[SerializeField] private GameObject PoorPeopleText;
private readonly Dictionary<AutomationBuildingType, GameObject> BuildingRegistry = new(); private readonly Dictionary<AutomationBuildingType, GameObject> BuildingRegistry = new();
private readonly List<GameObject> ChildrenToKill = new(); private readonly List<GameObject> ChildrenToKill = new();
private BasicUpgrade CurrentUpgrade;
private double CurrentCost;
private void Start() private void Start()
{ {
BoardGO.SetActive(false); BoardGO.SetActive(false);
@@ -35,6 +43,12 @@ namespace Fruitomation.UI
BuildingRegistry.Add(info.Type, info.Prefab); BuildingRegistry.Add(info.Type, info.Prefab);
} }
} }
UnlockButton.onClick.AddListener(() =>
{
MoneyController.CanBuy(CurrentCost);
UpgradeManager.Unlock(CurrentUpgrade);
});
} }
public void Enable public void Enable
@@ -47,7 +61,11 @@ namespace Fruitomation.UI
) )
// Wow, those function params are horrible // Wow, those function params are horrible
{ {
CurrentUpgrade = upgrade;
CurrentCost = cost;
BoardGO.SetActive(true); BoardGO.SetActive(true);
foreach (ItemType input in inputs) foreach (ItemType input in inputs)
{ {
ItemInfo info = ItemInfoRegistry.Get(input); 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() private void Disable()
{ {
BoardGO.SetActive(false); BoardGO.SetActive(false);