Files
taptap2024_GJ_chidouren/Assets/Scripts/Views/GamePanel.cs
2024-10-21 22:29:53 +08:00

80 lines
2.8 KiB
C#

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<GameEventDefine.OverlyCoin> (OnChangeCoin);
UniEvent.AddListener<GlobalEventDefine.RefreshView> (OnChangeCoin);
OnChangeCoin (null);
// GameUpdateMgr.Instance.AddUpdater (DoUpdate);
}
public override void OnCloseView ()
{
// GameUpdateMgr.Instance.RemoveUpdater (DoUpdate);
UniEvent.RemoveListener<GameEventDefine.OverlyCoin> ( OnChangeCoin);
UniEvent.RemoveListener<GlobalEventDefine.RefreshView> ( 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;
}
}
}