using System.Collections.Generic; using Coffee.UIExtensions; using Framework.GamePool; using Framework.Timer; using Framework.UI; using Framework.Utils; using Game; using UnityEngine; using UnityEngine.UI; using IcecreamView; using MintAnimation.Runtime.Components.MintAnimation; using Utils; using CameraType = Framework.Utils.CameraType; namespace Views { public class CommonScreenEffectPanel : IcecreamView.IC_AbstractModule { [SerializeField] private UIParticle _particlePrefab; [SerializeField] private UIParticle _particleGameSuccess; [SerializeField] private UIParticle _particleGameField; [SerializeField] private MintAnimBase _screenFlickerAnim; private MiniGameObjectPool _pool; private Camera _camera; public override void OnInitView () { this._pool = new MiniGameObjectPool (); this._pool.InitPool (this._particlePrefab , this.transform); this._camera = CameraGroup.Instance.GetCamera (CameraType.Ui); } public override void OnOpenView (IC_ViewData parameters) { GameUpdateMgr.Instance.AddUpdater (DoUpdate); this._particleGameSuccess.Stop (); this._particleGameField.Stop (); this._screenFlickerAnim.StopAnim (); this._screenFlickerAnim.SetPlayTime (1); } public override void OnCloseView () { GameUpdateMgr.Instance.RemoveUpdater (DoUpdate); } private void DoUpdate () { if (Input.GetMouseButtonDown (0)) { var position = Input.mousePosition; var screenPointToUILocalPoint = UIKit.ScreenPointToUILocalPoint (this._camera , this.transform as RectTransform, position); CreateEffect (screenPointToUILocalPoint); } } private void CreateEffect (Vector2 localPos) { var particle = this._pool.Create (); particle.rectTransform.anchoredPosition = localPos; particle.Play (); GameUpdateMgr.Instance.CreateTimer (1.5f , () => { this._pool.Destroy (particle); }); } // [BindUIEvent(GameEventCode.OnScreenFlicker)] // private void OnFightCallback (EventArg arg) // { // // if (arg.Count > 0) // // { // // if (arg.GetValue ()) // // { // // this._particleGameSuccess.Play (); // // } // // } // // else // // { // // this._particleGameSuccess.Play (); // // } // } [BindUIEvent (GameEventCode.OnScreenFlicker)] private void OnScreenFlicker (EventArg arg) { var count = arg.GetValue (); var mintTweenOptions = this._screenFlickerAnim.MintAnimation ().TweenOptions; mintTweenOptions.LoopCount = count; this._screenFlickerAnim.StartAnim (); } } }