GotNoPockets / MayhemJamGameThingy / Assets / Scripts / CrusherScript.cs
CrusherScript.cs
Raw
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public enum Colours
{
	Blue,
	Yellow,
	Red,
	Green,
	Orange,
	Purple,
	White,
}


public class CrusherScript : MonoBehaviour
{
	public Colours ThisCol;
	private bool InTrigger;

	public GameObject ColourCube;
	public GameObject CubePlaceHolder;

	private Animator CrusherAnim;

	private AudioManager Audio;

	public Color32 White = new Color32(255, 255, 255, 255);

	// Primrary
	public Color32 Blue = new Color32(0, 153, 255, 255);
	public Color32 Yellow = new Color32(255, 255, 0, 255);
	public Color32 Red = new Color32(255, 0, 0, 255);

	// Secondary 
	public Color32 Green = new Color32(0, 255, 0, 255);
	public Color32 Orange = new Color32(255, 128, 0, 255);
	public Color32 Purple = new Color32(128, 0, 255, 255);

	// Brown
	public Color32 Brown = new Color32(153, 51, 0, 255);

	private bool HasChangedColour;
	private bool IsCoRunning;

	void Start()
	{
		Audio = FindObjectOfType<AudioManager>();
		CrusherAnim = transform.parent.GetComponentInChildren<Animator>();
	}


	private void Update()
	{
		if ((InTrigger) && (Input.GetButton("Pickup")))
		{
			CrusherAnim.SetBool("CrushIt", true);

			if (!IsCoRunning)
			{
				StartCoroutine(WaitAndTrigger());
			}

			ColourCube = Camera.main.transform.GetChild(0).gameObject;

			if (!HasChangedColour)
			{
				ColourCube.GetComponent<Renderer>().material.color = GuessThatColour(ColourCube);
			}


			FindObjectOfType<InvScript>().HeldItem.gameObject.GetComponent<Renderer>().material.SetColor("_Color", ColourCube.GetComponent<Renderer>().material.color);

			Camera.main.transform.GetChild(0).GetComponent<Renderer>().material.SetColor("test", ColourCube.GetComponent<Renderer>().material.color);

			FindObjectOfType<InvScript>().HeldItem.gameObject.name = ColourCube.name;

		}
	}

	private void OnTriggerEnter(Collider other)
	{
		if (other.gameObject.tag == "Player")
		{
			InTrigger = true;
		}
	}

	private void OnTriggerExit(Collider other)
	{
		if (other.gameObject.tag == "Player")
		{
			HasChangedColour = false;
			InTrigger = false;
		}
	}

	private IEnumerator WaitAndTrigger()
	{
		IsCoRunning = true;
		yield return new WaitForSeconds(.5f);
		CrusherAnim.SetBool("CrushIt", false);
		IsCoRunning = false;
	}


	// Sounds like a gameshow
	private Color32 GuessThatColour(GameObject InputBox)
	{
		HasChangedColour = true;
		Color32 Col = InputBox.GetComponent<Renderer>().material.color;

		switch (ThisCol)
		{
			case Colours.Blue:
				if (Col.ToString() == Yellow.ToString())
				{
					InputBox.name = "GreenBox";
					return Green;
				}
				else if (Col.ToString() == Red.ToString())
				{
					InputBox.name = "PurpleBox";
					return Purple;
				}
				else if (Col.ToString() == Green.ToString())
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
				else if (Col.ToString() == Orange.ToString())
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
				else if (Col.ToString() == White.ToString())
				{
					InputBox.name = "BlueBox";
					return Blue;
				}
				else
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
			case Colours.Yellow:
				if (Col.ToString() == Blue.ToString())
				{
					InputBox.name = "GreenBox";
					return Green;
				}
				else if (Col.ToString() == Red.ToString())
				{
					InputBox.name = "OrangeBox";
					return Orange;
				}
				else if (Col.ToString() == Green.ToString())
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
				else if (Col.ToString() == Orange.ToString())
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
				else if (Col.ToString() == White.ToString())
				{
					InputBox.name = "YellowBox";
					return Yellow;
				}
				else
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
			case Colours.Red:
				if (Col.ToString() == Blue.ToString())
				{
					InputBox.name = "PurpleBox";
					return Purple;
				}
				else if (Col.ToString() == Yellow.ToString())
				{
					InputBox.name = "OrangeBox";
					return Orange;
				}
				else if (Col.ToString() == Green.ToString())
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
				else if (Col.ToString() == Orange.ToString())
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
				else if (Col.ToString() == White.ToString())
				{
					InputBox.name = "RedBox";
					return Red;
				}
				else
				{
					InputBox.name = "BrownBox";
					return Brown;
				}
			case Colours.Green:
				InputBox.name = "BrownBox";
				return Brown;
			case Colours.Orange:
				InputBox.name = "BrownBox";
				return Brown;
			case Colours.Purple:
				InputBox.name = "BrownBox";
				return Brown;
			case Colours.White:
				InputBox.name = "WhiteBox";
				return White;
			default:
				Debug.Log("Default");
				return White;
		}
	}
}