using System; using System.Collections.Generic; using Coffee.UIEffects; using Framework.Timer; using Framework.Utils.UITools; using Game; using Game.Component; using Game.EventDefine; using UnityEngine; using UnityEngine.UI; using IcecreamView; using UniFramework.Event; namespace Views { public class GamePanel : IcecreamView.IC_AbstractModule { [SerializeField] private ETCJoystick _joystick; [SerializeField] private UIEffect _redPoint; [SerializeField] private UIEffect _greenPoint; [SerializeField] private UIEffect _bluePoint; [SerializeField] private Image _slider; [SerializeField] private TextNumber _textNumber; public override void OnInitView () { this._textNumber.TextAfterHandler = (value) => $"{value}/{MapContent.Instance.ScenePart.completeConditionNumber}"; this._joystick.onMove.AddListener (OnMovePlayer); this._joystick.onMoveEnd.AddListener (OnEndMovePlayer); } private void OnEndMovePlayer () { MapContent.Instance.PlayerEntity.OnMoveEnd (); } private void OnMovePlayer (Vector2 arg) { if (!MapContent.Instance.IsActiveGame) { return; } MapContent.Instance.PlayerEntity.OnMove (arg); } public override void OnOpenView (IC_ViewData parameters) { this._redPoint.effectFactor = RoomManager.Instance.PartIndex >= 1 ? 0 : 0.8f; this._greenPoint.effectFactor = RoomManager.Instance.PartIndex >= 2 ? 0 : 0.8f; this._bluePoint.effectFactor = RoomManager.Instance.PartIndex >= 3 ? 0 : 0.8f; UniEvent.AddListener (OnChangeCoin); UniEvent.AddListener (OnChangeCoin); OnChangeCoin (null); // GameUpdateMgr.Instance.AddUpdater (DoUpdate); } public override void OnCloseView () { // GameUpdateMgr.Instance.RemoveUpdater (DoUpdate); UniEvent.RemoveListener ( OnChangeCoin); UniEvent.RemoveListener ( OnChangeCoin); } private void DoUpdate () { this._slider.fillAmount = MapContent.Instance.ScenePart.CurProgress; this._textNumber.Number = MapContent.Instance.ScenePart.CurrentConditionNumber; } private void OnChangeCoin (IEventMessage eventMessage) { // var message = eventMessage as GameEventDefine.OverlyCoin; this._slider.fillAmount = MapContent.Instance.ScenePart.CurProgress; this._textNumber.Number = MapContent.Instance.ScenePart.CurrentConditionNumber; } } }