예제 #1
0
        private void FastMoveTween(GameObject mObject, Action completeCallBack)
        {
            PhysStep = true;
            tS       = new TweenSeq();
            Vector3 scale     = transform.localScale;
            float   tweenTime = 0.07f;
            float   distK     = Vector3.Distance(mObject.transform.position, transform.position) / MatchBoard.MaxDragDistance;

            Vector2 dPos   = mObject.transform.position - transform.position;
            bool    isVert = (Mathf.Abs(dPos.y) > Mathf.Abs(dPos.x));

            //move
            tS.Add((callBack) =>
            {
                SimpleTween.Move(mObject, mObject.transform.position, transform.position, tweenTime * distK).AddCompleteCallBack(() =>
                {
                    mObject.transform.position = transform.position;
                    PhysStep = false;
                    completeCallBack?.Invoke();
                    StartCoroutine(EndFill(isVert));
                    callBack();
                });
            });
            tS.Start();
        }
예제 #2
0
        private IEnumerator EndFill(bool isVert)
        {
            if (!PhysStep)
            {
                yield return(new WaitForEndOfFrame());

                yield return(new WaitForEndOfFrame());
            }
            if (!PhysStep && DynamicObject)
            {
                AnimationCurve scaleCurve = MatchBoard.Instance.arcCurve;
                MSound.PlayClip(0.05f, fillSound);
                SimpleTween.Value(DynamicObject, 0.0f, 1f, 0.1f).SetEase(EaseAnim.EaseInSine).SetOnUpdate((float val) =>
                {
                    float t_scale = 1.0f + scaleCurve.Evaluate(val) * 0.1f;
                    if (DynamicObject)
                    {
                        DynamicObject.transform.localScale = (isVert) ? new Vector3(t_scale, 2.0f - t_scale, 1) : new Vector3(2.0f - t_scale, t_scale, 1);               //  mObject.SetLocalScaleX(t_scale); //  mObject.SetLocalScaleY(2.0f - t_scale);
                    }
                }).AddCompleteCallBack(() =>
                {
                    PhysStep = false;
                    //  completeCallBack?.Invoke();
                });
            }
        }
예제 #3
0
 /// <summary>
 /// Show active footer booster with another color
 /// </summary>
 /// <param name="active"></param>
 private void ShowActive()
 {
     if (gameObject)
     {
         SimpleTween.Cancel(gameObject, true);
     }
     if (boosterImage)
     {
         Color c = boosterImage.color;
         boosterImage.color = new Color(1, 1, 1, 1);
         if (booster.IsActive)
         {
             SimpleTween.Value(gameObject, 1.0f, 0.5f, 0.5f).SetEase(EaseAnim.EaseLinear).
             SetOnUpdate((float val) =>
             {
                 if (booster.IsActive)
                 {
                     boosterImage.color = new Color(1, val, val, 1);
                 }
                 else
                 {
                     boosterImage.color = new Color(1, 1, 1, 1);
                     SimpleTween.Cancel(gameObject, true);
                 }
             }).SetCycled();
         }
     }
 }
        /// <summary>
        /// Open panel
        /// </summary>
        /// <param name="panel"></param>
        public void OpenScrollPanel(Action completeCallBack)
        {
            RectTransform panel = GetComponent <RectTransform>();

            transform.localScale = new Vector3(0, 1, 1);
            if (!panel)
            {
                return;
            }
            SetControlActivity(false);
            float startX = 0;
            float endX   = 1f;

            SimpleTween.Cancel(gameObject, true);

            SimpleTween.Value(gameObject, startX, endX, 0.2f).SetEase(EaseAnim.EaseInCubic).
            SetOnUpdate((float val) =>
            {
                transform.localScale = new Vector3(val, 1, 1);
            }).AddCompleteCallBack(() =>
            {
                SetControlActivity(true);
                if (completeCallBack != null)
                {
                    completeCallBack();
                }
            });
        }
예제 #5
0
        public static void ExplodeArea(IEnumerable <GridCell> area, float delay, bool sequenced, bool showPrefab, bool fly, bool hitProtection, Action completeCallBack)
        {
            ParallelTween pt   = new ParallelTween();
            TweenSeq      expl = new TweenSeq();
            GameObject    temp = new GameObject();

            if (delay > 0)
            {
                expl.Add((callBack) => {
                    SimpleTween.Value(temp, 0, 1, delay).AddCompleteCallBack(callBack);
                });
            }
            float incDelay = 0;

            foreach (GridCell mc in area) //parallel explode all cells
            {
                if (sequenced)
                {
                    incDelay += 0.05f;
                }
                float t = incDelay;
                pt.Add((callBack) => { GridCell.ExplodeCell(mc, t, showPrefab, fly, hitProtection, callBack); });
            }

            expl.Add((callBack) => { pt.Start(callBack); });
            expl.Add((callBack) =>
            {
                Destroy(temp);
                completeCallBack?.Invoke(); callBack();
            });

            expl.Start();
        }
예제 #6
0
        public void MoveLeft(float time, System.Action completeCallBack)
        {
            float currPosX = positions[position].x;
            float currPosY = positions[position].y;

            position--;

            if (position < 0)
            {
                position            = positions.Length - 1;
                currPosX            = positions[position].x;
                rT.anchoredPosition = positions[position];
                position--;
            }
            float      targetPosX = positions[position].x;
            GameObject gO         = (rT) ? rT.gameObject : null;

            SimpleTween.Value(gO, currPosX, targetPosX, time).SetOnUpdate((pos) =>
            {
                if (this != null && rT)
                {
                    rT.anchoredPosition = new Vector2(pos, currPosY);
                }
            }).AddCompleteCallBack(completeCallBack);
        }
예제 #7
0
 public override void CancellTweensAndSequences()
 {
     SimpleTween.Cancel(gameObject, false);
     zoomSequence?.Break();
     explodeSequence?.Break();
     base.CancellTweensAndSequences();
 }
예제 #8
0
        public override void ShootHit(Action completeCallBack)
        {
            if (IsDestroyable)
            {
                hits++;
                if (MOData.protectionStateImages.Length > 0)
                {
                    int i = Mathf.Min(hits - 1, MOData.protectionStateImages.Length - 1);
                    GetComponent <SpriteRenderer>().sprite = MOData.protectionStateImages[i];
                }

                if (MOData.hitAnimPrefab)
                {
                    Creator.InstantiateAnimPrefabAtPosition(MOData.hitAnimPrefab, ParentCell.transform, transform.position, SortingOrder.MainExplode, true, null);
                }

                if (Protection <= 0)
                {
                    hitDestroySeq = new TweenSeq();

                    SetToFront(true);

                    hitDestroySeq.Add((callBack) => // play preexplode animation
                    {
                        SimpleTween.Value(gameObject, 0, 1, 0.050f).AddCompleteCallBack(() =>
                        {
                            if (callBack != null)
                            {
                                callBack();
                            }
                        });
                    });

                    hitDestroySeq.Add((callBack) =>
                    {
                        SoundMasterController.Instance.SoundPlayClipAtPos(0, MOData.privateClip, transform.position, 1.0f, null);
                        callBack();
                    });

                    hitDestroySeq.Add((callBack) =>
                    {
                        if (completeCallBack != null)
                        {
                            completeCallBack();
                        }
                        Destroy(gameObject);
                        callBack();
                    });

                    hitDestroySeq.Start();
                }
            }
            else
            {
                if (completeCallBack != null)
                {
                    completeCallBack();
                }
            }
        }
예제 #9
0
        /// <summary>
        /// Show simple zoom sequence on main object
        /// </summary>
        /// <param name="completeCallBack"></param>
        internal void Zoom(Action completeCallBack)
        {
            if (zoomSequence != null)
            {
                zoomSequence.Break();
            }

            zoomSequence = new TweenSeq();
            for (int i = 0; i < 2; i++)
            {
                zoomSequence.Add((callBack) =>
                {
                    SimpleTween.Value(gameObject, 1.0f, 1.2f, 0.07f).SetOnUpdate((float val) =>
                    {
                        SetLocalScale(val);
                    }).AddCompleteCallBack(() =>
                    {
                        callBack();
                    });
                });
                zoomSequence.Add((callBack) =>
                {
                    SimpleTween.Value(gameObject, 1.2f, 1.0f, 0.09f).SetOnUpdate((float val) =>
                    {
                        SetLocalScale(val);
                    }).AddCompleteCallBack(() =>
                    {
                        callBack();
                    });
                });
            }

            zoomSequence.Add((callBack) => { completeCallBack?.Invoke(); callBack(); });
            zoomSequence.Start();
        }
        internal void RefreshScoreStrip()
        {
            // refresh score text
            if (ScoreCount)
            {
                int newCount = BubblesPlayer.Instance.LevelScore;
                SimpleTween.Cancel(ScoreCount.gameObject, false);
                SimpleTween.Value(ScoreCount.gameObject, oldCount, newCount, 0.5f).SetOnUpdate((float val) =>
                {
                    oldCount        = (int)val;
                    ScoreCount.text = oldCount.ToString();
                });
            }

            //Refresh score strip
            if (!ScoreStrip)
            {
                return;
            }
            SimpleTween.Cancel(ScoreStrip.gameObject, false);
            float sizeX  = ScoreStrip.GetComponent <RectTransform>().sizeDelta.x;
            float amount = (BubblesPlayer.Instance.AverageScore > 0) ? (float)BubblesPlayer.Instance.LevelScore / (float)(BubblesPlayer.Instance.AverageScore) : 0;

            SimpleTween.Value(ScoreStrip.gameObject, ScoreStrip.fillAmount, amount, 0.3f).SetOnUpdate((float val) =>
            {
                ScoreStrip.fillAmount = val;
                if (yellowLight)
                {
                    yellowLight.anchoredPosition = new Vector2(sizeX * Mathf.Min(ScoreStrip.fillAmount, 0.93f), yellowLight.anchoredPosition.y);
                }
            }).SetEase(EaseAnim.EaseOutCubic);
        }
예제 #11
0
        public void StartFly(string score, Vector3 wPos)
        {
            scoreText.text = score;
            Canvas c = GameObject.Find("CanvasMain").GetComponent <Canvas>();

            rTransform.SetParent(c.transform);
            rTransform.anchoredPosition = Coordinats.WorldToCanvasCenterCenter(wPos, c);
            Vector2 pos  = rTransform.anchoredPosition;
            float   dist = Random.Range(300, 500);
            float   time = Random.Range(1.2f, 2.2f);

            SimpleTween.Value(gameObject, 0f, dist, time).SetOnUpdate((float val) =>
            {
                Vector2 npos = pos + new Vector2(0, val);
                if (this)
                {
                    rTransform.anchoredPosition = npos;
                }
            }).SetEase(EaseAnim.EaseOutCubic).
            SetDelay(Random.Range(0.0f, 0.1f)).
            AddCompleteCallBack(() =>
            {
                if (this)
                {
                    Destroy(gameObject);
                }
            });
        }
        /// <summary>
        /// Close panel
        /// </summary>
        /// <param name="panel"></param>
        public void CloseScrollPanel(bool destroy, Action completeCallBack)
        {
            RectTransform panel = GetComponent <RectTransform>();

            if (!panel)
            {
                return;
            }
            SetControlActivity(false);
            float startX = 1;
            float endX   = 0f;

            SimpleTween.Cancel(gameObject, true);
            SimpleTween.Value(gameObject, startX, endX, 0.2f).SetEase(EaseAnim.EaseInCubic).
            SetOnUpdate((float val) =>
            {
                transform.localScale = new Vector3(val, 1, 1);
            }).AddCompleteCallBack(() =>
            {
                if (destroy && this)
                {
                    Destroy(gameObject);
                }
                completeCallBack?.Invoke();
            });
        }
 private void OnDestroy()
 {
     BubblesPlayer.Instance.ChangeScoreEvent -= RefreshScoreStrip;
     BubblesPlayer.Instance.ChangeStarsEvent -= RefreshStars;
     SimpleTween.Cancel(ScoreCount.gameObject, false);
     SimpleTween.Cancel(ScoreStrip.gameObject, false);
 }
예제 #14
0
        internal void RefreshScoreStrip(int score, int averageScore)
        {
            // refresh score text
            if (ScoreCount)
            {
                int newCount = score;
                SimpleTween.Cancel(ScoreCount.gameObject, false);
                SimpleTween.Value(ScoreCount.gameObject, oldCount, newCount, 0.5f).SetOnUpdate((float val) =>
                {
                    oldCount        = (int)val;
                    ScoreCount.text = (MBoard.WinContr != null && MBoard.WinContr.ScoreTarget > 0) ? oldCount.ToString() + "/" + MBoard.WinContr.ScoreTarget : oldCount.ToString();
                    //ScoreCount.text = oldCount.ToString();
                });

                if (MatchBoard.GMode == GameMode.Play)
                {
                    ScoreComplete?.SetActive(MBoard.WinContr.HasScoreTarget && (score >= MBoard.WinContr.ScoreTarget));
                }
            }

            float amount = (averageScore > 0) ? (float)score / (float)(averageScore) : 0;

            if (ScoreStrip)
            {
                SimpleTween.Value(ScoreStrip.gameObject, ScoreStrip.fillAmount, amount, 0.3f).SetOnUpdate((float val) =>
                {
                    ScoreStrip.fillAmount = val;
                }).SetEase(EaseAnim.EaseOutCubic);
            }
        }
        public void UpdateLevelBkgMusik()
        {
            bool play = musicOn;

            AudioClip nClip = bkgMusic;

            if (nClip != aSbkg.clip)
            {
                aSbkg.Stop();
                aSbkg.Play();
                aSbkg.clip = nClip;
            }

            SimpleTween.Cancel(gameObject, true);

            if (play && aSbkg && !aSbkg.isPlaying)
            {
                aSbkg.volume = 0;
                aSbkg.Play();
                SimpleTween.Value(gameObject, 0.0f, volume, 3.5f).SetOnUpdate((float val) => { aSbkg.volume = val; }).
                AddCompleteCallBack(() => { });
            }

            else if (!play && aSbkg && aSbkg.isPlaying)
            {
                SimpleTween.Value(gameObject, volume, 0.0f, 2f).SetOnUpdate((float val) => { aSbkg.volume = val; }).
                AddCompleteCallBack(() => { aSbkg.Stop(); });
            }
        }
예제 #16
0
        public override void ExplodeArea(GridCell gCell, float delay, bool sequenced, bool showPrefab, bool fly, bool hitProtection, Action completeCallBack)
        {
            Destroy(gameObject);
            ParallelTween pt   = new ParallelTween();
            TweenSeq      expl = new TweenSeq();

            if (delay > 0)
            {
                expl.Add((callBack) =>
                {
                    SimpleTween.Value(gameObject, 0, 1, delay).AddCompleteCallBack(callBack);
                });
            }
            foreach (GridCell mc in GetArea(gCell).Cells) //parallel explode all cells
            {
                float t = 0;
                if (sequenced)
                {
                    float distance = Vector2.Distance(mc.transform.position, gCell.transform.position);
                    t = distance / 15f;
                }
                pt.Add((callBack) => { GridCell.ExplodeCell(mc, t, showPrefab, fly, hitProtection, callBack); });
            }

            expl.Add((callBack) => { pt.Start(callBack); });
            expl.Add((callBack) =>
            {
                completeCallBack?.Invoke(); callBack();
            });

            expl.Start();
        }
예제 #17
0
        /// <summary>
        /// If main object falldown fish swim to side
        /// </summary>
        /// <param name="completeCallBack"></param>
        /// <param name="showPrivateScore"></param>
        /// <param name="addPrivateScore"></param>
        /// <param name="privateScore"></param>
        public override void FallDownCollect(Action completeCallBack, bool showPrivateScore, bool addPrivateScore, int privateScore)
        {
            OverlayObject oO = GetComponent <OverlayObject>();

            if (oO && oO.OOData != null)
            {
                collectSequence = new TweenSeq();// Debug.Log("Fish collect " + ToString());
                float locScale = transform.localScale.x;
                oO.sRenderer.sprite = oO.OOData.GuiImage;

                collectSequence.Add((callBack) => // scale out
                {
                    SimpleTween.Value(gameObject, locScale, locScale * 1.2f, 0.20f).SetOnUpdate((float val) =>
                    {
                        transform.localScale = new Vector3(val, val, val);
                    }).AddCompleteCallBack(callBack);
                });

                collectSequence.Add((callBack) =>  //scale in
                {
                    SimpleTween.Value(gameObject, locScale * 1.2f, locScale, 0.20f).SetOnUpdate((float val) =>
                    {
                        transform.localScale = new Vector3(val, val, val);
                    }).AddCompleteCallBack(callBack);
                });

                collectSequence.Add((callBack) =>
                {
                    SoundMasterController.Instance.SoundPlayClipAtPos(0, oO.OOData.privateClip, null, transform.position, 1.0f);
                    GameObject aP = oO.OOData.hitAnimPrefab;
                    Transform rel = GetComponentInParent <GridCell>().transform;

                    SceneCurve path = (UnityEngine.Random.Range(0, 2) == 0) ? pathToLeft : pathToRight;
                    path.MoveAlongPath(gameObject, rel, path.Length / speed, 0, EaseAnim.EaseInOutSine, callBack);
                });

                collectSequence.Add((callBack) =>
                {
                    //   if (showPrivateScore) EffectsHolder.Instance.InstantiateScoreFlyerAtPosition(privateScore, transform.position, oO.OOData.privateFont);
                    //  if (addPrivateScore) BubblesPlayer.Instance.AddScore(privateScore);
                    if (completeCallBack != null)
                    {
                        completeCallBack();
                    }
                    DestroyImmediate(gameObject);
                    callBack();
                });

                collectSequence.Start();
            }
            else
            {
                if (completeCallBack != null)
                {
                    completeCallBack();
                }
            }
        }
예제 #18
0
 internal void MixJump(Vector3 pos, Action completeCallBack)
 {
     PhysStep = true;
     SimpleTween.Move(DynamicObject, transform.position, pos, 0.5f).AddCompleteCallBack(() =>
     {
         PhysStep = false;
         completeCallBack?.Invoke();
     }).SetEase(EaseAnim.EaseInSine);
 }
예제 #19
0
 /// <summary>
 /// Stop music audiosource
 /// </summary>
 public void StopMusic()
 {
     SimpleTween.Cancel(musicVolumeTween, true);
     if (musicSource && musicSource.isPlaying)
     {
         musicVolumeTween = SimpleTween.Value(gameObject, Volume * musicVolumeMult, 0.0f, 1f).SetOnUpdate((float val) => { musicSource.volume = val; }).
                            AddCompleteCallBack(() => { musicSource.Stop(); musicSource.volume = 0; }).ID;
     }
 }
예제 #20
0
 private void OnDestroy()
 {
     MPlayer.ChangeScoreEvent -= SetScore;
     MPlayer.ChangeStarsEvent -= SetStars;
     ts.Break();
     SimpleTween.Cancel(gameObject, false);
     SimpleTween.Cancel(starRightFull.gameObject, false);
     SimpleTween.Cancel(starLeftFull.gameObject, false);
     SimpleTween.Cancel(starMiddleFull.gameObject, false);
 }
예제 #21
0
        internal override void PlayExplodeAnimation(GridCell gCell, float delay, Action completeCallBack)
        {
            if (!gCell || explodePrefab == null)
            {
                completeCallBack?.Invoke();
            }
            // Debug.Log(name + "play explode animation");
            TweenSeq anim = new TweenSeq();

            if (delay > 0)
            {
                anim.Add((callBack) =>
                {
                    SimpleTween.Value(gameObject, 0, 1, delay).AddCompleteCallBack(callBack);
                });
            }

            anim.Add((callBack) =>
            {
                SimpleTween.Value(gameObject, 1, 1.5f, 0.2f).SetOnUpdate((float val) => { transform.localScale = gCell.transform.lossyScale * val; }).AddCompleteCallBack(callBack);
            });

            anim.Add((callBack) => // scale in, explode prefab
            {
                SimpleTween.Value(gameObject, 1.5f, 1.0f, 0.15f).SetOnUpdate((float val) => { transform.localScale = gCell.transform.lossyScale * val; }).AddCompleteCallBack(callBack);
                GameObject g           = Instantiate(explodePrefab);
                g.transform.position   = transform.position;
                g.transform.localScale = transform.localScale * 1.50f;
            });

            anim.Add((callBack) => // explode wave
            {
                MBoard.ExplodeWave(0, transform.position, 5, null);
                callBack();
            });

            anim.Add((callBack) => // sound
            {
                MSound.PlayClip(0, explodeClip);
                callBack();
            });

            anim.Add((callBack) => // delay
            {
                delayAction(gameObject, 0, callBack);
            });

            anim.Add((callBack) =>
            {
                completeCallBack?.Invoke();
                callBack();
            });

            anim.Start();
        }
예제 #22
0
 private void AlphaFadeIn(float tweenDelay, float tweenTime, EaseAnim ease, Action completeCallBack)
 {
     fObjectR.SetAlpha(0f);
     SimpleTween.Value(gameObject, 0f, 1.0f, tweenTime).SetEase(EaseAnim.EaseInCirc).SetOnUpdate((float val) => { fObjectR.SetAlphaK(val); }).
     SetDelay(tweenDelay).SetEase(ease).
     AddCompleteCallBack(() =>
     {
         completeCallBack?.Invoke();
         completeCallback_in?.Invoke();
     });
 }
예제 #23
0
        public override void Hit(GridCell gCell, Action completeCallBack)
        {
            // Debug.Log("hit: " + name);
            hits++;
            int protection = Protection;

            if (OData.protectionStateImages.Length > 0)
            {
                int i = Mathf.Min(hits - 1, OData.protectionStateImages.Length - 1);
                GetComponent <SpriteRenderer>().sprite = OData.protectionStateImages[i];
            }

            if (OData.hitAnimPrefab)
            {
                Creator.InstantiateAnimPrefab(OData.hitAnimPrefab, transform.parent, transform.position, SortingOrder.MainExplode, true, null);
            }

            MSound.PlayClip(0, OData.privateClip);

            if (protection == 0)
            {
                hitDestroySeq = new TweenSeq();

                SetToFront(true);

                hitDestroySeq.Add((callBack) => // play preexplode animation
                {
                    SimpleTween.Value(gameObject, 0, 1, 0.050f).AddCompleteCallBack(() =>
                    {
                        callBack();
                    });
                });

                hitDestroySeq.Add((callBack) =>
                {
                    TargetCollectEvent?.Invoke(GetID());
                    MSound.PlayClip(0, OData.privateClip, transform.position, null);
                    callBack();
                });

                hitDestroySeq.Add((callBack) =>
                {
                    completeCallBack?.Invoke();
                    Destroy(gameObject);
                    callBack();
                });

                hitDestroySeq.Start();
            }
            else
            {
                completeCallBack?.Invoke();
            }
        }
예제 #24
0
        /// <summary>
        /// If matched > = 4 cretate bomb from items
        /// </summary>
        /// <param name="bombCell"></param>
        /// <param name="completeCallBack"></param>
        internal void MoveToBomb(GridCell toCell, float delay, Action completeCallBack)
        {
            // Debug.Log("Move to bomb");

            SetToFront(true);
            //scale
            SimpleTween.Value(gameObject, gameObject.transform.localScale, gameObject.transform.localScale * 1.05f, 0.1f).SetOnUpdate((val) => { gameObject.transform.localScale = val; });

            // move
            SimpleTween.Move(gameObject, transform.position, toCell.transform.position, 0.25f).AddCompleteCallBack(completeCallBack).SetEase(EaseAnim.EaseInBack).SetDelay(delay);
        }
 private void OnDestroy()
 {
     if (gameObject)
     {
         SimpleTween.Cancel(gameObject, true);
     }
     if (booster != null)
     {
         booster.ChangeCountEvent -= ChangeCountEventHandler;
         booster.FooterClickEvent -= FooterClickEventHandler;
     }
 }
예제 #26
0
 private void SetScore(int score, int averScore)
 {
     if (ScoreCount)
     {
         int newCount = score;
         SimpleTween.Cancel(ScoreCount.gameObject, false);
         SimpleTween.Value(ScoreCount.gameObject, oldCount, newCount, 0.5f).SetOnUpdate((float val) =>
         {
             oldCount        = (int)val;
             ScoreCount.text = oldCount.ToString();
         });
     }
 }
예제 #27
0
 private void AnimateNewStar(GameObject star, Action completeCallBack)
 {
     SimpleTween.Value(star, 0, 1, 0.5f).SetOnUpdate((val) =>
     {
         if (star)
         {
             star.transform.localScale = new Vector3(val, val, val);
         }
     }).AddCompleteCallBack(() =>
     {
         completeCallBack?.Invoke();
     }).SetEase(EaseAnim.EaseOutBounce);
 }
예제 #28
0
 private void OnDestroy()
 {
     MPlayer.ChangeScoreEvent -= RefreshScoreStrip;
     MPlayer.ChangeStarsEvent -= RefreshStars;
     MPlayer.ChangeStarsEvent -= GetStarsSound;
     if (ScoreCount)
     {
         SimpleTween.Cancel(ScoreCount.gameObject, false);
     }
     if (ScoreStrip)
     {
         SimpleTween.Cancel(ScoreStrip.gameObject, false);
     }
 }
예제 #29
0
        public override void ShootAreaCollect(Action completeCallBack, bool showPrivateScore, bool addPrivateScore, bool decProtection, int privateScore)
        {
            collectSequence = new TweenSeq();
            SetToFront(true);

            collectSequence.Add((callBack) => // play preexplode animation
            {
                SimpleTween.Value(gameObject, 0, 1, 0.050f).AddCompleteCallBack(() =>
                {
                    if (MOData.collectAnimPrefab)
                    {
                        GameObject gA           = Instantiate(MOData.collectAnimPrefab);
                        gA.transform.localScale = transform.lossyScale;
                        gA.transform.position   = transform.position;
                    }
                    if (callBack != null)
                    {
                        callBack();
                    }
                });
            });

            collectSequence.Add((callBack) =>
            {
                SoundMasterController.Instance.SoundPlayClipAtPos(0, MOData.privateClip, transform.position, 1.0f, null);
                SetToFront(true);
                GameObject aP = MOData.hitAnimPrefab;
                callBack();
            });

            collectSequence.Add((callBack) =>
            {
                if (showPrivateScore && WithScore && MOData.scoreFlyerPrefab)
                {
                    InstantiateScoreFlyerAtPosition(MOData.scoreFlyerPrefab, privateScore, transform.position);
                }
                if (addPrivateScore && WithScore)
                {
                    BubblesPlayer.Instance.AddScore(privateScore);
                }
                if (completeCallBack != null)
                {
                    completeCallBack();
                }
                Destroy(gameObject);
                callBack();
            });

            collectSequence.Start();
        }
예제 #30
0
 /// <summary>
 /// show explode effect and collect match
 /// </summary>
 /// <param name="completeCallBack"></param>
 /// <param name="bomb"></param>
 /// <param name="bombType"></param>
 internal void Explode(GridCell gCell, bool showPrefab, bool fly, bool hitProtection, bool sideHitProtection, float delay, Action completeCallBack)
 {
     explodeSequence  = new TweenSeq();
     transform.parent = null;
     if (delay > 0)
     {
         explodeSequence.Add((callBack) => {
             SimpleTween.Value(gameObject, 0, 1, delay).AddCompleteCallBack(callBack);
         });
     }
     explodeSequence.Add((callBack) => { Collect(gCell, 0, showPrefab, fly, hitProtection, sideHitProtection, callBack); });
     explodeSequence.Add((callBack) => { completeCallBack?.Invoke(); callBack(); });
     explodeSequence.Start();
 }