Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        private void UpdateExpProgress()
        {
            float startValue = expProgressImage.fillAmount;
            float endValue   = ResourceService.PersonalImprovements.GetStatusLevelProgress(Player.StatusPoints); //Services.PlayerService.ExpProgress01;

            if (startValue > endValue)
            {
                startValue = 0;
            }

            if (endValue != startValue)
            {
                float duration          = Mathf.Abs(endValue - startValue) * 4f;
                FloatAnimationData data = new FloatAnimationData {
                    StartValue    = startValue,
                    EndValue      = endValue,
                    Duration      = duration,
                    EaseType      = EaseType.EaseInOutQuad,
                    Target        = expProgressImage.gameObject,
                    AnimationMode = BosAnimationMode.Single,
                    OnStart       = (val, go) => {
                        expProgressImage.fillAmount = val;
                        progressParticles.Activate();
                    },
                    OnUpdate = (val, t, go) => expProgressImage.fillAmount = val,
                    OnEnd    = (val, go) => {
                        expProgressImage.fillAmount = val;
                        Services.Execute(() => progressParticles.Deactivate(), 0.5f);
                    }
                };
                expProgressImage.GetComponent <FloatAnimator>().StartAnimation(data);
            }
        }
Ejemplo n.º 3
0
        private IEnumerator MoveInPlaceImpl(MechanicAnimObject mechanicView, TempMechanicInfo info)
        {
            yield return(new WaitForSeconds(.2f));

            Vector3Animator scaleAnimator    = mechanicView.gameObject.GetOrAdd <Vector3Animator>();
            Vector2Animator positionAnimator = mechanicView.gameObject.GetOrAdd <Vector2Animator>();
            FloatAnimator   rotateAnimator   = mechanicView.gameObject.GetOrAdd <FloatAnimator>();

            RectTransform rectTransform = mechanicView.GetComponent <RectTransform>();

            Vector2 startPosition = rectTransform.anchoredPosition;
            Vector2 endPosition   = mechanicView.leftPosition;

            Vector2AnimationData positionData = new Vector2AnimationData {
                StartValue = startPosition,
                EndValue   = endPosition,
                Duration   = .3f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = rectTransform.UpdatePositionFunctor(),
                OnUpdate   = rectTransform.UpdatePositionTimedFunctor(),
                OnEnd      = rectTransform.UpdatePositionFunctor(() => {
                    Debug.Log($"setup temp mechanic on state => {info.State}");
                    mechanicView.Setup(info);
                    mechanicViews.Add(mechanicView.TempMechanic.Id, mechanicView);
                    animatedViews.Remove(mechanicView.TempMechanic.Id);
                })
            };
            Vector3AnimationData scaleData = new Vector3AnimationData {
                StartValue = 2f * Vector3.one,
                EndValue   = Vector3.one,
                Duration   = .3f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = rectTransform.UpdateScaleFunctor(),
                OnUpdate   = rectTransform.UpdateScaleTimedFunctor(),
                OnEnd      = rectTransform.UpdateScaleFunctor()
            };

            FloatAnimationData rotateData = new FloatAnimationData {
                StartValue = rectTransform.localRotation.eulerAngles.z,
                EndValue   = 0,
                Duration   = .3f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = rectTransform.UpdateZRotation(),
                OnUpdate   = rectTransform.UpdateZRotationTimed(),
                OnEnd      = rectTransform.UpdateZRotation()
            };

            positionAnimator.StartAnimation(positionData);
            scaleAnimator.StartAnimation(scaleData);
            rotateAnimator.StartAnimation(rotateData);
        }
Ejemplo n.º 4
0
        private void SpawnCoinObject(int coin)
        {
            GameObject coinObject = Instantiate <GameObject>(coinPrefab);
            var        coinView   = coinObject.GetComponent <SplitLinerCoin>();

            coinView.CoinText.text = $"+{coin}";

            RectTransform coinRectTransform = coinObject.GetComponent <RectTransform>();

            coinRectTransform.SetParent(canvasTransform, false);

            coinRectTransform.anchoredPosition = Services?.ViewService.Utils.WorldPosToCanvasPos(Camera.main, canvas, playerTransform.position) ?? Vector2.zero;

            FloatAnimator   floatAnimator = coinObject.GetComponent <FloatAnimator>();
            Vector3Animator vec3Animator  = coinObject.GetComponent <Vector3Animator>();

            CanvasGroup canvasGroup = coinObject.GetComponent <CanvasGroup>();

            FloatAnimationData alphaAnimData = new FloatAnimationData {
                StartValue    = 1,
                EndValue      = 0,
                Duration      = 0.4f,
                AnimationMode = BosAnimationMode.Single,
                EaseType      = EaseType.EaseInOutQuad,
                Target        = coinObject,
                OnStart       = (v, o) => canvasGroup.alpha = v,
                OnUpdate      = (v, t, o) => canvasGroup.alpha = v,
                OnEnd         = (v, o) => {
                    canvasGroup.alpha = v;
                    Destroy(coinObject);
                }
            };

            Vector3AnimationData scaleAnimData = new Vector3AnimationData {
                StartValue    = Vector3.one,
                EndValue      = 1.4f * Vector3.one,
                Duration      = 0.3f,
                AnimationMode = BosAnimationMode.Single,
                EaseType      = EaseType.EaseInOutQuad,
                Target        = coinObject,
                OnStart       = (s, o) => coinRectTransform.localScale = s,
                OnUpdate      = (s, t, o) => coinRectTransform.localScale = s,
                OnEnd         = (s, o) => {
                    coinRectTransform.localScale = s;
                    floatAnimator.StartAnimation(alphaAnimData);
                }
            };

            vec3Animator.StartAnimation(scaleAnimData);
        }
Ejemplo n.º 5
0
        private void SpawnPercentText(int count)
        {
            GameObject    textInstance      = Instantiate <GameObject>(percentPrefab);
            RectTransform textRectTransform = textInstance.GetComponent <RectTransform>();

            textRectTransform.SetParent(canvasTransform, false);

            textRectTransform.anchoredPosition = Services?.ViewService.Utils.WorldPosToCanvasPos(Camera.main, canvas, playerTransform.position) ?? Vector2.zero;

            TMPro.TextMeshProUGUI txt = textRectTransform.GetComponent <TMPro.TextMeshProUGUI>();
            txt.text = $"+{count}%";

            FloatAnimator   floatAnimator = txt.GetComponent <FloatAnimator>();
            Vector3Animator vec3Animator  = txt.GetComponent <Vector3Animator>();

            FloatAnimationData alphaAnimData = new FloatAnimationData {
                StartValue    = 1,
                EndValue      = 0,
                Duration      = 0.4f,
                AnimationMode = BosAnimationMode.Single,
                EaseType      = EaseType.EaseInOutQuad,
                Target        = textRectTransform.gameObject,
                OnStart       = (a, o) => {
                    txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, a);
                },
                OnUpdate = (a, t, o) => txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, a),
                OnEnd    = (a, o) => {
                    txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, a);
                    Destroy(textRectTransform.gameObject);
                }
            };

            Vector3AnimationData scaleAnimData = new Vector3AnimationData {
                StartValue    = Vector3.one,
                EndValue      = 1.4f * Vector3.one,
                Duration      = 0.3f,
                AnimationMode = BosAnimationMode.Single,
                EaseType      = EaseType.EaseInOutQuad,
                Target        = textRectTransform.gameObject,
                OnStart       = (s, o) => textRectTransform.localScale = s,
                OnUpdate      = (s, t, o) => textRectTransform.localScale = s,
                OnEnd         = (s, o) => {
                    textRectTransform.localScale = s;
                    floatAnimator.StartAnimation(alphaAnimData);
                }
            };

            vec3Animator.StartAnimation(scaleAnimData);
        }
Ejemplo n.º 6
0
        private IEnumerator SetupImpl(int elementId)
        {
            yield return(new WaitUntil(() => itemList.IsLoaded));

            var endValue = GetEndValue(elementId);

            var scrollData = new FloatAnimationData {
                StartValue    = scrollRect.content.anchoredPosition.y,
                EndValue      = endValue,
                Duration      = 1,
                AnimationMode = BosAnimationMode.Single,
                EaseType      = EaseType.EaseInOutQuad,
                Target        = scrollRect.gameObject,
                OnStart       = (v, o) => scrollRect.content.anchoredPosition = new Vector2(0, v),
                OnUpdate      = (v, t, o) => scrollRect.content.anchoredPosition = new Vector2(0, v),
                OnEnd         = (v, o) => scrollRect.content.anchoredPosition = new Vector2(0, v),
            };

            animator.StartAnimation(scrollData);
        }
Ejemplo n.º 7
0
        private IEnumerator SetupImpl(StoreItemSection section)
        {
            yield return(new WaitUntil(() => asyncLoader.gameObject.activeSelf && asyncLoader.gameObject.activeInHierarchy));

            asyncLoader.ActivateItems(() => {
                print("activated completed");
                var scrollData = new FloatAnimationData {
                    StartValue    = scrollRect.verticalNormalizedPosition,
                    EndValue      = sectionPoints[section],
                    Duration      = GetAnimationInterval(GetDistance(section)),
                    AnimationMode = BosAnimationMode.Single,
                    EaseType      = EaseType.EaseInOutQuad,
                    Target        = scrollRect.gameObject,
                    OnStart       = (v, o) => scrollRect.verticalNormalizedPosition = v,
                    OnUpdate      = (v, t, o) => scrollRect.verticalNormalizedPosition = v,
                    OnEnd         = (v, o) => scrollRect.verticalNormalizedPosition = v
                };
                animator.StartAnimation(scrollData);
            });
        }
Ejemplo n.º 8
0
        private void AnimateAuditorObject(SecretaryAnimObject mechanicView, Auditor info)
        {
            Vector3Animator scaleAnimator    = mechanicView.gameObject.GetOrAdd <Vector3Animator>();
            Vector2Animator positionAnimator = mechanicView.gameObject.GetOrAdd <Vector2Animator>();
            ColorAnimator   colorAnimator    = mechanicView.gameObject.GetOrAdd <ColorAnimator>();
            FloatAnimator   rotateAnimator   = mechanicView.gameObject.GetOrAdd <FloatAnimator>();


            RectTransform rectTransform = mechanicView.GetComponent <RectTransform>();
            Image         image         = mechanicView.GetComponent <Image>();

            Vector2 endOffset = Random.insideUnitCircle.normalized * 300;

            if (endOffset.y < 0)
            {
                endOffset.y = -endOffset.y;
            }
            Vector2 startPosition = buyButton.GetComponent <RectTransform>().anchoredPosition;
            Vector2 endPosition   = startPosition + endOffset;

            Vector2AnimationData positionData = new Vector2AnimationData {
                StartValue = startPosition,
                EndValue   = endPosition,
                Duration   = 0.3f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = rectTransform.UpdatePositionFunctor(),
                OnUpdate   = rectTransform.UpdatePositionTimedFunctor(),
                OnEnd      = rectTransform.UpdatePositionFunctor(() => {
                    StartCoroutine(MoveInPlaceImpl(mechanicView, info));
                })
            };

            Vector3AnimationData scaleData = new Vector3AnimationData {
                StartValue = Vector3.one,
                EndValue   = 2f * Vector3.one,
                Duration   = .3f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = rectTransform.UpdateScaleFunctor(),
                OnUpdate   = rectTransform.UpdateScaleTimedFunctor(),
                OnEnd      = rectTransform.UpdateScaleFunctor()
            };

            ColorAnimationData colorData = new ColorAnimationData {
                StartValue = new Color(1, 1, 1, 0),
                EndValue   = new Color(1, 1, 1, 1),
                Duration   = .1f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = image.UpdateColorFunctor(),
                OnUpdate   = image.UpdateColorTimedFunctor(),
                OnEnd      = image.UpdateColorFunctor()
            };

            FloatAnimationData rotateData = new FloatAnimationData {
                StartValue = 0,
                EndValue   = Random.Range(-40, 40),
                Duration   = .3f,
                EaseType   = EaseType.EaseInOutQuad,
                Target     = mechanicView.gameObject,
                OnStart    = rectTransform.UpdateZRotation(),
                OnUpdate   = rectTransform.UpdateZRotationTimed(),
                OnEnd      = rectTransform.UpdateZRotation()
            };

            positionAnimator.StartAnimation(positionData);
            scaleAnimator.StartAnimation(scaleData);
            colorAnimator.StartAnimation(colorData);
            rotateAnimator.StartAnimation(rotateData);
        }
Ejemplo n.º 9
0
        public void Setup(double cashCount, int coinCount, bool success)
        {
            //var colorAnimator = backgroundImage.gameObject.GetOrAdd<ColorAnimator>();
            //var scaleAnimator = backFrameTransform.gameObject.GetOrAdd<Vector3Animator>();

            /*
             * Vector3AnimationData scaleData = new Vector3AnimationData {
             *  StartValue = Vector3.zero,
             *  EndValue = Vector3.one,
             *  Duration = 0.2f,
             *  AnimationMode = BosAnimationMode.Single,
             *  EaseType = EaseType.EaseInOutQuintic,
             *  Target = backFrameTransform.gameObject,
             *  OnStart = (s, o) => backFrameTransform.localScale = s,
             *  OnUpdate = (s, t, o) => backFrameTransform.localScale = s,
             *  OnEnd = (s, o) => {
             *      backFrameTransform.localScale = s;
             *  }
             * };
             *
             * ColorAnimationData colorData = new ColorAnimationData {
             *  StartValue = new Color(0, 0, 0, 0),
             *  EndValue = new Color(0, 0, 0, 0.7f),
             *  Duration = 0.5f,
             *  AnimationMode = BosAnimationMode.Single,
             *  EaseType = EaseType.EaseInOutQuad,
             *  Target = backgroundImage.gameObject,
             *  OnStart = (c, o) => backgroundImage.color = c,
             *  OnUpdate = (c, t, o) => backgroundImage.color = c,
             *  OnEnd = (c, o) => {
             *      backgroundImage.color = c;
             *      scaleAnimator.StartAnimation(scaleData);
             *  }
             * };
             * colorAnimator.StartAnimation(colorData);*/


            FloatAnimationData alphaData = new FloatAnimationData {
                StartValue    = 0,
                EndValue      = 1,
                Duration      = 0.3f,
                AnimationMode = BosAnimationMode.Single,
                EaseType      = EaseType.Linear,
                Target        = gameObject,
                OnStart       = (v, o) => canvasGroup.alpha = v,
                OnUpdate      = (v, t, o) => canvasGroup.alpha = v,
                OnEnd         = (v, o) => canvasGroup.alpha = v
            };

            GetComponent <FloatAnimator>().StartAnimation(alphaData);

            cashText.text = BosUtils.GetCurrencyString(new CurrencyNumber(cashCount), "#FFFFFF", "#FFDF5F");
            coinText.text = coinCount.ToString();

            if (!success)
            {
                contentParent.Deactivate();
                failText.Activate();
            }
            else
            {
                failText.Deactivate();
            }

            okButton.SetListener(() => {
                if (Services != null)
                {
                    Services.SoundService.PlayOneShot(SoundName.click);
                    backgroundImage.Deactivate();

                    if (success)
                    {
                        Services.PlayerService.AddGenerationCompanyCash(cashCount);
                        if (coinCount > 0)
                        {
                            Services.PlayerService.AddCoins(coinCount);
                        }
                    }

                    SceneManager.UnloadSceneAsync(6);
                }
                else
                {
                    backgroundImage.Deactivate();
                }
            });
        }