Пример #1
0
        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();
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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());
        }
Пример #4
0
 private void OnHeldSizeChange(MergableObject obj, int newSize)
 {
     obj.OnSizeChanged -= OnHeldSizeChange;
     if (obj.gameObject == grabbedObject.gameObject)
     {
         ReleaseGrabbedObject();
     }
 }
Пример #5
0
        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();
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
 private bool IsDisplaced(MergableObject tetra)
 {
     return(Vector3.Distance(tetra.transform.position, tetra.SpawnPosition) > displacementRange);
 }