using IVDataFormat; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.UI; using IVServerFormat; using DG.Tweening; using System; public class EventMgr : MonoBehaviour { #region Const private static EventMgr curMgr = null; #endregion Const #region UI [SerializeField] Canvas canvasUI; TextMeshProUGUI txtT; [SerializeField] RectTransform eventPopUp; private GameObject goBtnEventClose; TextMeshProUGUI eventTitle; Image imgEventPopUpBg; Image imgEventPopUp; [SerializeField] EventTab[] tabEvent; TextMeshProUGUI txtEventTitle; TextMeshProUGUI txtEventExplain; GameObject objSingleTimer; TextMeshProUGUI txtSingleTimer; GameObject objDoubleTimer; TextMeshProUGUI txtDoubleTimer; TextMeshProUGUI txtDoubleTimerShop; [Header("RewardEvent")] [SerializeField] private Canvas rewardCanvas; private GoodsItem[] openGoods; private TextMeshProUGUI txtOpenMain, txtOpenDesc, txtOpenDue; private TextMeshProUGUI[] txtOpenReward; private Button btnRewardEventGet; #endregion #region EventNewAttend //[SerializeField] //GameObject tabNewAttend; //TextMeshProUGUI txtNewTabTitle; //TextMeshProUGUI txtNewTabExplain; //GameObject bgTimeNewAttend; //TextMeshProUGUI txtNewTabLimitTime; [SerializeField] TextMeshProUGUI txtNewExplain; //[SerializeField] //GameObject bgNew; //TextMeshProUGUI txtbgNewTabTitle; //TextMeshProUGUI txtbgNewTabExplain; //TextMeshProUGUI txtbgNewTabLimitTime; #endregion #region EventMarimoAtt //[SerializeField] //GameObject tabMarimo; //TextMeshProUGUI txtMarimoTabTitle; //TextMeshProUGUI txtMarimoTabExplain; //GameObject bgTimeMarimoAttend; //TextMeshProUGUI txtMarimoTabLimitTime; [SerializeField] TextMeshProUGUI txtMarimoExplain; //[SerializeField] //GameObject bgMarimo; //TextMeshProUGUI txtMarimobgTabTitle; //TextMeshProUGUI txtMarimobgTabExplain; //TextMeshProUGUI txtMarimobgTabLimitTime; #endregion #region EventHotTime [SerializeField] GameObject canvasHotTimeUI; TextMeshProUGUI txtHotTimeWarning; //[SerializeField] //GameObject tabHotTime; //TextMeshProUGUI txtHotTimeTitle; //TextMeshProUGUI txtHotTimeExplain; //GameObject bgTimeHotTime; //TextMeshProUGUI txtHotTimeLimitTime; //[SerializeField] //GameObject bgHotTime; //TextMeshProUGUI txtbgHotTimeTitle; //TextMeshProUGUI txtbgHotTimeExplain; //TextMeshProUGUI txtbgHotTimeLimitTime; [SerializeField] GameObject[] hotTimeBox; TextMeshProUGUI txtHotTimeTime; TextMeshProUGUI[] txtHotTimeGain; TextMeshProUGUI[] txtHotTimeGainRate; #endregion #region EventGrowQuest [SerializeField] EScrController escrEventQuest; [SerializeField] GameObject canvasGrowMissionUI; TextMeshProUGUI txtGrowQuestExplain; ButtonIV[] growQuestDayPanel; GameObject[] dayLock; TextMeshProUGUI[] txtDayPanel; GameObject[] dayPanelBadge; private TextMeshProUGUI txtCond; private TextMeshProUGUI txtBtnGet; private TextMeshProUGUI txtClearRate; private TextMeshProUGUI txtGoodsCnt; private Image imgGoodsIcon; private Image imgCover; private Slider sldClearRate; private Button btnGet; private GameObject dayAllBadge; private Button btnAllget; private RectTransform allGetBadge; private GameObject allGetCover; private TextMeshProUGUI txtAllGet; #endregion #region EventMarimoExchange [SerializeField] GameObject canvasMarimoExchangeUI; TextMeshProUGUI txtExchangeExplain; GameObject exchangeTitleAndCount; TextMeshProUGUI txtExchangeList; GameObject coinCount; TextMeshProUGUI txtExchangeCoin; [SerializeField] EScrController escrEventTradeRow; #endregion #region Event Roulette [SerializeField] private GameObject goCanvasRouletteUI; private Image imgRouletteBg, imgRouletteJelly, imgRoulettePanel; private RectTransform rtrfRoulettePanel; private ButtonIV btnRoulette1, btnRoulette10; private TextMeshProUGUI txtRouletteCount, txtRouletteHave, txtRoulettePrice1, txtRoulettePrice10; private GameObject[] goRouletteDones; private Image[] imgRouletteRewards, imgRouletteRewardCs; private TextMeshProUGUI[] txtRouletteConds, txtRouletteCounts, txtRouletteCountCs; private GameObject[] objBadge; private ButtonIV[] btnRouletteGet; private Animator spinRouletteBulletEffect; private ParticleSystem spinRouletteGlowEffect; #endregion Event Roulette #region Event Raise [SerializeField] private EScrController escrRaise; [SerializeField] private GameObject goCanvasRaiseUI; private Image imgRaiseBack, imgRaiseFront; private ParticleSystem raisingEvent; private ButtonIV btnRaise1, btnRaise10; private TextMeshProUGUI txtRaiseHave, txtRaisePrice1, txtRaisePrice30; private DOTweenAnimation marimoGrow; #endregion Event Raise #region Variables private bool bReLocalize = true; private bool bInitNeed = true; private int iLoading = 1; private AsyncOperationHandle handleRouletteBg, handleRouletteJelly, handleRoulettePanel; private EnhancedUI.SmallList raiseIdRows = new EnhancedUI.SmallList(); private List raiseIdList; private AsyncOperationHandle handleRaiseBack, handleRaiseFront; #endregion Variables [SerializeField] GameObject MainEventBadge; [SerializeField] GameObject[] TabEventBadge; #region Base public static void SLocalize(bool bmain) { if (curMgr != null) curMgr.Localize(bmain); } private void Localize(bool bmain) { if (bmain) { } else { bReLocalize = false; txtT.text = LocalizationText.GetText("event_title"); eventTitle.text = LocalizationText.GetText("event_title"); txtNewExplain.text = LocalizationText.GetText("reset_day_explain"); txtMarimoExplain.text = LocalizationText.GetText("reset_day_explain"); //핫타임 txtHotTimeWarning.text = LocalizationText.GetText("event_hot_time_warning"); txtHotTimeTime.text = LocalizationText.GetText("event_hot_time_time"); txtHotTimeGain[0].text = LocalizationText.GetText("event_hot_time_gold"); txtHotTimeGain[1].text = LocalizationText.GetText("event_hot_time_exp"); txtHotTimeGain[2].text = LocalizationText.GetText("event_hot_time_chest"); txtExchangeList.text = LocalizationText.GetText("event_exchange_list"); txtExchangeExplain.text = LocalizationText.GetText("event_exchange_warning"); } } // 설정에서 언어 변경 시 처리. public static void SReLocalize() { GrowQuestEventRelocalize(); //교환 curMgr.firstTimeOpen = true; //룰렛 curMgr.imgRouletteRewards = null; //키우기 curMgr.raiseIdList = null; curMgr.Localize(true); curMgr.bReLocalize = true; } // 백버튼 처리. public static bool SCloseMenu() { return curMgr.CloseMenu(); } private bool CloseMenu() { // 게임 시작 후 열린적 없음. if (bInitNeed) return false; if (eventPopUp.gameObject.activeSelf) { CloseEventWindow(); return true; } if (canvasUI.enabled) { CloseEvent(); return true; } return false; } private void Awake() { curMgr = this; } void Start() { BadgeCheck(); iLoading--; Init(); } private void Init() { txtT = canvasUI.transform.Find("txtT").GetComponent(); //eventPopUp = canvasUI.transform.Find("EventPopUp").GetComponent(); imgEventPopUpBg = eventPopUp.Find("bg (1)").GetComponent(); goBtnEventClose = eventPopUp.Find("btnClose").gameObject; eventTitle = eventPopUp.Find("txtT").GetComponent(); txtEventTitle = imgEventPopUpBg.transform.Find("txtTabTitle").GetComponent(); txtEventExplain = imgEventPopUpBg.transform.Find("txtTabExplain").GetComponent(); imgEventPopUp = imgEventPopUpBg.transform.Find("EventImage").GetComponent(); objSingleTimer = imgEventPopUpBg.transform.Find("bgTime").gameObject; txtSingleTimer = objSingleTimer.transform.Find("txtTabLimitTime").GetComponent(); objDoubleTimer = imgEventPopUpBg.transform.Find("bgDoubleTime").gameObject; txtDoubleTimer = objDoubleTimer.transform.Find("txtTabLimitTime").GetComponent(); txtDoubleTimerShop = objDoubleTimer.transform.Find("txtTabLimitShopTime").GetComponent(); txtHotTimeWarning = canvasHotTimeUI.transform.Find("txtExplain").GetComponent(); //핫타임 전용 txtHotTimeTime = hotTimeBox[0].transform.Find("txtExplain").GetComponent(); txtHotTimeGain = new TextMeshProUGUI[3]; txtHotTimeGainRate = new TextMeshProUGUI[3]; for (int i = 0; i < 3; i++) { txtHotTimeGain[i] = hotTimeBox[i + 1].transform.Find("txtExplain").GetComponent(); txtHotTimeGainRate[i] = hotTimeBox[i + 1].transform.Find("txtMultiful").GetComponent(); } txtExchangeExplain = canvasMarimoExchangeUI.transform.Find("txtExplain").GetComponent(); exchangeTitleAndCount = canvasMarimoExchangeUI.transform.Find("txtListTitleAndGoodCount").gameObject; txtExchangeList = exchangeTitleAndCount.transform.Find("txtList").GetComponent(); coinCount = exchangeTitleAndCount.transform.Find("imgGoodsCount").gameObject; txtExchangeCoin = coinCount.transform.Find("txtGoodsIcon").GetComponent(); // 오픈 보상 ui txtOpenMain = rewardCanvas.transform.Find("txtT").GetComponent(); txtOpenDesc = rewardCanvas.transform.Find("txtDesc").GetComponent(); txtOpenDue = rewardCanvas.transform.Find("txtDue").GetComponent(); txtOpenReward = new TextMeshProUGUI[4]; openGoods = new GoodsItem[4]; txtOpenReward = rewardCanvas.transform.Find("RewardText").GetComponentsInChildren(); openGoods = rewardCanvas.transform.Find("Goods").GetComponentsInChildren(); btnRewardEventGet = rewardCanvas.transform.Find("btnGet").GetComponent