protected override void TileDestroy(bool useEffect) 
	{	
		spawnResult = CheckForSpawnPatterns();
		
		cachedTransform.localPosition += Vector3.forward * -2f;

		if (spawnTimeBomb && !spawnResult) {
			spawnedTimeBomb = SpawnTimeBomb();
		}
		
		if (useDestroyEffect && useEffect) 
		{
			// Check if this bomb is a bomb resulted from a Bomb+Bomb combination
			if (prefabDestroyEffect == prefabDoubleDestroyEffect)
			{
				if (OnBombBombCombine != null) {
					OnBombBombCombine(this);
				}
			}
				
			TileBombDestroyEffect bombDestroyEffect = SpawnDestroyEffect(new Vector3(0f, 0f, -19f)).gameObject.GetComponent<TileBombDestroyEffect>();	
			bombDestroyEffect.explosionSpreadTime = animation.clip.length - bombDestroyEffect.delayAfterExplosionSpread;
			bombDestroyEffect.InitBombDestroyEffect(this, WorldPosition);
			bombDestroyEffect.triggerListener.OnTileEntered = OnTileEnteredDestroyTrigger;
			bombDestroyEffect.triggerListener.OnBoardPieceEntered = OnBoardPieceEnteredFreezeTrigger;
			bombDestroyEffect.OnEffectFinished = OnBombDestroyEffectFinished;
			
			//TODO:Remove redundant chunks of code if u will ever have the time / decency to do so
			//TODO: MIO: Revise this .. it was way too late when you wrote this.
			Transform effectInstance = (Instantiate(PrefabEffectBreakFragments) as GameObject).transform;
			effectInstance.position = WorldPosition;
			Destroy(effectInstance.gameObject, destroyEffect.lifeTime);
			effectBreakFragmentsInstance = effectInstance.GetComponent<TileDestroyEffect>();
			
			if (freezeEffect) {
				Destroy(freezeEffect);
				effectBreakFragmentsInstance.GetComponent<TileDestroyEffect>().UpdateMaterial(PrefabFreezeDestroyMaterialArray[(int)TileColor - 1]);
			}
			else {
				effectBreakFragmentsInstance.GetComponent<TileDestroyEffect>().UpdateMaterial(TileColor);
			}
			
			tileModelRenderer.enabled = false;
			//--------------------------------------------------------------------------------------
			
			animation.Play();
			
			if(tileModelAdditionalRenderer != null) {
				tileModelAdditionalRenderer.transform.parent.animation.Play("tile_iceberg_destroy");
			}
			
			if (OnTriggerBombTileFreeze != null) {
				OnTriggerBombTileFreeze(this);
			}
		}
		else {
			base.TileDestroy(false);
		}
	}
	protected override void TileDestroy(bool useEffect) 
	{
		CheckForSpawnPatterns();
		
		tilesDestroyEffect = prefabTilesDestroyEffect.GetComponent<WinterchillEffect>();
		tilesToDestroy.Clear();
//		StartCoroutine(DestroyRow());
//		StartCoroutine(DestroyColumn());

		if (useEffect) {
			if (prefabDestroyEffect != null) {
				SpawnDestroyEffect(new Vector3(0f, 0f, -10f));
			} 
			else {
				destroyEffect = tilesDestroyEffect;
			}
			
			TriggerTileAbility();
			
			// to see the tile destroy animation
			if (useDestroyEffect) {
				tileModelTransform.gameObject.SetActive(true);
					
				//TODO:Remove redundant chunks of code if u will ever have the time / decency to do so
				//TODO: MIO: Revise this .. it was way too late when you wrote this.
				if(PrefabEffectBreakFragments) {
					Transform effectInstance = (Instantiate(PrefabEffectBreakFragments) as GameObject).transform;
					effectInstance.position = WorldPosition;
					Destroy(effectInstance.gameObject, destroyEffect.lifeTime);
					effectBreakFragmentsInstance = effectInstance.GetComponent<TileDestroyEffect>();
					
					if (freezeEffect) {
						Destroy(freezeEffect);
						effectBreakFragmentsInstance.GetComponent<TileDestroyEffect>().UpdateMaterial(PrefabFreezeDestroyMaterialArray[(int)TileColor - 1]);
					}
					else {
						effectBreakFragmentsInstance.GetComponent<TileDestroyEffect>().UpdateMaterial(TileColor);
					}
					
					tileModelRenderer.enabled = false;
				}
				//--------------------------------------------------------------------------------------
				
				animation.Play(parentDestroyAnimationName, PlayMode.StopAll);
				additionalChildAnimationComponent.Play(childDestroyAnimationName, PlayMode.StopAll);
			}
			
			if(freezeEffect) {
				Destroy(freezeEffect);
			}
		} else {
			if (tilesDestroyEffect.waitBetweenTiles) {
				tileModelTransform.gameObject.SetActive(false);
				
				if (this == BoardPiece.Tile) {
					BoardPiece.Tile = null;
				}
			}
			else {
				base.TileDestroy(false);
			}
		}
	}
    protected override void TileDestroy(bool useEffect)
    {
        spawnResult = CheckForSpawnPatterns();

        cachedTransform.localPosition += Vector3.forward * -2f;

        if (spawnTimeBomb && !spawnResult)
        {
            spawnedTimeBomb = SpawnTimeBomb();
        }

        if (useDestroyEffect && useEffect)
        {
            // Check if this bomb is a bomb resulted from a Bomb+Bomb combination
            if (prefabDestroyEffect == prefabDoubleDestroyEffect)
            {
                if (OnBombBombCombine != null)
                {
                    OnBombBombCombine(this);
                }
            }

            TileBombDestroyEffect bombDestroyEffect = SpawnDestroyEffect(new Vector3(0f, 0f, -19f)).gameObject.GetComponent <TileBombDestroyEffect>();
            bombDestroyEffect.explosionSpreadTime = animation.clip.length - bombDestroyEffect.delayAfterExplosionSpread;
            bombDestroyEffect.InitBombDestroyEffect(this, WorldPosition);
            bombDestroyEffect.triggerListener.OnTileEntered       = OnTileEnteredDestroyTrigger;
            bombDestroyEffect.triggerListener.OnBoardPieceEntered = OnBoardPieceEnteredFreezeTrigger;
            bombDestroyEffect.OnEffectFinished = OnBombDestroyEffectFinished;

            //TODO:Remove redundant chunks of code if u will ever have the time / decency to do so
            //TODO: MIO: Revise this .. it was way too late when you wrote this.
            Transform effectInstance = (Instantiate(PrefabEffectBreakFragments) as GameObject).transform;
            effectInstance.position = WorldPosition;
            Destroy(effectInstance.gameObject, destroyEffect.lifeTime);
            effectBreakFragmentsInstance = effectInstance.GetComponent <TileDestroyEffect>();

            if (freezeEffect)
            {
                Destroy(freezeEffect);
                effectBreakFragmentsInstance.GetComponent <TileDestroyEffect>().UpdateMaterial(PrefabFreezeDestroyMaterialArray[(int)TileColor - 1]);
            }
            else
            {
                effectBreakFragmentsInstance.GetComponent <TileDestroyEffect>().UpdateMaterial(TileColor);
            }

            tileModelRenderer.enabled = false;
            //--------------------------------------------------------------------------------------

            animation.Play();

            if (tileModelAdditionalRenderer != null)
            {
                tileModelAdditionalRenderer.transform.parent.animation.Play("tile_iceberg_destroy");
            }

            if (OnTriggerBombTileFreeze != null)
            {
                OnTriggerBombTileFreeze(this);
            }
        }
        else
        {
            base.TileDestroy(false);
        }
    }
Exemple #4
0
    protected override void TileDestroy(bool useEffect)
    {
        CheckForSpawnPatterns();

        tilesDestroyEffect = prefabTilesDestroyEffect.GetComponent <WinterchillEffect>();
        tilesToDestroy.Clear();
//		StartCoroutine(DestroyRow());
//		StartCoroutine(DestroyColumn());

        if (useEffect)
        {
            if (prefabDestroyEffect != null)
            {
                SpawnDestroyEffect(new Vector3(0f, 0f, -10f));
            }
            else
            {
                destroyEffect = tilesDestroyEffect;
            }

            TriggerTileAbility();

            // to see the tile destroy animation
            if (useDestroyEffect)
            {
                tileModelTransform.gameObject.SetActive(true);

                //TODO:Remove redundant chunks of code if u will ever have the time / decency to do so
                //TODO: MIO: Revise this .. it was way too late when you wrote this.
                if (PrefabEffectBreakFragments)
                {
                    Transform effectInstance = (Instantiate(PrefabEffectBreakFragments) as GameObject).transform;
                    effectInstance.position = WorldPosition;
                    Destroy(effectInstance.gameObject, destroyEffect.lifeTime);
                    effectBreakFragmentsInstance = effectInstance.GetComponent <TileDestroyEffect>();

                    if (freezeEffect)
                    {
                        Destroy(freezeEffect);
                        effectBreakFragmentsInstance.GetComponent <TileDestroyEffect>().UpdateMaterial(PrefabFreezeDestroyMaterialArray[(int)TileColor - 1]);
                    }
                    else
                    {
                        effectBreakFragmentsInstance.GetComponent <TileDestroyEffect>().UpdateMaterial(TileColor);
                    }

                    tileModelRenderer.enabled = false;
                }
                //--------------------------------------------------------------------------------------

                animation.Play(parentDestroyAnimationName, PlayMode.StopAll);
                additionalChildAnimationComponent.Play(childDestroyAnimationName, PlayMode.StopAll);
            }

            if (freezeEffect)
            {
                Destroy(freezeEffect);
            }
        }
        else
        {
            if (tilesDestroyEffect.waitBetweenTiles)
            {
                tileModelTransform.gameObject.SetActive(false);

                if (this == BoardPiece.Tile)
                {
                    BoardPiece.Tile = null;
                }
            }
            else
            {
                base.TileDestroy(false);
            }
        }
    }