public static void CreateWorkEffect(Transform mechanic, GameObject effectPrefab) {
            GameObject inst = Instantiate<GameObject>(effectPrefab);
            RectTransform effectRect = inst.GetComponent<RectTransform>();
            effectRect.SetParent(mechanic.parent, false);
            effectRect.anchoredPosition = mechanic.GetComponent<RectTransform>().anchoredPosition + new Vector2(0, 120);

            var colorData = AnimUtils.GetColorAnimData(Color.white, Color.white.ChangeAlpha(0), 2, EaseType.EaseInOutQuad, effectRect);
            var rotateData = new FloatAnimationData {
                StartValue = -40,
                EndValue = 40,
                Duration = 0.5f,
                EaseType = EaseType.EaseInOutQuad,
                OnStart = effectRect.UpdateZRotation(),
                OnUpdate = effectRect.UpdateZRotationTimed(),
                OnEnd = effectRect.UpdateZRotation(),
                Target = inst,
                AnimationMode = BosAnimationMode.PingPong
            };
            var posData = new Vector2AnimationData {
                StartValue = effectRect.anchoredPosition,
                EndValue = effectRect.anchoredPosition + new Vector2(0, 250),
                Duration = 2,
                EaseType = EaseType.EaseInOutQuad,
                OnStart = effectRect.UpdatePositionFunctor(),
                OnUpdate = effectRect.UpdatePositionTimedFunctor(),
                OnEnd = effectRect.UpdatePositionFunctor()
            };
            inst.GetOrAdd<ColorAnimator>().StartAnimation(colorData);
            inst.GetOrAdd<FloatAnimator>().StartAnimation(rotateData);
            inst.GetOrAdd<Vector2Animator>().StartAnimation(posData);
            Destroy(inst, 2);
        }
 // Start is called before the first frame update
 void Start()
 {
     this.enemyRunesManager = GameObject.Find("Enemy Runes").GetComponent <EnemyRunesManager>();
     transform.localScale   = new Vector3(0, 0, 1);
     Enemy.OnDeath         += () => {
         Destroy(this.gameObject);
     };
     Enemy.OnAttack += (target) => {
         float intensity      = 1;
         var   startPosition  = transform.position;
         var   targetPosition = new Vector3(target.Coordinates.x, target.Coordinates.y, startPosition.z);
         /// attack animation
         attackAnimation = StartCoroutine(AnimUtils.Animate(0.5f, (t) => {
             float lerp         = Mathf.Pow(Mathf.Cos(Mathf.PI / 2 + Mathf.PI * Mathf.Sqrt(t)), 4) * intensity;
             transform.position = Vector3.Lerp(startPosition, targetPosition, lerp);
             if (t == 1)
             {
                 attackAnimation = null;
             }
         }));
     };
     Enemy.OnHeal += (int heal) => {
         AnimUtils.AddDamageOrHealNumber(heal, transform.position, false);
     };
     Enemy.OnHit += (int damage) => {
         AnimUtils.AddDamageOrHealNumber(damage, transform.position, true);
     };
     Enemy.OnRuneTriggered += (message) => AnimUtils.ShowFloatingText(message, transform.position);
 }
 void HandleUsed()
 {
     GetComponent <SpriteRenderer>().sprite = usedAltar;
     GetComponent <Animator>().enabled      = false;
     GetComponentInChildren <ParticleSystem>()?.Stop();
     AnimUtils.ShowFloatingText("Upgraded first Rune!", transform.position);
 }
Exemple #4
0
 private void UpdateMegaTextObject()
 {
     if (manager != null)
     {
         var mgrLevel = Services.ManagerService.GetManagerEfficiencyRollbackLevel(manager.Id);
         if (mgrLevel.IsMega)
         {
             megaTextObject?.Activate();
             if (megaTextObject != null)
             {
                 var scaleData1 = AnimUtils.GetScaleAnimData(1, 1.2f, 0.5f, EaseType.EaseInOutQuad, megaTextObject.GetComponent <RectTransform>(), () => {
                     var scaleData2 = AnimUtils.GetScaleAnimData(1.2f, 1, 0.5f, EaseType.EaseInOutQuad, megaTextObject.GetComponent <RectTransform>());
                     megaTextObject.GetOrAdd <Vector2Animator>().StartAnimation(scaleData2);
                 });
                 megaTextObject.GetOrAdd <Vector2Animator>().StartAnimation(scaleData1);
             }
             ToggleAdditionalObjects(true);
         }
         else
         {
             megaTextObject?.Deactivate();
             ToggleAdditionalObjects(false);
         }
     }
     else
     {
         megaTextObject?.Deactivate();
         ToggleAdditionalObjects(false);
     }
 }
Exemple #5
0
 public void Start()
 {
     StartCoroutine(
         AnimUtils.LoopAction(
             GrowTime,
             (t) => CurrentSize = GrowthCurve.Evaluate(t) * Size
             )
         );
 }
Exemple #6
0
    private void ScaleTitle()
    {
        var data1 = AnimUtils.GetScaleAnimData(1, 1.1f, 0.4f, EaseType.EaseInOutSin, titleObject.GetComponent <RectTransform>(), () => {
            var data2 = AnimUtils.GetScaleAnimData(1.1f, 1, 0.4f, EaseType.EaseInOutSin, titleObject.GetComponent <RectTransform>());
            titleObject.GetOrAdd <Vector2Animator>().StartAnimation(data2);
        });

        titleObject.GetOrAdd <Vector2Animator>().StartAnimation(data1);
    }
Exemple #7
0
    IEnumerator ChangeFloors(int newDepth)
    {
        PlayerManager.inputEnabled = false;

        // let player movement animation finish
        // yield return new WaitForSeconds(0.25f);
        // disable player input
        var pManager = GameObject.Find("Player").GetComponent <PlayerManager>();
        // pManager.enabled = false;
        // shrink player
        var initialScale = pManager.transform.localScale;

        yield return(AnimUtils.Animate(0.5f, (t) => {
            var s = 1 - t;
            var newScale = new Vector3(s, s, 1);
            newScale.Scale(initialScale);
            pManager.transform.localScale = newScale;
        }));

        yield return(new WaitForSeconds(0.5f));

        bool runePieceAcquired = false;

        if (newDepth % 4 == 1)
        {
            var trigger = RuneGenerator.randomTrigger(player.shards);
            player.AddRuneShard(trigger);
            runePieceAcquired = true;
        }
        else if (newDepth % 4 == 3)
        {
            var action = RuneGenerator.randomAction(player.shards);
            player.AddRuneShard(action);
            runePieceAcquired = true;
        }

        depthPanel.GetComponentInChildren <TMPro.TMP_Text>().text = "Depth " + newDepth;
        depthPanel.transform.Find("RunePieceAcquired").gameObject.SetActive(runePieceAcquired);
        depthPanel.SetActive(true);
        yield return(null);

        Destroy(currentGrid);
        NewGrid(newDepth);
        yield return(new WaitForSeconds(2));

        depthPanel.SetActive(false);

        yield return(AnimUtils.Animate(0.5f, (t) => {
            var newScale = new Vector3(t, t, 1);
            newScale.Scale(initialScale);
            pManager.transform.localScale = newScale;
        }));

        PlayerManager.inputEnabled = true;
        // pManager.enabled = true;
    }
Exemple #8
0
 private void AnimateToggleIcon(RectTransform target)
 {
     foreach (var anim in ToggleIconAnimators)
     {
         anim.Stop();
     }
     target.gameObject.GetOrAdd <Vector2Animator>().StartAnimation(AnimUtils
                                                                   .GetScaleAnimData(1, 1.15f, 1, EaseType.EaseInOutQuad, target)
                                                                   .AsAnimationMode(BosAnimationMode.PingPong));
 }
    IEnumerator Pulse()
    {
        yield return(AnimUtils.Animate(0.5f, (t) => {
            var scale = 1 + Mathf.Sin(t * Mathf.PI) * 1.0f;
            transform.localScale = new Vector3(scale, scale, 1);
        }));

        transform.localScale = new Vector3(1, 1, 1);
        pulse = null;
    }
        /*
         * private void AnimateTextScroll() {
         *  textScroll.verticalNormalizedPosition = 1;
         *  textScrollAnimator.StartAnimation(new FloatAnimationData {
         *      StartValue = 1,
         *      EndValue = 0,
         *      Duration = 1,
         *      EaseType = EaseType.Linear,
         *      Target = textScroll.gameObject,
         *      OnStart = (v, o) => textScroll.verticalNormalizedPosition = v,
         *      OnUpdate = (v, t, o) => textScroll.verticalNormalizedPosition = v,
         *      OnEnd = (v, o) => textScroll.verticalNormalizedPosition = v
         *  });
         * }*/

        private IEnumerator FadeInBack()
        {
            yield return(new WaitForEndOfFrame());

            ColorAnimator colorAnimator = back.gameObject.GetOrAdd <ColorAnimator>();
            var           colorData     = AnimUtils.GetColorAnimData(Color.black.ChangeAlpha(0), Color.black.ChangeAlpha(0.74f), .1f, EaseType.EaseInOutQuad, back.GetComponent <RectTransform>(), BosAnimationMode.Single, () => {
                StartCoroutine(ShowGirlImpl());
            });

            colorAnimator.StartAnimation(colorData);
        }
Exemple #11
0
    private IEnumerator StartAnimationImpl(List <Vector2AnimationData> datas)
    {
        if (isWaitingForStart)
        {
            yield break;
        }
        if (IsStarted)
        {
            isWaitingForStart = true;
        }
        yield return(new WaitUntil(() => false == IsStarted));

        isWaitingForStart = false;

        if (!IsStarted)
        {
            //this.Datas = datas;
            Datas.Clear();
            foreach (var data in datas)
            {
                Datas.Add(new BosVector2AnimationInfo {
                    Data = data, Direction = BosAnimationDirection.Forward
                });
            }
            timer = 0f;
            easeFuncs.Clear();
            events.Clear();
            for (int i = 0; i < Datas.Count; i++)
            {
                easeFuncs.Add(AnimUtils.GetEaseFunc(Datas[i].Data.EaseType));
                List <AnimationEventInfo <Vector2> > dataEvents = new List <AnimationEventInfo <Vector2> >();
                if (Datas[i].Data.Events != null)
                {
                    foreach (AnimationEvent <Vector2> evt in Datas[i].Data.Events)
                    {
                        dataEvents.Add(new AnimationEventInfo <Vector2> {
                            Event       = evt,
                            IsCompleted = false
                        });
                    }
                }
                events.Add(dataEvents);
            }
            isStartedStatus.Clear();
            for (int i = 0; i < Datas.Count; i++)
            {
                isStartedStatus.Add(true);
            }
            Datas.ForEach(d => d.Data.OnStart?.Invoke(d.Data.StartValue, d.Data.Target));
        }
    }
Exemple #12
0
        public override void Setup(ViewData data)
        {
            base.Setup(data);

            ColorAnimator colorAnimator = background.gameObject.GetOrAdd <ColorAnimator>();

            colorAnimator.StartAnimation(
                AnimUtils.GetColorAnimData(
                    new Color(0, 0, 0, 0),
                    new Color(0, 0, 0, 0.83f),
                    0.3f,
                    EaseType.EaseInOutQuartic,
                    background.GetComponent <RectTransform>(),
                    BosAnimationMode.Single));
        }
Exemple #13
0
        private IEnumerator ShowMoveTextFailImpl(UnofficialTransferCashInfo info)
        {
            yield return(new WaitForSeconds(interval));

            GameObject textPrefab   = Services.ResourceService.Prefabs.GetPrefab("movetext");
            GameObject textInstance = Instantiate(textPrefab);

            Text text = textInstance.GetComponent <Text>();

            text.text = $"-{BosUtils.GetCurrencyString(info.LooseValue.ToCurrencyNumber(), "", "")}";
            //text.SetAllDirty();

            RectTransform textTransform = textInstance.GetComponent <RectTransform>();

            textTransform.SetParent(transform, false);
            textTransform.anchoredPosition = endObject.anchoredPosition;
            textTransform.localScale       = new Vector3(2, 2, 1);
            Color startColor = Color.red;
            Color endColor   = Color.red.ChangeAlpha(0.1f);
            var   colorData  = AnimUtils.GetColorAnimData(startColor, endColor, 1.5f, EaseType.EaseOutQuintic,
                                                          textTransform, BosAnimationMode.Single,
                                                          () => { });
            var positionData = new Vector2AnimationData()
            {
                StartValue = textTransform.anchoredPosition,
                EndValue   = textTransform.anchoredPosition - new Vector2(0, 300),
                Duration   = 1.5f,
                EaseType   = EaseType.EaseOutQuintic,
                Target     = textInstance,
                OnStart    = (p, o) => textTransform.anchoredPosition = p,
                OnUpdate   = (p, t, o) => textTransform.anchoredPosition = p,
                OnEnd      = (p, o) => {
                    textTransform.anchoredPosition = p;
                    Destroy(textInstance);
                }
            };
            ColorAnimator   colorAnimator    = textInstance.GetComponent <ColorAnimator>();
            Vector2Animator positionAnimator = textInstance.GetComponent <Vector2Animator>();

            colorAnimator.StartAnimation(colorData);
            positionAnimator.StartAnimation(positionData);
            Sounds.PlayOneShot(SoundName.slotFail);
            ViewService.ShowDelayed(ViewType.TransferWarningView, 0.5f, new ViewData {
                ViewDepth = ViewService.NextViewDepth,
                UserData  = info.LooseValue
            });
            animObjects.Add(textInstance);
        }
Exemple #14
0
    IEnumerator DoIntro()
    {
        yield return(AnimUtils.Animate(1f, t => {
            var s = 100 - 99 * t;
            text.rectTransform.localScale = new Vector3(s, s, 1);
        }));

        yield return(new WaitForSeconds(2));

        yield return(AnimUtils.Animate(2, t => {
            var s = 1 - t;
            text.rectTransform.localScale = new Vector3(s, s, 1);
            this.GetComponent <Image>().color = new Color(0, 0, 0, s);
        }));

        Destroy(this.gameObject);
    }
Exemple #15
0
 private void ToggleAdditionalObjects(bool isActive)
 {
     foreach (var obj in additionalMegaObjects)
     {
         if (isActive)
         {
             obj.Activate();
             ColorAnimator colorAnimator = obj.GetComponent <ColorAnimator>();
             colorAnimator?.StartAnimation(AnimUtils.GetColorAnimData(new Color(1, 1, 1, 0.5f), new Color(1, 1, 1, 0), 2,
                                                                      EaseType.EaseInOutQuad, obj.GetComponent <RectTransform>(), BosAnimationMode.PingPong));
         }
         else
         {
             obj.Deactivate();
         }
     }
 }
Exemple #16
0
    public IEnumerator FeedPlayer(PlayerController player, Food food)
    {
        if (food.Eaten)
        {
            yield break;
        }
        food.Eaten = true;
        player.Grow(food.Mass);
        float initialScale = food.transform.localScale.x;

        yield return(AnimUtils.LoopAction(food.FeedTime, (time) =>
        {
            food.transform.localScale = Vector3.one * (1 - time) * (1 - time) * initialScale;
        }));

        Destroy(food.gameObject);
    }
Exemple #17
0
    void Start()
    {
        Player                  = Grid.instance.Player;
        Player.OnHit           += HandlePlayerHit;
        Player.OnHeal          += HandleHeal;
        Player.OnRuneTriggered += (message) => AnimUtils.ShowFloatingText(message, transform.position);
        transform.position      = new Vector3(Player.Coordinates.x, Player.Coordinates.y, 0);
        SoundEffectSource       = GameObject.Find("Player").GetComponent <AudioSource>();

        attackEffects = new List <AudioClip>(new AudioClip[] {
            (AudioClip)Resources.Load("Sounds/thwack-01"),
            (AudioClip)Resources.Load("Sounds/thwack-02"),
            (AudioClip)Resources.Load("Sounds/thwack-04"),
            (AudioClip)Resources.Load("Sounds/thwack-06"),
            (AudioClip)Resources.Load("Sounds/thwack-07"),
            (AudioClip)Resources.Load("Sounds/thwack-08"),
            (AudioClip)Resources.Load("Sounds/thwack-09"),
        });
    }
Exemple #18
0
    IEnumerator GameOverScreen()
    {
        GameOverContainer.SetActive(true);
        GameOverText.gameObject.SetActive(false);
        var replay     = GameOverContainer.transform.Find("Replay").gameObject;
        var backToMain = GameOverContainer.transform.Find("Back to Main").gameObject;

        replay.SetActive(false);
        backToMain.SetActive(false);

        yield return(AnimUtils.Animate(1f, (t) => {
            GameOverContainer.GetComponent <Image>().color = new Color(0, 0, 0, t * 0.9f);
        }));

        yield return(new WaitForSeconds(0.25f));

        if (player.newHighscoreReached == null)
        {
            // hasn't been computed yet; compute it for the first time, and store it
            player.newHighscoreReached = player.score > Player.HIGHSCORE;
            Player.HIGHSCORE           = player.score;
        }
        GameOverText.text = $"<b><color=red>You succumb to insanity...</color></b>\nScore: {player.score}\nHigh Score: {Player.HIGHSCORE}";
        if (player.newHighscoreReached == true)
        {
            GameOverText.text += $"\nNew high score!";
        }

        GameOverText.gameObject.SetActive(true);
        yield return(AnimUtils.Animate(1, (t) => {
            GameOverText.color = new Color(1, 1, 1, t);
        }));

        yield return(new WaitForSeconds(0.25f));

        replay.SetActive(true);

        yield return(new WaitForSeconds(0.25f));

        backToMain.SetActive(true);
    }
        private void MoveIn()
        {
            CanvasGroup canvasGroup = background.GetComponent <CanvasGroup>();

            panelColorAnimator.StartAnimation(AnimUtils.GetColorAnimData(panel.color.ChangeAlpha(0), panel.color.ChangeAlpha(.5f), .1f,
                                                                         EaseType.Linear, panel.GetComponent <RectTransform>(), BosAnimationMode.Single, () => {
                backAlphaAnimator.StartAnimation(new FloatAnimationData {
                    StartValue    = 0,
                    EndValue      = 1,
                    Duration      = 0.15f,
                    AnimationMode = BosAnimationMode.Single,
                    EaseType      = EaseType.EaseInOutQuad,
                    Target        = background.gameObject,
                    OnStart       = canvasGroup.UpdateAlphaFunctor(),
                    OnUpdate      = canvasGroup.UpdateAlphaTimedFunctor(),
                    OnEnd         = canvasGroup.UpdateAlphaFunctor()
                });
                backScaleAnimator.StartAnimation(background.ConstructScaleAnimationData(new Vector3(1.5f, 1.5f, 1), new Vector3(1, 1, 1), 0.15f,
                                                                                        BosAnimationMode.Single, EaseType.EaseInOutQuad));
            }));
        }
Exemple #20
0
        public void Setup(TutorialFingerData data)
        {
            Data = data;
            GetComponent <RectTransform>().anchoredPosition = data.Position;

            if (data.IsTooltipVisible)
            {
                tooltipParent.gameObject.Activate();
                tooltipText.text = data.TooltipText;
                SetupTooltipLayout(data);
                var colorData = AnimUtils.GetColorAnimData(tooltipText.color.ChangeAlpha(0), tooltipText.color, 0.3f, EaseType.EaseInOutQuad, tooltipText.GetComponent <RectTransform>(), BosAnimationMode.Single);
                tooltipText.gameObject.GetOrAdd <ColorAnimator>().StartAnimation(colorData);
            }
            else
            {
                tooltipParent.gameObject.Deactivate();
            }

            if (Data.Timeout > 0f)
            {
                StartCoroutine(RemoveAfterTimeout(Data.Timeout));
            }
        }
        public void SetBadgeCount(int count)
        {
            var TabNotifyText = tabView.CustomView.FindViewById <TextView>(Resource.Id.txtTabNotification);

            if (count == Convert.ToInt16(TabNotifyText.Text))
            {
                return;
            }
            badge = count;
            if (badge > 0)
            {
                TabNotifyText.Visibility = ViewStates.Visible;
                AnimUtils.ShowAnimationWithAlpha(TabNotifyText, () => {
                    TabNotifyText.Text = $"{count}";
                });
                //tabView.CustomView.FindViewById<TextView>(Resource.Id.txtTabNotification).Visibility = ViewStates.Visible;
            }
            else
            {
                TabNotifyText.Text       = "0";
                TabNotifyText.Visibility = ViewStates.Gone;
            }
        }
        private void MoveOut()
        {
            CanvasGroup canvasGroup = background.GetComponent <CanvasGroup>();

            backAlphaAnimator.StartAnimation(new FloatAnimationData {
                StartValue = 1,
                EndValue   = 0,
                Duration   = 0.1f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = background.gameObject,
                OnStart    = canvasGroup.UpdateAlphaFunctor(),
                OnUpdate   = canvasGroup.UpdateAlphaTimedFunctor(),
                OnEnd      = canvasGroup.UpdateAlphaFunctor(() => {
                    panelColorAnimator.StartAnimation(
                        AnimUtils.GetColorAnimData(
                            panel.color.ChangeAlpha(.5f),
                            panel.color.ChangeAlpha(0),
                            0.1f,
                            EaseType.EaseInOutQuad,
                            panel.GetComponent <RectTransform>()));
                })
            });
        }
Exemple #23
0
        private void CreateParticles()
        {
            GameObject    inst = Instantiate(particlesPrefab, transform, false);
            RectTransform particlesTransform = inst.GetComponent <RectTransform>();

            particlesTransform.anchoredPosition = new Vector2(131, -147);
            var basePlayerView = FindObjectOfType <BasePlayerView>();

            if (!basePlayerView)
            {
                Destroy(inst);
            }
            else
            {
                particlesTransform.SetParent(basePlayerView.progressParticles.transform.parent, true);
                particlesTransform.GetComponent <BezierMover>().Setup(AnimUtils.GetBezierQubicData(particlesTransform.GetComponent <RectTransformPositionObject>(),
                                                                                                   start: particlesTransform.anchoredPosition,
                                                                                                   end: basePlayerView.progressParticles.GetComponent <RectTransform>().anchoredPosition,
                                                                                                   interval: 1.5f,
                                                                                                   onComplete: (go) => {
                    Services.Execute(() => Destroy(inst), 0.5f);
                }));
            }
        }
        private void Scale()
        {
            var scaleData = AnimUtils.GetScaleAnimData(0.01f, 1f, 0.2f, EaseType.EaseInOutQuartic, GetComponent <RectTransform>());

            gameObject.GetOrAdd <Vector2Animator>().StartAnimation(scaleData);
        }
        private IEnumerator EmitEffectImpl(GameObject prefab, int count, RectTransform startPoint, RectTransform endPoint, string rewardType, int rewardIndex)
        {
            float interval           = 1;
            float controlPointLength = 400;

            for (int i = 0; i < count; i++)
            {
                yield return(new WaitForSeconds(0.06f));

                GameObject    instance      = Instantiate <GameObject>(prefab);
                RectTransform rectTransform = instance.GetComponent <RectTransform>();
                rectTransform.SetParent(transform, false);
                rectTransform.anchoredPosition = startPoint.anchoredPosition;

                BezierMover mover      = instance.GetComponent <BezierMover>();
                BezierData  bezierData = null;
                Vector2     diff       = endPoint.anchoredPosition - startPoint.anchoredPosition;
                if (rewardType == "playercash")
                {
                    bezierData = new BezierData {
                        Interval = interval,
                        Type     = BezierType.Quadratic,
                        Target   = instance.GetComponent <RectTransformPositionObject>(),
                        Points   = new Vector3[] {
                            startPoint.anchoredPosition,
                            diff * 0.5f + diff.normalized.Orthogonal() * UnityEngine.Random.Range(-controlPointLength, 0),
                            endPoint.anchoredPosition
                        },
                        OnComplete = g => Destroy(g)
                    };
                }
                else if (rewardType == "companycash")
                {
                    bezierData = new BezierData {
                        Interval = interval,
                        Type     = BezierType.Quadratic,
                        Target   = instance.GetComponent <RectTransformPositionObject>(),
                        Points   = new Vector3[] {
                            startPoint.anchoredPosition,
                            diff * 0.5f + diff.normalized.Orthogonal() * UnityEngine.Random.Range(0, controlPointLength),
                            endPoint.anchoredPosition
                        },
                        OnComplete = g => Destroy(g)
                    };
                }
                else
                {
                    bezierData = new BezierData {
                        Interval = interval,
                        Type     = BezierType.Quadratic,
                        Target   = instance.GetComponent <RectTransformPositionObject>(),
                        Points   = new Vector3[] {
                            startPoint.anchoredPosition,
                            diff * 0.5f + diff.normalized.Orthogonal() * UnityEngine.Random.Range(-controlPointLength * 0.5f, controlPointLength * 0.5f),
                            endPoint.anchoredPosition
                        },
                        OnComplete = g => Destroy(g)
                    };
                }

                mover.Setup(bezierData);

                ColorAnimator colorAnimator = instance.GetComponent <ColorAnimator>();
                colorAnimator.StartAnimation(AnimUtils.GetColorAnimData(new Color(1, 1, 1, 1f), Color.white, 0.3f,
                                                                        EaseType.EaseInOutQuad, rectTransform, BosAnimationMode.Single, () => {
                    colorAnimator.StartAnimation(AnimUtils.GetColorAnimData(Color.white, new Color(1, 1, 1, 1f), 0.4f,
                                                                            EaseType.EaseInOutQuad, rectTransform,
                                                                            BosAnimationMode.Single, () => { }));
                }));

                Vector3Animator scaleAnimator = instance.GetComponent <Vector3Animator>();
                scaleAnimator.StartAnimation(new Vector3AnimationData {
                    AnimationMode = BosAnimationMode.PingPong,
                    Duration      = 0.2f,
                    EaseType      = EaseType.EaseInOutQuad,
                    StartValue    = new Vector3(1, 1, 1),
                    EndValue      = new Vector3(2f, 2f, 1),
                    Target        = instance,
                    OnStart       = rectTransform.UpdateScaleFunctor(),
                    OnUpdate      = rectTransform.UpdateScaleTimedFunctor(),
                    OnEnd         = rectTransform.UpdateScaleFunctor()
                });

                FloatAnimator rotationAnimator = instance.GetComponent <FloatAnimator>();
                rotationAnimator.StartAnimation(new FloatAnimationData {
                    Duration      = interval,
                    AnimationMode = BosAnimationMode.Single,
                    EaseType      = EaseType.Linear,
                    StartValue    = 0,
                    EndValue      = 720,
                    Target        = instance,
                    OnStart       = rectTransform.UpdateZRotation(),
                    OnUpdate      = rectTransform.UpdateZRotationTimed(),
                    OnEnd         = rectTransform.UpdateZRotation()
                });
            }

            yield return(new WaitForSeconds(interval - 0.1f));

            CompleteRewardIndex(rewardIndex);
        }
 private void ScaleOut()
 => gameObject.GetOrAdd <Vector2Animator>().StartAnimation(
     AnimUtils.GetScaleAnimData(0.95f, 1, 0.15f, EaseType.EaseInOutCubic, gameObject.GetComponent <RectTransform>())
     );
Exemple #27
0
        private void PrepareAnimationObject(GameObject obj)
        {
            RectTransform trs   = obj.GetComponent <RectTransform>();
            Image         image = obj.GetComponent <Image>();

            Vector3Animator             scaleAnimator  = obj.GetComponent <Vector3Animator>();
            ColorAnimator               colorAnimator  = obj.GetComponent <ColorAnimator>();
            BezierMover                 mover          = obj.GetComponent <BezierMover>();
            RectTransformPositionObject positionObject = obj.GetComponent <RectTransformPositionObject>();

            Vector3AnimationData scaleData = new Vector3AnimationData()
            {
                AnimationMode = BosAnimationMode.Single,
                Duration      = interval * 0.5f,
                EaseType      = EaseType.EaseInOutQuad,
                EndValue      = Vector3.one * 1.25f,
                Events        = null,
                StartValue    = Vector3.one,
                Target        = obj,
                OnStart       = (s, o) => trs.localScale = s,
                OnUpdate      = (s, t, o) => trs.localScale = s,
                OnEnd         = (s, o) => {
                    trs.localScale = s;

                    Vector3AnimationData scale2Data = new Vector3AnimationData()
                    {
                        StartValue = Vector3.one * 1.25f,
                        EndValue   = Vector3.one,
                        Duration   = interval * 0.5f,
                        EaseType   = EaseType.EaseInOutQuad,
                        Target     = obj,
                        OnStart    = (s2, o2) => trs.localScale = s2,
                        OnUpdate   = (s2, t2, o2) => trs.localScale = s2,
                        OnEnd      = (s2, o2) => trs.localScale = s2
                    };
                    scaleAnimator.StartAnimation(scale2Data);

                    ColorAnimationData colorData = new ColorAnimationData()
                    {
                        StartValue = Color.white,
                        EndValue   = new Color(1, 1, 1, 0.2f),
                        Duration   = interval * 0.5f,
                        EaseType   = EaseType.EaseInOutQuad,
                        Target     = obj,
                        OnStart    = (c2, o2) => image.color = c2,
                        OnUpdate   = (c2, t2, o2) => image.color = c2,
                        OnEnd      = (c2, o2) => image.color = c2
                    };

                    colorAnimator.StartAnimation(colorData);
                }
            };

            scaleAnimator.StartAnimation(scaleData);

            var bezierData = AnimUtils.GetBizerQuadData(positionObject,
                                                        startObject.anchoredPosition,
                                                        endObject.anchoredPosition,
                                                        interval * 1.1f, (go) => Destroy(go),
                                                        linerFactor,
                                                        orthoFactor);

            mover.Setup(bezierData);
        }
    public IEnumerator actionTaken(bool delay, Action then)
    {
        _elapsedTurns += 1;
        EnqueueEvent(new GameEvent(GameEvent.EventType.TURN_ELAPSED));

        var turnWaitDuration = delay ? 0.25f : 0;

        // wait 0.2f seconds
        yield return(new WaitForSeconds(turnWaitDuration));

        ClearEventQueue();

        Entities.FindAll(e => e.Dead).ForEach(e => {
            e.GoDie();

            Rune rune = e.RuneList[0];
            if (rune != null)
            {
                AnimUtils.ShowFloatingText("Rune Shard Recovered!", new Vector3(e.Coordinates.x, e.Coordinates.y, 0));
                if (UnityEngine.Random.value > 0.5f)
                {
                    Player.AddRuneShard(rune.action);
                }
                else
                {
                    Player.AddRuneShard(rune.trigger);
                }
            }

            this.EnqueueEvent(new GameEvent(GameEvent.EventType.ENEMY_DEAD));
        });

        Entities.RemoveAll(e => e.Dead);

        bool enemiesMoved = false;

        foreach (var e in Enemies)
        {
            e.TakeTurn();
            // if (e.isVisible) {
            enemiesMoved = true;
            //   yield return new WaitForSeconds(turnWaitDuration);
            // }
        }

        ClearEventQueue();

        // We want to prevent movement scumming, so if the player hasn't been hit in 75 turns, spawn some enemies
        if (++Player.TurnsSinceHitByEnemy >= 200)
        {
            var positions = EnumerateCircle(Player.Coordinates, 3)
                            .Where(pos => canOccupy(pos))
                            .ToList()
                            .Shuffle()
                            .Take(2);

            foreach (var pos in positions)
            {
                Enemy enemy = new Enemy0(pos);
                AddEntity(enemy);
                OnEntityAdded(enemy);
            }

            Player.TurnsSinceHitByEnemy = 0;
        }

        if (enemiesMoved)
        {
            yield return(new WaitForSeconds(turnWaitDuration));
        }

        /// Move onto the next floor!
        if (Tiles[Player.Coordinates.x, Player.Coordinates.y] is Downstairs)
        {
            Player.score += 10;
            OnCleared?.Invoke();
        }

        then();
    }
Exemple #29
0
 public T GetAnimParameter <T>(string param)
 {
     return((T)AnimUtils.GetParameter <T>(Animator, param));
 }
Exemple #30
0
 public void SetAnimParameter(string param, object value)
 {
     AnimUtils.SetParameter(Animator, param, value, AnimParams.IsTrigger(param));
 }