76 lines
2.8 KiB
C#
76 lines
2.8 KiB
C#
using UnityEngine;
|
|
using GameCore;
|
|
using System.Threading.Tasks;
|
|
using asap.core;
|
|
using System;
|
|
using Castle.Components.DictionaryAdapter.Xml;
|
|
|
|
public class EventGatherCoreTaskView : MonoBehaviour
|
|
{
|
|
[SerializeField] private GameObject[] targetItems, fxReceivedList;
|
|
[SerializeField] private RewardItemNew reward;
|
|
[SerializeField] private RewardFlyBatchController _rewardFlyBatchController;
|
|
[SerializeField] private Animation ani;
|
|
// private GameObject CurrentEmptyTarget => targetItems.FirstOrDefault(x => !x.activeSelf);
|
|
private int CurrentEmptyTargetIdx
|
|
{
|
|
get
|
|
{
|
|
int i = 0;
|
|
for (i = 0; i < targetItems.Length; i++)
|
|
{
|
|
if (!targetItems[i].activeSelf)
|
|
return i;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
private GameObject CurrentEmptyTarget => targetItems[CurrentEmptyTargetIdx];
|
|
private GameObject CurrentReceiveFx => fxReceivedList[CurrentEmptyTargetIdx];
|
|
private readonly string _full = "target_full", _normal = "target_normal";
|
|
|
|
public void Init(int coreItemCount, ItemData rewardItemData)
|
|
{
|
|
for (int i = 0; i < targetItems.Length; i++)
|
|
{
|
|
targetItems[i].SetActive(i < coreItemCount);
|
|
fxReceivedList[i].SetActive(false);
|
|
}
|
|
reward.SetData(rewardItemData);
|
|
// _eventAggregator.GetEvent<EventGatherCoreTriggerTaken>()
|
|
// .Subscribe(OnTrigger).AddTo(this);
|
|
}
|
|
|
|
public async Task OnTriggerAsync(int rewardItemId, float rewardIconSize, Vector3 position)
|
|
{
|
|
var request = new BatchedRewardFlyRequest
|
|
{
|
|
itemID = rewardItemId,
|
|
// sourceIconSize = rewardIconSize,
|
|
// targetIconSize = (CurrentEmptyTarget.transform as RectTransform).rect.width,
|
|
// sourcePos = position,
|
|
// destPos = CurrentEmptyTarget.transform.position,
|
|
StartPoint = new BatchedRewardFlyPoint(position),
|
|
EndPoint = new BatchedRewardFlyPoint(CurrentEmptyTarget.GetComponent<RectTransform>()),
|
|
isDestinationRewardStash = false,
|
|
AnimationParamIndex = 0,
|
|
sourceTextRt = reward.transform.Find("text_num") as RectTransform
|
|
};
|
|
await _rewardFlyBatchController.OnRewardFlyRequestAsync(request);
|
|
CurrentReceiveFx.SetActive(true);
|
|
CurrentEmptyTarget.SetActive(true);
|
|
if (GContext.container.Resolve<EventGatherCoreData>().StageData.IsStageCleared(EventGatherCoreAct.Ctx))
|
|
{
|
|
ani.Play(_full);
|
|
await Task.Delay(TimeSpan.FromSeconds(ani.GetClip(_full).length));
|
|
}
|
|
}
|
|
|
|
public void RefreshView(ItemData rewardItemData)
|
|
{
|
|
for (int i = 0; i < targetItems.Length; i++)
|
|
targetItems[i].SetActive(false);
|
|
reward.SetData(rewardItemData);
|
|
}
|
|
}
|