private void PickNewTarget() { //Debug.Log("Pick new target"); MergableObject[] tetras = MergableObject.All; mergeSoundPlayed = false; if (!scaler.IsScaling) { scaler.ScaleToInitial(agentRescaleTime); } if (target != null) { target.GetComponent <MergableObject>().targetedByAgent = false; } MergableObject tetra = GameManager.Instance.GetDisplacedUntargetedTetra(); if (tetra != null) { target = tetra.gameObject; mover.targetPoint = target.transform.position; mover.enabled = true; targetGrabbable = target.GetComponent <Grabbable>(); tetra.targetedByAgent = true; } else { Debug.Log("Order agent could not find valid target. Dying."); target = null; mover.enabled = false; Die(); } }
private void PickNewTarget() { MergableObject[] tetras = MergableObject.All; if (target != null) { target.GetComponent <MergableObject>().targetedByAgent = false; } MergableObject tetra = GameManager.Instance.GetBreakableTetra(); if (tetra != null) { target = tetra.gameObject; mover.targetPoint = target.transform.position; mover.enabled = true; targetGrabbable = target.GetComponent <Grabbable>(); tetra.targetedByAgent = true; } else { //Debug.Log("Chaos agent could not find valid target. Dying."); target = null; mover.enabled = false; Die(); } }
public void OnEnable() { EndChecker.OnGameWin += StopAgentSpawning; // Find all the manipulatable objects in the scene GameObject[] objects = GameObject.FindGameObjectsWithTag("Manipulatable"); int maxTetras = 0; foreach (GameObject obj in objects) { MergableObject mergable = obj.GetComponent <MergableObject>(); if (mergable == null) { Debug.LogWarning("Found a manipulatable that didn't have a MergableObject component on it. That can't be right!"); } else { maxTetras += mergable.Size; } } /* * if(!IsPowerOfFour(maxTetras)) * { * tetraSizeWarning.GetComponent<TextMeshPro>().text = "WARNING! TOTAL TETRA SIZE IS CURRENTLY " + maxTetras + ". THIS IS NOT A POWER OF FOUR! THIS LEVEL MAY NOT BE COMPLETABLE!"; * tetraSizeWarning.SetActive(true); * }*/ maxObjects = maxTetras; agentSpawnCoroutine = StartCoroutine(AgentSpawner()); }
private void OnHeldSizeChange(MergableObject obj, int newSize) { obj.OnSizeChanged -= OnHeldSizeChange; if (obj.gameObject == grabbedObject.gameObject) { ReleaseGrabbedObject(); } }
public void OnCollisionEnter(Collision collision) { MergableObject tetra = collision.gameObject.GetComponent <MergableObject>(); if (tetra != null && tetra.Size > 1) { tetra.Split(); audioSource.PlayOneShot(Utility.SoundEffectClips.instance.chaosBreak); //Debug.Log("Chaos agent collided."); Die(); } }
public MergableObject GetBreakableTetra() { MergableObject breakable = null; foreach (MergableObject tetra in MergableObject.All) { if (tetra.Size > 1 /*&& !tetra.targetedByAgent*/ && !tetra.GetComponent <Grabbable>().IsGrabbed) { breakable = tetra; break; } } return(breakable); }
public MergableObject GetDisplacedUntargetedTetra() { MergableObject displaced = null; foreach (MergableObject tetra in MergableObject.All) { if (IsDisplaced(tetra) && !tetra.targetedByAgent && !tetra.GetComponent <Grabbable>().IsGrabbed) { displaced = tetra; break; } } return(displaced); }
private bool IsDisplaced(MergableObject tetra) { return(Vector3.Distance(tetra.transform.position, tetra.SpawnPosition) > displacementRange); }