using System; 
 | 
using UnityEngine; 
 | 
  
 | 
public class ArenaTabHandler : BaseChallengeTabHandler 
 | 
{ 
 | 
    protected override int GetIndex() => 1; 
 | 
    protected override int GetOpenState() => 0; // 0=FuncID 
 | 
    protected override int GetFuncId() => ArenaManager.Instance.funcId; 
 | 
    protected override int GetRedpointId() => MainRedDot.ArenaRepoint; 
 | 
  
 | 
    protected override string GetCountInfo() 
 | 
    { 
 | 
        long nowCount = UIHelper.GetMoneyCnt(ArenaManager.Instance.ChallengeMoneyType); 
 | 
        return UIHelper.AppendColor(nowCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("Challenge03", nowCount)); 
 | 
    } 
 | 
  
 | 
    protected override Action GetOnClickAction() 
 | 
    { 
 | 
        return HandleArenaNavigation; 
 | 
    } 
 | 
  
 | 
    private void HandleArenaNavigation() 
 | 
    { 
 | 
        if (!FuncOpen.Instance.IsFuncOpen(GetFuncId(), true)) 
 | 
            return; 
 | 
  
 | 
        BattleField arenaBattle = BattleManager.Instance.GetBattleFieldByMapID(3); 
 | 
        if (arenaBattle != null) 
 | 
        { 
 | 
            ArenaBattleWin battleWin; 
 | 
            if (!UIManager.Instance.IsOpened<ArenaBattleWin>()) 
 | 
            { 
 | 
                battleWin = UIManager.Instance.OpenWindow<ArenaBattleWin>(); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                battleWin = UIManager.Instance.GetUI<ArenaBattleWin>(); 
 | 
            } 
 | 
            battleWin.SetBattleField(arenaBattle); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            UIManager.Instance.OpenWindow<ArenaWin>(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    protected override void SubscribeToSpecificEvents() 
 | 
    { 
 | 
        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh; 
 | 
    } 
 | 
  
 | 
    protected override void UnsubscribeFromSpecificEvents() 
 | 
    { 
 | 
        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh; 
 | 
    } 
 | 
  
 | 
    private void OnPlayerDataRefresh(PlayerDataType type) 
 | 
    { 
 | 
        if (type == PlayerDataType.ChallengeVoucher) 
 | 
        { 
 | 
            Refresh(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |