using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
using System.Collections.Generic; 
 | 
using Cysharp.Threading.Tasks; 
 | 
  
 | 
public class HeroCallResultCell : MonoBehaviour 
 | 
{ 
 | 
    [SerializeField] UIHeroController heroModel; 
 | 
    [SerializeField] Image newMarkImg; 
 | 
    [SerializeField] UIEffectPlayer starEffect; 
 | 
    [SerializeField] UIEffectPlayer lightEffect; 
 | 
    [SerializeField] UIEffectPlayer boomEffect; 
 | 
    [SerializeField] UIEffectPlayer tableEffect; 
 | 
  
 | 
  
 | 
    /// <summary> 
 | 
    /// 抽奖结果的小人展示 
 | 
    /// </summary> 
 | 
    /// <param name="heroID"></param> 
 | 
    /// <param name="index">第几抽,0代表单抽</param> 
 | 
    /// <param name="isForceSkip">强制跳过动画</param> 
 | 
    public void Display(int heroID, int index, bool isForceSkip=false) 
 | 
    { 
 | 
        DisplayAsync(heroID, index, isForceSkip).Forget(); 
 | 
    } 
 | 
  
 | 
    async UniTask DisplayAsync(int heroID, int index, bool isForceSkip=false) 
 | 
    { 
 | 
        this.transform.localScale = Vector3.zero; 
 | 
        int delaytime = LocalSave.GetBool(HeroUIManager.skipKey + PlayerDatas.Instance.baseData.PlayerID, false) ? 50 * index : 100 * index; 
 | 
  
 | 
        await UniTask.Delay(delaytime); 
 | 
        this.transform.localScale = Vector3.one; 
 | 
        //先显示台子,再显示小人 
 | 
        heroModel.SetActive(false); 
 | 
        newMarkImg.SetActive(false); 
 | 
        var heroConfig = HeroConfig.Get(heroID); 
 | 
        var quality = heroConfig.Quality; 
 | 
  
 | 
        //是否跳过动画 
 | 
        if (isForceSkip || LocalSave.GetBool(HeroUIManager.skipKey + PlayerDatas.Instance.baseData.PlayerID, false)) 
 | 
        { 
 | 
            //红色特殊 
 | 
            if (!isForceSkip) 
 | 
            {  
 | 
                boomEffect.playDelayTime = 0; 
 | 
                boomEffect.PlayByArrIndex(quality > 4 ? 0 : 1); 
 | 
            } 
 | 
            DisplayNewMark(heroID); 
 | 
            DisplayHero(heroConfig); 
 | 
            tableEffect.Stop(); 
 | 
            tableEffect.isPlaySpineLoop = true; 
 | 
            tableEffect.PlayByArrIndex(quality); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
  
 | 
        starEffect.PlayByArrIndex(index); 
 | 
        //紫色开始有播放 
 | 
        if (quality <= 1) 
 | 
        { 
 | 
            lightEffect.Stop(); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            lightEffect.PlayByArrIndex(quality - 2); 
 | 
        } 
 | 
        boomEffect.playDelayTime = lightEffect.playDelayTime; 
 | 
        //红色特殊 
 | 
        boomEffect.PlayByArrIndex(quality > 4 ? 0 : 1); 
 | 
  
 | 
        //先播放灰色台子上升,再播放小人 
 | 
        tableEffect.onComplete = () => 
 | 
        { 
 | 
            DisplayNewMark(heroID); 
 | 
            DisplayHero(heroConfig); 
 | 
            tableEffect.isPlaySpineLoop = true; 
 | 
            tableEffect.PlayByArrIndex(quality); 
 | 
        }; 
 | 
        tableEffect.Stop(); 
 | 
        tableEffect.isPlaySpineLoop = false; 
 | 
        tableEffect.PlayByArrIndex(0); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    public void DisplayNewMark(int heroID) 
 | 
    { 
 | 
        newMarkImg.SetActive(HeroUIManager.Instance.IsNewHero(heroID)); 
 | 
    } 
 | 
     
 | 
    public void DisplayHero(HeroConfig heroConfig) 
 | 
    { 
 | 
        heroModel.SetActive(true); 
 | 
        heroModel.Create(heroConfig.SkinIDList[0], 0.7f); 
 | 
    } 
 | 
} 
 |