Files
back_cantanBuilding/Assets/Scripts/SupplyDrop/SupplyDropGameplayLureCtrl.cs
2026-05-26 16:15:54 +08:00

114 lines
3.7 KiB
C#

using asap.core;
using cfg;
using DG.Tweening;
using game;
using GameCore;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
public class SupplyDropGameplayLureCtrl : SupplyDropGameplayCtrl, ISupplyDropGameCtrl
{
SupplyDropGameplayLure supplyDropGameplayLure;
List<ItemData> lurecardItemDatas;
SupplyDropItemLurecards supplyDropContent;
LuckyGameRoot luckyGameRoot;
protected override void Init(int id)
{
supplyDropGameplayLure = tables.TbSupplyDropGameplayLure.DataMap[id];
SetData();
supplyDropContent = containerModel.GetComponent<SupplyDropItemLurecards>();
supplyDropContent.Play();
supplyDropContent.CardShuffle();
supplyDropContent.transform.DOMoveZ(supplyDropContent.playZMove, supplyDropContent.playTime)
.OnComplete(ShowModel);
//ShowModel();
}
void SetData()
{
if (supplyDropGameplayLure == null)
{
Debug.LogError("SupplyDropGameplayLure data is null");
return;
}
lurecardItemDatas = new List<ItemData>();
PlayerItemData playerItemData = GContext.container.Resolve<PlayerItemData>();
int lurecardCount = supplyDropGameplayLure.DropID.Count;
for (int i = 0; i < lurecardCount; i++)
{
ItemData itemData = playerItemData.GetItemDataOne(supplyDropGameplayLure.DropID[i]);
lurecardItemDatas.Add(itemData);
}
}
void ShowModel()
{
Addressables.InstantiateAsync("LuckyGameRoot").Completed += handle =>
{
if (handle.Status == UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationStatus.Succeeded)
{
gameModel = handle.Result;
luckyGameRoot = gameModel.GetComponent<LuckyGameRoot>();
PlayAni();
}
else
{
Dispose();
}
};
}
async void PlayAni()
{
List<int> indexs = new List<int>() { 0, 1, 2 };
//打乱顺序
for (int i = 0; i < lurecardItemDatas.Count; i++)
{
ItemData itemData = lurecardItemDatas[i];
int randomIndex = UnityEngine.Random.Range(0, indexs.Count);
int j = indexs[randomIndex];
indexs.RemoveAt(randomIndex);
luckyGameRoot.lurecardItems[i].index = i;
luckyGameRoot.lurecardItems[j].data = itemData;
luckyGameRoot.lurecardItems[j].SetNum($"x{itemData.count}");
luckyGameRoot.lurecardItems[j].skinned_meshe.material = supplyDropContent.material[i];
}
Vector3 posLocal = Camera.main.transform.InverseTransformPoint(supplyDropContent.singleCard.position);
Vector3 posW = UIManager.Instance.UI3DCamera.transform.TransformPoint(posLocal);
luckyGameRoot.Init(posW, supplyDropContent.singleCard.rotation);
await luckyGameRoot.Fly();
containerModel.SetActive(false);
//await luckyGameRoot.PlayFlip();
ShowPanel();
}
async void ShowPanel()
{
GameObject go = await UIManager.Instance.ShowUINotLoading(UITypes.Lucky3choose1Panel);
Lucky3choose1Panel lucky3Choose1Panel = go.GetComponent<Lucky3choose1Panel>();
lucky3Choose1Panel.Init(this);
}
public async void ShowAllItem(int itemIndex)
{
#if AGG
using (var e = GEvent.GameEvent("supplydrop_game_choosecard"))
{
e.AddContent("reward_type", itemIndex + 1);
}
#endif
if (luckyGameRoot != null)
{
await luckyGameRoot.ShowAllItem(itemIndex);
}
Dispose();
UIManager.Instance.DestroyUI(UITypes.Lucky3choose1Panel);
}
}