Esempio n. 1
0
        /// <summary>
        /// Trigger anything from its name
        /// </summary>
        /// <param name="source"></param>
        /// <param name="name"></param>
        public void Trigger(BulletMLLib.Bullet source, string name)
        {
            GameObject sourceObject = GetGameObjectFromBullet(source);

            if (OnTrigger != null)
            {
                OnTrigger(sourceObject, name);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Look what kind if bullet it is and how to retrieve the game object from it
        /// </summary>
        /// <param name="sourceBullet"></param>
        /// <returns></returns>
        public GameObject GetGameObjectFromBullet(BulletMLLib.Bullet sourceBullet)
        {
            GameObject requestSource = null;

            if (sourceBullet is TopBullet)
            {
                var parent = ((TopBullet)sourceBullet).Parent;
                if (parent != null)
                {
                    requestSource = parent.gameObject;
                }
            }
            else if (sourceBullet is BulletObject)
            {
                requestSource = ((BulletObject)sourceBullet).Parent;
            }
            return(requestSource);
        }
Esempio n. 3
0
        /// <summary>
        /// Clean bullet
        /// </summary>
        /// <param name="deadBullet"></param>
        public void RemoveBullet(BulletMLLib.Bullet deadBullet)
        {
            if (OnBulletDestroyed != null)
            {
                OnBulletDestroyed(deadBullet);
                return;
            }

            if (deadBullet is BulletObject)
            {
                BulletObject b = (BulletObject)deadBullet;

                if (b != null && b.Parent != null && b.Parent != null)
                {
                    Destroy(b.Parent);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// New bullet creation
        /// </summary>
        /// <remarks>Not the bullet spawn, just the container creation, we don't know the bullet name here</remarks>
        /// <returns></returns>
        public BulletMLLib.Bullet CreateBullet(BulletMLLib.Bullet source, bool top)
        {
            // Try to get the parent
            GameObject         gameObject = null;
            BulletSourceScript emitter    = null;

            if (source is TopBullet)
            {
                emitter = ((TopBullet)source).Parent;
                if (emitter != null)
                {
                    gameObject = emitter.gameObject;
                }
            }
            else if (source is BulletObject)
            {
                gameObject = ((BulletObject)source).Parent;
            }

            // Create a top bullet (weird case)
            if (top)
            {
                return(new TopBullet(this, emitter));
            }
            else
            {
                // Create a bullet
                BulletObject bullet = null;
                if (OnBulletCreated != null)
                {
                    bullet = OnBulletCreated(gameObject);
                }
                else
                {
                    bullet = new BulletObject(this, gameObject);
                }
                bullet.OnBulletSpawned += BulletSpawnedHandler;

                return(bullet);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Player current position for the bullet
        /// </summary>
        /// <param name="sourceBullet"></param>
        /// <returns></returns>
        public Vector2 PlayerPosition(BulletMLLib.Bullet sourceBullet)
        {
            if (GetPlayerPosition != null)
            {
                // Find the parent
                GameObject requestSource = GetGameObjectFromBullet(sourceBullet);

                // Call the handler
                if (requestSource == null)
                {
                    Debug.LogError("Unable to get the parent from " + sourceBullet);
                }
                return(GetPlayerPosition(requestSource));
            }
            else if (player != null)
            {
                return(player.transform.position);
            }
            else
            {
                return(Vector2.zero);
            }
        }