Exemple #1
0
 private void Awake()
 {
     if (Instance != null)
     {
         Destroy(this.gameObject); return;
     }
     Instance = this;
 }
 void Awake()
 {
     Storage              = GameManager.Instance.ArrowStorage;
     _arrowContainer      = new GameObject();
     _arrowContainer.name = "PaintedArrowContainer";
     _paintedArrows       = new List <GameObject>();
     _arrowPool           = GetComponent <ArrowPool>();
 }
    public void Initialize()
    {
        if (CoinEffectPoolObject == null)
        {
            CoinEffectPoolObject = new CoinEffectPool(this.coinEffectPrefab);
        }
        if (EnemyDirectionEffectPoolObject == null)
        {
            EnemyDirectionEffectPoolObject = new EnemyDirectionEffectPool(this.enemyDirectionEffectPrefab);
        }
        if (BakuhatuEffectPoolObject == null)
        {
            BakuhatuEffectPoolObject = new BakuhatuEffectPool(this.bakuhatuEffectPrefab);
        }
        if (ArrowPoolObject == null)
        {
            ArrowPoolObject = new ArrowPool(this.arrowPrefab);
        }
        if (ArrowTouchEffectPoolObject == null)
        {
            ArrowTouchEffectPoolObject = new ArrowContactEffectPool(this.arrowTouchEffectPrefab);
        }
        if (ArrowContactFlashEffectPoolObject == null)
        {
            ArrowContactFlashEffectPoolObject = new ArrowContactFlashEffectPool(this.arrowContactFlashEffectPrefab);
        }
        if (AmmunitionPoolObject == null)
        {
            AmmunitionPoolObject = new AmmunitionPool(this.ammunitionPrefab);
        }
        if (AmmunitionSmokeEffectPoolObject == null)
        {
            AmmunitionSmokeEffectPoolObject = new AmmunitionSmokeEffectPool(this.ammunitionSmokeEffectPrefab);
        }
        if (CArrowPoolObject == null)
        {
            CArrowPoolObject = new CArrowPool(this.centerBuildingArrowPrefab);
        }
        if (IceCirclePoolObject == null)
        {
            IceCirclePoolObject = new IceCirclePool(this.iceCirclePrefab);
        }
        if (SlowDownEffectPoolObject == null)
        {
            SlowDownEffectPoolObject = new SlowDownEffectPool(this.slowDownEffectPrefab);
        }
        if (MagicLinePoolObject == null)
        {
            MagicLinePoolObject = new MagicLinePool(this.magicLinePrefab);
        }

        ClearPool();
    }
        void Fire()
        {
            var arrow = ArrowPool.Get <SimpleArrowTrajectile>(
                spawnPos: arrowFireTransform.position,
                directionVector: transform.forward) as SimpleArrowTrajectile;

            arrow.ShotBy          = this.Self;
            arrow.LaunchDirection = new Vector3(0, -0.1f, 1f);
            StartCoroutine(arrow.MoveStraight());
            StartCoroutine(ReturnTrajectileToPool());

            IEnumerator ReturnTrajectileToPool()
            {
                yield return(new WaitForSeconds(5f));

                ArrowPool.ReturnToPool(arrow);
                arrow.gameObject.SetActive(false);
            }
        }