From 82a47cf621b574ef37f98d400b2ce20157647972 Mon Sep 17 00:00:00 2001 From: Adam Reifsneider Date: Sun, 12 Jul 2020 12:50:25 -0400 Subject: [PATCH] signs --- BOX-BUX/Assets/Scripts/DeliveryZone.cs | 19 +++-- BOX-BUX/Assets/Scripts/GlobalState.cs | 12 ++- BOX-BUX/Assets/Scripts/HudText.cs | 1 + BOX-BUX/Assets/Scripts/Signs.cs | 82 +++++++++++++++++++ BOX-BUX/Assets/Scripts/Signs.cs.meta | 11 +++ BOX-BUX/Assets/Scripts/Spawner.cs | 8 +- BOX-BUX/Assets/Scripts/Trasher.cs | 6 +- .../Assets/Scripts/_Data Structures/Order.cs | 14 ++++ .../Scripts/_Data Structures/Order.cs.meta | 11 +++ BOX-BUX/Assets/Scripts/_Events.meta | 8 ++ BOX-BUX/Assets/Scripts/_Events/EventOrder.cs | 10 +++ .../Assets/Scripts/_Events/EventOrder.cs.meta | 11 +++ .../Scripts/_Events/EventTriggerable.cs | 10 +++ .../Scripts/_Events/EventTriggerable.cs.meta | 11 +++ 14 files changed, 196 insertions(+), 18 deletions(-) create mode 100644 BOX-BUX/Assets/Scripts/Signs.cs create mode 100644 BOX-BUX/Assets/Scripts/Signs.cs.meta create mode 100644 BOX-BUX/Assets/Scripts/_Data Structures/Order.cs create mode 100644 BOX-BUX/Assets/Scripts/_Data Structures/Order.cs.meta create mode 100644 BOX-BUX/Assets/Scripts/_Events.meta create mode 100644 BOX-BUX/Assets/Scripts/_Events/EventOrder.cs create mode 100644 BOX-BUX/Assets/Scripts/_Events/EventOrder.cs.meta create mode 100644 BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs create mode 100644 BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs.meta diff --git a/BOX-BUX/Assets/Scripts/DeliveryZone.cs b/BOX-BUX/Assets/Scripts/DeliveryZone.cs index 330e7c8..9c08c34 100644 --- a/BOX-BUX/Assets/Scripts/DeliveryZone.cs +++ b/BOX-BUX/Assets/Scripts/DeliveryZone.cs @@ -3,22 +3,22 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.Events; public class DeliveryZone : MonoBehaviour { - [Serializable] - public class Order - { - public ColorType colorGoal; - public MaterialType materialGoal; - public ShapeType shapeGoal; - public SizeType sizeGoal; - } + public static EventTriggerable onDelivered; + public static EventOrder onNewOrder; public List orders; private Order currentOrder; private bool wonPrinted = false; private HudText score; + private void Awake() + { + onDelivered = new EventTriggerable(); + onNewOrder = new EventOrder(); + } private void Start() { @@ -33,6 +33,7 @@ private void Update() { currentOrder = orders[0]; orders.RemoveAt(0); + onNewOrder.Invoke(currentOrder); Debug.Log("GOAL: " + currentOrder.materialGoal + ", " + currentOrder.colorGoal + ", " + currentOrder.shapeGoal + ", " + currentOrder.sizeGoal); } else if (!wonPrinted) @@ -66,7 +67,7 @@ public void OnTriggerEnter(Collider other) private void Deliver(Pickable box) { Debug.Log("GIANT ENEMY GOAL GOT"); - score.OnDelivered(box); + onDelivered.Invoke(box); Destroy(box.gameObject); currentOrder = null; } diff --git a/BOX-BUX/Assets/Scripts/GlobalState.cs b/BOX-BUX/Assets/Scripts/GlobalState.cs index b5acdd2..766e918 100644 --- a/BOX-BUX/Assets/Scripts/GlobalState.cs +++ b/BOX-BUX/Assets/Scripts/GlobalState.cs @@ -16,17 +16,21 @@ public static GlobalState get() return FindObjectOfType(); } - public void OnSpawned(Pickable pickable) + private void OnSpawned(Pickable pickable) { spawned.Add(pickable); } - public void Trash(Pickable toTrash) + private void Start() { - if (!spawned.Remove(toTrash)) + Trasher.onTrashed.AddListener(Trash); + } + + private void Trash(Triggerable toTrash) + { + if (!spawned.Remove(toTrash.asPickable())) { throw new System.Exception("Failed to trash: " + toTrash); } - Destroy(toTrash.gameObject); } } diff --git a/BOX-BUX/Assets/Scripts/HudText.cs b/BOX-BUX/Assets/Scripts/HudText.cs index fa4b6a5..9b7d881 100644 --- a/BOX-BUX/Assets/Scripts/HudText.cs +++ b/BOX-BUX/Assets/Scripts/HudText.cs @@ -18,6 +18,7 @@ public class HudText : MonoBehaviour private void Start() { + DeliveryZone.onDelivered.AddListener(OnDelivered); var texts = GetComponentsInChildren(); timerText = texts.Single(t => t.name == "Timer"); scoreText = texts.Single(t => t.name == "Score"); diff --git a/BOX-BUX/Assets/Scripts/Signs.cs b/BOX-BUX/Assets/Scripts/Signs.cs new file mode 100644 index 0000000..e2ef991 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/Signs.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.UIElements; + +public class Signs : MonoBehaviour +{ + [Serializable] + public class SizePair + { + public SizeType type; + public Sprite sprite; + } + + [Serializable] + public class ColorPair + { + public ColorType type; + public Sprite sprite; + } + + [Serializable] + public class ShapePair + { + public ShapeType type; + public Sprite sprite; + } + + + [Serializable] + public class MaterialPair + { + public MaterialType type; + public Sprite sprite; + } + + public ColorPair[] colorPairing; + public MaterialPair[] materialPairing; + public ShapePair[] shapePairing; + public SizePair[] sizePairing; + + private GameObject color; + private GameObject material; + private GameObject shape; + private GameObject size; + + private void Start() + { + DeliveryZone.onNewOrder.AddListener(OnNewOrder); + + foreach (Transform child in transform) + { + var obj = child.gameObject; + switch (obj.name) + { + case "Sign_Color": + color = child.gameObject; + break; + case "Sign_Material": + material = child.gameObject; + break; + case "Sign_Shape": + shape = child.gameObject; + break; + case "Sign_Size": + size = child.gameObject; + break; + } + } + } + + public void OnNewOrder(Order order) + { + color.GetComponent().sprite = colorPairing.Single(cp => cp.type == order.colorGoal).sprite; + material.GetComponent().sprite = materialPairing.Single(cp => cp.type == order.materialGoal).sprite; + shape.GetComponent().sprite = shapePairing.Single(cp => cp.type == order.shapeGoal).sprite; + size.GetComponent().sprite = sizePairing.Single(cp => cp.type == order.sizeGoal).sprite; + } +} diff --git a/BOX-BUX/Assets/Scripts/Signs.cs.meta b/BOX-BUX/Assets/Scripts/Signs.cs.meta new file mode 100644 index 0000000..4bdc8e4 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/Signs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c55325ca89a15b46b1d80e565ca7aac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BOX-BUX/Assets/Scripts/Spawner.cs b/BOX-BUX/Assets/Scripts/Spawner.cs index 5f0296f..52cbee4 100644 --- a/BOX-BUX/Assets/Scripts/Spawner.cs +++ b/BOX-BUX/Assets/Scripts/Spawner.cs @@ -11,8 +11,9 @@ public class Spawner : InteractableBase { public Pickable box; public Vector3 spawnPosition; - public GlobalState state; public float secondsCooldown = 1.0f; + public static EventTriggerable onSpawned; + private GlobalState state; private float countdown; public SizeType defaultSize = SizeType.NORMAL; @@ -24,9 +25,10 @@ public class Spawner : InteractableBase public bool randomMaterial; public bool randomShape; - private void Start() + private void Awake() { state = FindObjectOfType(); + onSpawned = new EventTriggerable(); } private void Update() @@ -46,7 +48,7 @@ public override void OnInteract() countdown = secondsCooldown; var created = Instantiate(box); - state.OnSpawned(created); + onSpawned.Invoke(created); if (randomSize) { diff --git a/BOX-BUX/Assets/Scripts/Trasher.cs b/BOX-BUX/Assets/Scripts/Trasher.cs index 3cbfad0..4f109da 100644 --- a/BOX-BUX/Assets/Scripts/Trasher.cs +++ b/BOX-BUX/Assets/Scripts/Trasher.cs @@ -9,12 +9,13 @@ public class Trasher : MonoBehaviour { + public static EventTriggerable onTrashed; public ParticleSystem particle; public GlobalState state; private void Start() { - state = FindObjectOfType(); + onTrashed = new EventTriggerable(); } private void OnTriggerStay(Collider other) @@ -30,7 +31,8 @@ private void OnTriggerStay(Collider other) var p = Instantiate(particle); p.transform.position = pick.transform.position; p.Play(); - state.Trash(pick); + onTrashed.Invoke(pick); + Destroy(pick.gameObject); } } } diff --git a/BOX-BUX/Assets/Scripts/_Data Structures/Order.cs b/BOX-BUX/Assets/Scripts/_Data Structures/Order.cs new file mode 100644 index 0000000..06afe95 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Data Structures/Order.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +[Serializable] +public class Order +{ + public ColorType colorGoal; + public MaterialType materialGoal; + public ShapeType shapeGoal; + public SizeType sizeGoal; +} diff --git a/BOX-BUX/Assets/Scripts/_Data Structures/Order.cs.meta b/BOX-BUX/Assets/Scripts/_Data Structures/Order.cs.meta new file mode 100644 index 0000000..e1e786f --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Data Structures/Order.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 367b20e9e52e03940b433af1dd32171b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BOX-BUX/Assets/Scripts/_Events.meta b/BOX-BUX/Assets/Scripts/_Events.meta new file mode 100644 index 0000000..5575b95 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Events.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7ab958fe85fc1a418e0158dd0bd8315 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BOX-BUX/Assets/Scripts/_Events/EventOrder.cs b/BOX-BUX/Assets/Scripts/_Events/EventOrder.cs new file mode 100644 index 0000000..a008a65 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Events/EventOrder.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine.Events; + +public class EventOrder : UnityEvent +{ +} diff --git a/BOX-BUX/Assets/Scripts/_Events/EventOrder.cs.meta b/BOX-BUX/Assets/Scripts/_Events/EventOrder.cs.meta new file mode 100644 index 0000000..51cb0e8 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Events/EventOrder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b36a67044c318c14ca4af05291a49205 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs b/BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs new file mode 100644 index 0000000..508e369 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine.Events; + +public class EventTriggerable : UnityEvent +{ +} diff --git a/BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs.meta b/BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs.meta new file mode 100644 index 0000000..692acf4 --- /dev/null +++ b/BOX-BUX/Assets/Scripts/_Events/EventTriggerable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6690128e927e94744ac48f18abc5cffe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: