|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class ParentBehaviour : MonoBehaviour
- {
- public spawner babySpawner;
-
- public GameObject child;
-
- public Texture baseVis;
- public Texture hatVis;
- public Texture eyeVis;
- public Texture topVis;
- public Texture bottomVis;
-
- public List<string> order = new List<string>();
-
- public ParentBehaviour otherParent;
-
- public Texture2D[] parentBases;
- public Texture2D parentFaceNeutral;
- public Texture2D parentFaceHappy1;
- public Texture2D parentFaceHappy2;
- public Texture2D parentFaceAngry;
- public Texture2D parentFaceTalk;
-
- public GameObject parentBodyObj;
- public GameObject parentFaceObj;
- public GameObject parentDialougeObj;
-
- private void Start()
- {
- parentBodyObj.GetComponent<MeshRenderer>().material.mainTexture = parentBases[Random.Range(0, parentBases.Length)];
- parentFaceObj.GetComponent<MeshRenderer>().material.mainTexture = parentFaceNeutral;
- }
-
- [ContextMenu("Get Random Child")]
- public void GetRandomChild()
- {
- bool _validChild = false;
- while (!_validChild)
- {
- int _childIndex = Random.Range(0, babySpawner.transform.childCount);
-
- child = babySpawner.transform.GetChild(_childIndex).gameObject;
-
- if (otherParent.child != null)
- {
- if (child != otherParent.child)
- {
- //this prevents both parents asking for the same child
- _validChild = true;
- }
- }
- }
- Randomizer _childRandomizer = child.GetComponent<Randomizer>();
-
- baseVis = _childRandomizer.baseObj.GetComponent<MeshRenderer>().material.mainTexture;
- hatVis = _childRandomizer.hatObj.GetComponent<MeshRenderer>().material.mainTexture;
- eyeVis = _childRandomizer.eyeObj.GetComponent<MeshRenderer>().material.mainTexture;
- topVis = _childRandomizer.topObj.GetComponent<MeshRenderer>().material.mainTexture;
- bottomVis = _childRandomizer.bottomObj.GetComponent<MeshRenderer>().material.mainTexture;
-
- order.Insert(Random.Range(0, order.Count), "base");
- order.Insert(Random.Range(0, order.Count), "hat");
- order.Insert(Random.Range(0, order.Count), "eye");
- order.Insert(Random.Range(0, order.Count), "top");
- order.Insert(Random.Range(0, order.Count), "bottom");
- }
-
- public bool CheckChild(GameObject _child)
- {
- if (_child == child)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- public Texture GiveDetails(GameObject _child)
- {
- for (int i = 0; i < order.Count; i++)
- {
- switch (order[i]){
- case "base":
- if (child.GetComponent<Randomizer>().baseObj.GetComponent<MeshRenderer>().material.mainTexture != baseVis)
- {
- return baseVis;
- }
- break;
- case "hat":
- if (child.GetComponent<Randomizer>().hatObj.GetComponent<MeshRenderer>().material.mainTexture != hatVis)
- {
- return hatVis;
- }
- break;
- case "eye":
- if (child.GetComponent<Randomizer>().eyeObj.GetComponent<MeshRenderer>().material.mainTexture != eyeVis)
- {
- return eyeVis;
- }
- break;
- case "top":
- if (child.GetComponent<Randomizer>().topObj.GetComponent<MeshRenderer>().material.mainTexture != topVis)
- {
- return topVis;
- }
- break;
- case "bottom":
- if (child.GetComponent<Randomizer>().bottomObj.GetComponent<MeshRenderer>().material.mainTexture != bottomVis)
- {
- return bottomVis;
- }
- break;
- default:
- break;
- }
- }
- return null;
- }
-
- private void OnTriggerEnter(Collider other)
- {
- if (other.gameObject.tag == "child")
- {
- if (CheckChild(other.gameObject))
- {
- //this is the correct child
- }
- else
- {
- Texture _displayGraphic = GiveDetails(other.gameObject);
- //display the display graphic
- parentDialougeObj.GetComponent<MeshRenderer>().material.mainTexture = _displayGraphic;
- }
- }
- }
-
- }
|