162 lines
5.6 KiB
C#
162 lines
5.6 KiB
C#
using asap.core;
|
|
using GameCore;
|
|
using UnityEngine;
|
|
using UniRx;
|
|
using Cinemachine;
|
|
|
|
public class EventPartnerStatueAct : AGameAct
|
|
{
|
|
[SerializeField] private EventPartnerStatueBuild buildScene;
|
|
[SerializeField] private CinemachineVirtualCamera vc;
|
|
[SerializeField] private Animation ani;
|
|
|
|
public override async System.Threading.Tasks.Task<bool> StartAsync()
|
|
{
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
arc.EventAggregator.GetEvent<EventPartnerStatueEnterMain>().Subscribe(OnEnterMainPanel).AddTo(this);
|
|
arc.EventAggregator.GetEvent<EventPartnerStatueEnterBuild>().Subscribe(OnEnterBuildPanel).AddTo(this);
|
|
arc.EventAggregator.GetEvent<EventPartnerStatueSwitchBuild>().Subscribe(e => ShowScene(e.SlotIdx)).AddTo(this);
|
|
arc.EventAggregator.GetEvent<EventPartnerStatueSelfBuild>().Subscribe(OnSelfBuild).AddTo(this);
|
|
arc.EventAggregator.GetEvent<EventPartnerStatuePartnerBuild>().Subscribe(OnPartnerBuild).AddTo(this);
|
|
await OnEnterMainPanelAsync();
|
|
return await base.StartAsync();
|
|
}
|
|
|
|
public override async System.Threading.Tasks.Task StopAsync()
|
|
{
|
|
Debug.Log("[EventPartnerStatue] Stop Act!");
|
|
Camera.main.orthographic = false;
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
arc.RtSystem.Unsubscribe();
|
|
UIManager.Instance.DestroyUI(UITypes.EventPartnerStatuePanel);
|
|
await base.StopAsync();
|
|
}
|
|
|
|
protected override void OnDestroy()
|
|
{
|
|
// UIManager.Instance.DestroyUI(UITypes.EventPartnerStatuePanel);
|
|
Debug.Log($"[EventPartnerStatue] Exit act.");
|
|
}
|
|
|
|
private void HideScene()
|
|
{
|
|
buildScene.gameObject.SetActive(false);
|
|
}
|
|
|
|
private void ShowScene(int slotIdx)
|
|
{
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
var c = arc.Model.ComponentList[slotIdx];
|
|
buildScene.gameObject.SetActive(true);
|
|
buildScene.Init(arc.GetEventPartnerStatueBuildSceneData(slotIdx));
|
|
ani.Play("camera_bg_show");
|
|
if (c.IsRewardClaimed)
|
|
buildScene.SetFinished();
|
|
}
|
|
|
|
private async void OnEnterMainPanel(EventPartnerStatueEnterMain e)
|
|
{
|
|
try
|
|
{
|
|
await OnEnterMainPanelAsync(e);
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
Debug.LogError(ex);
|
|
}
|
|
}
|
|
|
|
private async void OnEnterBuildPanel(EventPartnerStatueEnterBuild e)
|
|
{
|
|
try
|
|
{
|
|
await OnEnterBuildPanelAsync(e.SlotIdx);
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
Debug.LogError(ex);
|
|
}
|
|
}
|
|
|
|
private async System.Threading.Tasks.Task OnEnterMainPanelAsync(EventPartnerStatueEnterMain e = null)
|
|
{
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
if (arc.DoRefreshDetail)
|
|
{
|
|
var detail = await arc.Requests.GetDetail();
|
|
if (detail != null)
|
|
arc.ResolveWithDetail(detail, EventPartnerStatuePlayfabData.Load());
|
|
}
|
|
var go = await UIManager.Instance.ShowUINotLoading(UITypes.EventPartnerStatuePanel);
|
|
var panel = go.GetComponent<EventPartnerStatueMainPanel>();
|
|
if (e != null && e.SlotIdx >= 0)
|
|
panel.PlayTaskItemFx(e.SlotIdx);
|
|
arc.TryGrantFinalReward();
|
|
HideScene();
|
|
UIManager.Instance.DestroyUI(UITypes.EventPartnerStatueBuildPanel);
|
|
if (arc.IsFirstTime)
|
|
{
|
|
arc.IsFirstTime = false;
|
|
arc.SavePlayerPreference();
|
|
await UIManager.Instance.ShowUINotLoading(UITypes.EventPartnerStatueInfoPopupPanel);
|
|
}
|
|
}
|
|
|
|
private async System.Threading.Tasks.Task OnEnterBuildPanelAsync(int slotIdx)
|
|
{
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
var go = await UIManager.Instance.ShowUINotLoading(UITypes.EventPartnerStatueBuildPanel);
|
|
var panel = go.GetComponent<EventPartnerStatueBuildPanel>();
|
|
panel.Init(arc.GetEventPartnerStatueBuildPanelData(slotIdx), buildScene);
|
|
ShowScene(slotIdx);
|
|
|
|
UIManager.Instance.DestroyUI(UITypes.EventPartnerStatuePanel);
|
|
}
|
|
|
|
public void OnSelfBuild(EventPartnerStatueSelfBuild e)
|
|
{
|
|
buildScene.PlayDice(e.Combination);
|
|
buildScene.PlayToolAnimation(e.Combination, e.OldStage, e.MaxStage);
|
|
buildScene.SetStatue(e.NewStage);
|
|
}
|
|
|
|
public void OnPartnerBuild(EventPartnerStatuePartnerBuild e)
|
|
{
|
|
buildScene.PlayToolAnimation((1, 2, 3), e.OldStage, e.MaxStage);
|
|
buildScene.SetStatue(e.NewStage);
|
|
}
|
|
}
|
|
|
|
public class EventPartnerStatueEnterMain { public int SlotIdx { get; set; } = -1; }
|
|
public class EventPartnerStatueEnterBuild { public int SlotIdx { get; set; } }
|
|
public class EventPartnerStatueSwitchBuild { public int SlotIdx { get; set; } }
|
|
public class EventPartnerStatueSelfBuild
|
|
{
|
|
public (int c1, int c2, int c3) Combination { get; set; }
|
|
public int OldStage { get; set; }
|
|
public int NewStage { get; set; }
|
|
public int MaxStage { get; set; }
|
|
|
|
public EventPartnerStatueSelfBuild((int c1, int c2, int c3) combination, int oldStage, int maxStage, int newStage)
|
|
{
|
|
Combination = combination;
|
|
OldStage = oldStage;
|
|
MaxStage = maxStage;
|
|
NewStage = newStage;
|
|
}
|
|
}
|
|
|
|
public class EventPartnerStatuePartnerBuild
|
|
{
|
|
// public List<int> Combination { get; set;}
|
|
public int OldStage { get; set; }
|
|
public int NewStage { get; set; }
|
|
public int MaxStage { get; set; }
|
|
|
|
public EventPartnerStatuePartnerBuild(int oldStage, int maxStage, int newStage)
|
|
{
|
|
OldStage = oldStage;
|
|
MaxStage = maxStage;
|
|
NewStage = newStage;
|
|
}
|
|
} |