Exemplo n.º 1
0
        public void BroadcastEvents()
        {
            if (m_FireEvent)
            {
                m_FireEvent = false;

                var objectsInRadius = Physics.OverlapSphere(transform.position, m_NoiseRadius, ~(LayerMask.NameToLayer("Players")));

                for (int i = 0; i < objectsInRadius.Length; ++i)
                {
                    var percepts = objectsInRadius[i].GetComponent <TankPercepts>();
                    if (objectsInRadius[i].gameObject != gameObject &&
                        percepts != null)
                    {
                        TankTacticalInfo targetRecord = percepts.GetRecord(m_PlayerNumber);

                        // write updated information
                        targetRecord.lastKnownPosition      = transform.position;
                        targetRecord.lastKnownDirection     = (transform.position - percepts.transform.position).normalized;
                        targetRecord.lastKnownCannonForward = m_FireTransform.parent.transform.forward; // HACK: find a better way to expose the cannon

                        percepts.WriteRecord(targetRecord);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void BroadcastEvents()
        {
            var objectsInRange = Physics.OverlapSphere(transform.position, m_NoiseRadius, ~(LayerMask.NameToLayer("Players")));

            for (int i = 0; i < objectsInRange.Length; ++i)
            {
                var receptor = objectsInRange[i].GetComponent <TankPercepts>();
                if (receptor != null && receptor.gameObject != gameObject)
                {
                    TankTacticalInfo targetRecord = receptor.GetRecord(m_PlayerNumber);

                    // write updated information
                    targetRecord.lastKnownDirection = (transform.position - receptor.transform.position).normalized;

                    receptor.WriteRecord(targetRecord);
                }
            }
        }
Exemplo n.º 3
0
    public TankTacticalInfo GetRecord(int playerID)
    {
        TankTacticalInfo record;

        // get the existing record, if any, otherwise create a new one
        if (reconInfo.ContainsKey(playerID))
        {
            record = reconInfo[playerID];
        }
        else
        {
            record              = new TankTacticalInfo();
            record.playerID     = playerID;
            reconInfo[playerID] = record;
        }

        return(record);
    }
Exemplo n.º 4
0
    public TankTacticalInfo GetRecord(int playerID)
    {
        TankTacticalInfo record;

        // get the existing record, if any, otherwise create a new one
        if (reconInfo.ContainsKey(playerID))
        {
            record = reconInfo[playerID];
        }
        else
        {
            record = new TankTacticalInfo();
            record.playerID = playerID;
            reconInfo[playerID] = record;
        }

        return record;
    }
Exemplo n.º 5
0
        private void OnDeath()
        {
            // Set the flag so that this function is only called once.
            m_Dead = true;

            var objectsInRange = Physics.OverlapSphere(transform.position, m_DeathAlertRadius, ~(LayerMask.NameToLayer("Players")));

            for (int i = 0; i < objectsInRange.Length; ++i)
            {
                var receptor = objectsInRange[i].GetComponent <TankPercepts>();
                if (receptor != null && receptor.gameObject != gameObject)
                {
                    TankTacticalInfo targetRecord = receptor.GetRecord(m_PlayerNumber);

                    // write updated information
                    targetRecord.lastKnownPosition  = transform.position;
                    targetRecord.lastKnownDirection = (transform.position - receptor.transform.position).normalized;

                    targetRecord.isAlive = 0;

                    receptor.WriteRecord(targetRecord);
                }
            }

            // Move the instantiated explosion prefab to the tank's position and turn it on.
            m_ExplosionParticles.transform.position = transform.position;
            m_ExplosionParticles.gameObject.SetActive(true);

            // Play the particle system of the tank exploding.
            m_ExplosionParticles.Play();

            // Play the tank explosion sound effect.
            m_ExplosionAudio.Play();

            // Turn the tank off.
            gameObject.SetActive(false);
        }
Exemplo n.º 6
0
        public void BroadcastEvents()
        {
            if (m_FireEvent)
            {
                m_FireEvent = false;

                var objectsInRadius = Physics.OverlapSphere(transform.position, m_NoiseRadius, ~(LayerMask.NameToLayer("Players")));

                for (int i = 0; i < objectsInRadius.Length; ++i)
                {
                    var percepts = objectsInRadius[i].GetComponent <TankPercepts>();
                    if (objectsInRadius[i].gameObject != gameObject &&
                        percepts != null)
                    {
                        TankTacticalInfo targetRecord = percepts.GetRecord(m_PlayerNumber);

                        // write updated information
                        targetRecord.lastKnownPosition = transform.position;

                        percepts.WriteRecord(targetRecord);
                    }
                }
            }
        }
Exemplo n.º 7
0
 public void WriteRecord(TankTacticalInfo tacticalData)
 {
     reconInfo[tacticalData.playerID] = tacticalData;
 }
Exemplo n.º 8
0
 public void WriteRecord(TankTacticalInfo tacticalData)
 {
     reconInfo[tacticalData.playerID] = tacticalData;
 }