From 795d6751ec4c0795b4b3cb373592caf18f7bfa52 Mon Sep 17 00:00:00 2001 From: Felix Boucher Date: Fri, 19 Jan 2024 14:51:30 -0500 Subject: [PATCH] refactor placement buttons to accomodate delete --- Assets/Scenes/Game.unity | 13 +++++ Assets/Scripts/CardInfo.cs | 5 ++ Assets/Scripts/CardInfo.cs.meta | 11 ++++ Assets/Scripts/DeleteButton.cs | 12 +++++ Assets/Scripts/DeleteButton.cs.meta | 11 ++++ .../Drag&Drop/GameObjectPlacementButton.cs | 4 +- Assets/Scripts/Drag&Drop/PlacementButton.cs | 53 +++++++++++++++++++ .../Scripts/Drag&Drop/PlacementButton.cs.meta | 11 ++++ .../Scripts/Drag&Drop/TilePlacementButton.cs | 4 +- .../Scripts/Drag&Drop/UnitPlacementButton.cs | 49 ++++------------- 10 files changed, 129 insertions(+), 44 deletions(-) create mode 100644 Assets/Scripts/CardInfo.cs create mode 100644 Assets/Scripts/CardInfo.cs.meta create mode 100644 Assets/Scripts/DeleteButton.cs create mode 100644 Assets/Scripts/DeleteButton.cs.meta create mode 100644 Assets/Scripts/Drag&Drop/PlacementButton.cs create mode 100644 Assets/Scripts/Drag&Drop/PlacementButton.cs.meta diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index 2f13fcf..6d445ee 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -708,6 +708,7 @@ GameObject: - component: {fileID: 179679301} - component: {fileID: 179679300} - component: {fileID: 179679299} + - component: {fileID: 179679302} m_Layer: 5 m_Name: Remove m_TagString: Untagged @@ -817,6 +818,18 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 179679297} m_CullTransparentMesh: 1 +--- !u!114 &179679302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 179679297} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bd64ba32c0dc69d40a067bbeb7f1b8f0, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!114 &180485348 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 217791848456698108, guid: 5497dc5adfbe67341980c9d946816424, type: 3} diff --git a/Assets/Scripts/CardInfo.cs b/Assets/Scripts/CardInfo.cs new file mode 100644 index 0000000..a3740bb --- /dev/null +++ b/Assets/Scripts/CardInfo.cs @@ -0,0 +1,5 @@ +using UnityEngine; + +public class CardInfo : ScriptableObject +{ +} \ No newline at end of file diff --git a/Assets/Scripts/CardInfo.cs.meta b/Assets/Scripts/CardInfo.cs.meta new file mode 100644 index 0000000..a8f57f4 --- /dev/null +++ b/Assets/Scripts/CardInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a23104b82dc1384aa1f7fa6f263a41c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DeleteButton.cs b/Assets/Scripts/DeleteButton.cs new file mode 100644 index 0000000..77a5a11 --- /dev/null +++ b/Assets/Scripts/DeleteButton.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +public class DeleteButton : PlacementButton +{ + protected override DraggablePlaceholder Place() + { + throw new System.NotImplementedException(); + } +} diff --git a/Assets/Scripts/DeleteButton.cs.meta b/Assets/Scripts/DeleteButton.cs.meta new file mode 100644 index 0000000..c59de7e --- /dev/null +++ b/Assets/Scripts/DeleteButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd64ba32c0dc69d40a067bbeb7f1b8f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Drag&Drop/GameObjectPlacementButton.cs b/Assets/Scripts/Drag&Drop/GameObjectPlacementButton.cs index 356cb40..375f28f 100644 --- a/Assets/Scripts/Drag&Drop/GameObjectPlacementButton.cs +++ b/Assets/Scripts/Drag&Drop/GameObjectPlacementButton.cs @@ -13,7 +13,7 @@ public class GameObjectPlacementButton : UnitPlacementButton var hasEnoughPopulation = isBuilding || ResourceManager.Instance.EnoughPopulationFor(defaultPopCost); return ResourceManager.Instance.EnoughFor(_rock, _wood, _food) && hasEnoughPopulation - && _button.enabled && _canSpawn; + && base.CanPlace(); } protected override DraggablePlaceholder Place() @@ -44,7 +44,7 @@ public class GameObjectPlacementButton : UnitPlacementButton color.a = 0.6f; rend.color = color; - rend.material = _outlineMaterial; + rend.material = OutlineMaterial; placeholder.OutlineRenderers.Add(rend); } diff --git a/Assets/Scripts/Drag&Drop/PlacementButton.cs b/Assets/Scripts/Drag&Drop/PlacementButton.cs new file mode 100644 index 0000000..0d78ee4 --- /dev/null +++ b/Assets/Scripts/Drag&Drop/PlacementButton.cs @@ -0,0 +1,53 @@ +using GatherAndDefend.Events; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +[RequireComponent(typeof(Button))] +public abstract class PlacementButton : MonoBehaviour, IPointerDownHandler +{ + private bool _canUse = false; + private Button _button; + private DraggablePlaceholder placeholder; + [SerializeField] + private Material _outlineMaterial; + + public bool CanUse => _canUse; + public Button Button => _button; + public DraggablePlaceholder Placeholder => placeholder; + public Material OutlineMaterial => _outlineMaterial; + protected virtual void Start() + { + _button = GetComponent