From 5b9766de50f5de6c041aac07c92ea6dbe407ab89 Mon Sep 17 00:00:00 2001 From: 4-Bit-Player Date: Tue, 20 Aug 2024 12:58:10 +0200 Subject: [PATCH] Added the basic purchase multiplier for houses and to un/assign workers. --- Assets/Scenes/Main.unity | 316 ++++++++++++++++++++ Assets/Scripts/AssignableWorker.cs | 22 +- Assets/Scripts/HouseManager.cs | 31 +- Assets/Scripts/TogglePurchaseAmount.cs | 71 +++++ Assets/Scripts/TogglePurchaseAmount.cs.meta | 2 + 5 files changed, 422 insertions(+), 20 deletions(-) create mode 100644 Assets/Scripts/TogglePurchaseAmount.cs create mode 100644 Assets/Scripts/TogglePurchaseAmount.cs.meta diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index e126dcf..2cdebae 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -4413,6 +4413,51 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0709c07fd41dfb544911adc6d80c707c, type: 3} +--- !u!1 &1171526039 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1171526041} + - component: {fileID: 1171526040} + m_Layer: 0 + m_Name: PurchaseMultiplier + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1171526040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171526039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9980f1709cbec1e4db2c3690a04cfe4b, type: 3} + m_Name: + m_EditorClassIdentifier: + purchaseAmount: 1 +--- !u!4 &1171526041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171526039} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1794.6354, y: 469.93106, z: -4.03125} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1175890339 GameObject: m_ObjectHideFlags: 0 @@ -6490,6 +6535,7 @@ RectTransform: - {fileID: 390187740} - {fileID: 1966773339} - {fileID: 384713551} + - {fileID: 2093698915} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -8131,6 +8177,142 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2025257284} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2044854434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2044854435} + - component: {fileID: 2044854437} + - component: {fileID: 2044854436} + m_Layer: 5 + m_Name: PurchaseAmountText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2044854435 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044854434} + 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: 2093698915} + 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 &2044854436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044854434} + 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: Toggle Purchase Amount + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 24 + m_fontSizeBase: 24 + 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 &2044854437 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2044854434} + m_CullTransparentMesh: 1 --- !u!1001 &2082680334 PrefabInstance: m_ObjectHideFlags: 0 @@ -8343,6 +8525,139 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2091956029} m_CullTransparentMesh: 1 +--- !u!1 &2093698914 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2093698915} + - component: {fileID: 2093698919} + - component: {fileID: 2093698918} + - component: {fileID: 2093698917} + m_Layer: 5 + m_Name: TogglePurchaseBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2093698915 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093698914} + 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: 2044854435} + m_Father: {fileID: 1808788429} + 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: 841, y: -103} + m_SizeDelta: {x: 215, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2093698917 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093698914} + 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: 2093698918} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1171526040} + m_TargetAssemblyTypeName: TogglePurchaseAmount, Assembly-CSharp + m_MethodName: OnClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &2093698918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093698914} + 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 &2093698919 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2093698914} + m_CullTransparentMesh: 1 --- !u!1001 &717283145652666488 PrefabInstance: m_ObjectHideFlags: 0 @@ -8732,3 +9047,4 @@ SceneRoots: - {fileID: 179318997} - {fileID: 1808788429} - {fileID: 462504852} + - {fileID: 1171526041} diff --git a/Assets/Scripts/AssignableWorker.cs b/Assets/Scripts/AssignableWorker.cs index 8710c9a..06bd85d 100644 --- a/Assets/Scripts/AssignableWorker.cs +++ b/Assets/Scripts/AssignableWorker.cs @@ -5,11 +5,14 @@ using UnityEngine; public class AssignableWorker : MonoBehaviour { private int workersAssigned = 0; - + private TogglePurchaseAmount purchaseAmount; private GameManager gameManager; + private int workerAmount = 0; + // Start is called before the first frame update void Start() { + purchaseAmount = GameObject.Find("PurchaseMultiplier").GetComponent(); gameManager = GameObject.Find("GameManager").GetComponent(); } @@ -20,18 +23,23 @@ public class AssignableWorker : MonoBehaviour public void AddWorker() { - if(gameManager.GetResourceCount(Resource.WORKER) > 0) + workerAmount = purchaseAmount.GetPurchaseAmount(); + + if(gameManager.GetResourceCount(Resource.WORKER) >= workerAmount) { - workersAssigned++; - gameManager.RemoveResource(Resource.WORKER, 1); + workersAssigned += workerAmount; + gameManager.RemoveResource(Resource.WORKER, workerAmount); } + + } public bool RemoveWorker() { - if (workersAssigned == 0) return false; - workersAssigned--; - gameManager.AddResource(Resource.WORKER, 1); + workerAmount = purchaseAmount.GetPurchaseAmount(); + if (workersAssigned < workerAmount) return false; + workersAssigned -= workerAmount; + gameManager.AddResource(Resource.WORKER, workerAmount); return true; } } diff --git a/Assets/Scripts/HouseManager.cs b/Assets/Scripts/HouseManager.cs index a84d6fb..3f486ee 100644 --- a/Assets/Scripts/HouseManager.cs +++ b/Assets/Scripts/HouseManager.cs @@ -9,28 +9,33 @@ public class HouseManager : MonoBehaviour private float ttnw = 30; //Time to next worker private float currentTtnw = 0; private int workerPerHouse = 3; + private int purchaseMultiplier; + private TogglePurchaseAmount purchaseAmount; private GameManager gameManager; [SerializeField] private GameObject mouseNotificationLabel; //House cost: Brick Tile Plank - public int[] cost = new int[3] { 10, 5, 2 }; + // public int[] cost = new int[3] { 10, 5, 2 }; + public int[] cost = new int[3] { 2, 1, 1 }; [SerializeField] private Transform notificationOrigin; - [SerializeField] + [SerializeField] private TMP_Text houseReqLabel; // Start is called before the first frame update void Start() { + purchaseAmount = GameObject.Find("PurchaseMultiplier").GetComponent(); gameManager = GameObject.Find("GameManager").GetComponent(); } // Update is called once per frame void Update() { - houseReqLabel.text = $"{gameManager.GetResourceCount(Resource.BRICK)}/{cost[0]} Bricks\n" + - $"{gameManager.GetResourceCount(Resource.TILE)}/{cost[1]} Tiles\n" + - $"{gameManager.GetResourceCount(Resource.PLANKS)}/{cost[2]} Planks\n"; - if (currentTtnw > 0) + purchaseMultiplier = purchaseAmount.GetPurchaseAmount(); + houseReqLabel.text = $"{gameManager.GetResourceCount(Resource.BRICK)}/{cost[0] * purchaseMultiplier} Bricks\n" + + $"{gameManager.GetResourceCount(Resource.TILE)}/{cost[1] * purchaseMultiplier} Tiles\n" + + $"{gameManager.GetResourceCount(Resource.PLANKS)}/{cost[2] * purchaseMultiplier} Planks\n"; + if (currentTtnw > 0) { currentTtnw -= Time.deltaTime; } else @@ -53,9 +58,9 @@ public class HouseManager : MonoBehaviour public void BuildHouse() { - if (gameManager.GetResourceCount(Resource.BRICK) < cost[0] || - gameManager.GetResourceCount(Resource.TILE) < cost[1] || - gameManager.GetResourceCount(Resource.PLANKS) < cost[2]) + if (gameManager.GetResourceCount(Resource.BRICK) < cost[0] * purchaseMultiplier || + gameManager.GetResourceCount(Resource.TILE) < cost[1] * purchaseMultiplier || + gameManager.GetResourceCount(Resource.PLANKS) < cost[2] * purchaseMultiplier) { Debug.Log("Not enough resources to build house!"); GameObject infoLabel = Instantiate(mouseNotificationLabel, GameObject.Find("Canvas").transform); @@ -64,9 +69,9 @@ public class HouseManager : MonoBehaviour return; } - gameManager.RemoveResource(Resource.BRICK, cost[0]); - gameManager.RemoveResource(Resource.TILE, cost[1]); - gameManager.RemoveResource(Resource.PLANKS, cost[2]); - gameManager.AddResource(Resource.HOUSE, 1); + gameManager.RemoveResource(Resource.BRICK, cost[0] * purchaseMultiplier); + gameManager.RemoveResource(Resource.TILE, cost[1] * purchaseMultiplier); + gameManager.RemoveResource(Resource.PLANKS, cost[2] * purchaseMultiplier); + gameManager.AddResource(Resource.HOUSE, 1 * purchaseMultiplier); } } diff --git a/Assets/Scripts/TogglePurchaseAmount.cs b/Assets/Scripts/TogglePurchaseAmount.cs new file mode 100644 index 0000000..005372a --- /dev/null +++ b/Assets/Scripts/TogglePurchaseAmount.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Net.Mime; +using UnityEngine; +using UnityEngine.UIElements; +using TMPro; +using Unity.VisualScripting; + +public class TogglePurchaseAmount : MonoBehaviour +{ + private int[] options= {1, 10, 100}; + private int selected = 0; + public int purchaseAmount = 1; + TMP_Text displayThing; + + + // Start is called before the first frame update + void Start() + { + displayThing = GameObject.Find("PurchaseAmountText").GetComponent(); + UpdateDisplayAmount(); + } + + // Update is called once per frame + void Update() + { + + } + + public void OnClick() + { + selected = (selected + 1) % options.Length; + purchaseAmount = options[selected]; + UpdateDisplayAmount(); + Debug.Log(purchaseAmount); + } + + private void UpdateDisplayAmount() + { + displayThing.text = "Toggle Purchase Amount x " + purchaseAmount.ToString(); + } + + public int GetPurchaseAmount() + { + return purchaseAmount; + } + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/Assets/Scripts/TogglePurchaseAmount.cs.meta b/Assets/Scripts/TogglePurchaseAmount.cs.meta new file mode 100644 index 0000000..f25fccc --- /dev/null +++ b/Assets/Scripts/TogglePurchaseAmount.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9980f1709cbec1e4db2c3690a04cfe4b \ No newline at end of file