using System; using System.Collections.Generic; using MoleMole.Config; using UnityEngine; using UnityEngine.UI; using proto; namespace MoleMole { public class EndlessUseToolPageContext : BasePageContext { private const string BATTLE_REPORT_PREFAB_PATH = "UI/Menus/Widget/EndlessActivity/BattleReportRow"; private const string RANK_ROW_BUTTON_PREFAB_PATH = "UI/Menus/Widget/EndlessActivity/RankInfoButton"; private const string ENDLESS_ITEM_PREFAB_PATH = "UI/Menus/Widget/EndlessActivity/EndlessItem"; private EndlessPlayerData _selectPlayer; private EndlessItem _selectItem; private EndlessToolDataItem _selectToolData; private int ANIMATOR_CAN_SELECT_PLAYER_BOOL_ID = Animator.StringToHash("CanSelectPlayer"); private Animator _animator; public EndlessUseToolPageContext() { config = new ContextPattern { contextName = "EndlessUseToolPageContext", viewPrefabPath = "UI/Menus/Page/EndlessActivity/EndlessUseToolPage" }; } public override bool OnPacket(NetPacketV1 pkt) { switch (pkt.getCmdId()) { case 140: return SetupView(); case 148: return OnUseEndlessItemRsp(pkt.getData()); case 151: return OnEndlessPlayerDataUpdateNotify(pkt.getData()); case 146: return OnGetLastEndlessRewardDataRsp(pkt.getData()); case 152: return OnEndlessItemDataUpdateNotify(pkt.getData()); default: return false; } } public override bool OnNotify(Notify ntf) { return false; } protected override bool SetupView() { base.view.transform.Find("GroupPanel/Title/Label").GetComponent().text = LocalizationGeneralLogic.GetText("Menu_Title_SelectEndlessToolFirst"); _animator = base.view.transform.GetComponent(); SetupRank(); SetupItemList(); SetRankListTitle(); CheckSelectItemForPlayerPanel(); Singleton.Instance.CheckAllAvatarHPChanged(); return false; } public override void OnLandedFromBackPage() { base.OnLandedFromBackPage(); CheckCurrentEndlessDataValid(); } private void OnUseBtnClick() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 if (_selectToolData.ApplyToSelf || (int)_selectToolData.ToolType == 3) { SetupUseToolConfirmDialog(_selectToolData); } else { _animator.SetBool(ANIMATOR_CAN_SELECT_PLAYER_BOOL_ID, true); } } private void RequestUseTool() { Singleton.Instance.RequestUseEndlessItem(_selectItem.item_id, (_selectPlayer != null) ? ((int)_selectPlayer.uid) : (-1)); _selectPlayer = null; } private bool OnEndlessPlayerDataUpdateNotify(EndlessPlayerDataUpdateNotify rsp) { SetupRank(); return false; } private bool OnGetLastEndlessRewardDataRsp(GetLastEndlessRewardDataRsp rsp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if ((int)rsp.retcode == 0 && rsp.reward_list.Count > 0) { BackPage(); } return false; } private bool OnEndlessItemDataUpdateNotify(EndlessItemDataUpdateNotify rsp) { SetupItemList(); return false; } private bool OnUseEndlessItemRsp(UseEndlessItemRsp rsp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if ((int)rsp.retcode == 0) { ShowEndlessToolEffect(_selectToolData, rsp); _selectItem = null; _selectToolData = null; SetupView(); } return false; } private void SetupRank() { List rankListSorted = Singleton.Instance.GetRankListSorted(); base.view.transform.Find("GroupPanel/RankPanel/RankList").GetComponent().Init(OnScrollerChange, rankListSorted.Count); } private void SetupItemList() { Transform transform = base.view.transform.Find("ItemPanel/ItemList/Content"); List playerEndlessItemList = Singleton.Instance.GetPlayerEndlessItemList(); if (transform.childCount < playerEndlessItemList.Count) { int num = playerEndlessItemList.Count - transform.childCount; for (int i = 0; i < num; i++) { Transform transform2 = UnityEngine.Object.Instantiate(Resources.Load("UI/Menus/Widget/EndlessActivity/EndlessItem")).transform; transform2.SetParent(transform, false); } } for (int j = 0; j < transform.childCount; j++) { Transform child = transform.GetChild(j); if (j >= playerEndlessItemList.Count) { child.gameObject.SetActive(false); continue; } EndlessItem val = playerEndlessItemList[j]; child.GetComponent().SetupView(val, val == _selectItem, _selectPlayer, OnItemButtonClick, OnUseBtnClick); } CheckItemListEmpty(); } private void ShowActivityRewardDialog(GetLastEndlessRewardDataRsp rsp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if ((int)rsp.retcode == 0) { if (rsp.reward_list.Count > 0) { Singleton.Instance.ShowDialog(new MissionRewardGotDialogContext(rsp.reward_list)); } Singleton.Instance.LocalData.LastRewardData = null; Singleton.Instance.Save(); } } private void CheckCurrentEndlessDataValid() { if (TimeUtil.Now > Singleton.Instance.SettlementTime) { Singleton.Instance.RequestEndlessData(); BackPage(); } } private void OnRankRowButtonClick(EndlessPlayerData playerEndlessData) { if (_selectItem == null) { base.view.transform.Find("GroupPanel/Title/Label").GetComponent().text = LocalizationGeneralLogic.GetText("Menu_Title_SelectEndlessToolFirst"); return; } if (_selectPlayer == playerEndlessData) { _selectPlayer = null; } else { _selectPlayer = playerEndlessData; SetupUseToolConfirmDialog(_selectToolData); } SetupRank(); SetupItemList(); } private void OnItemButtonClick(EndlessItem itemData) { //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Invalid comparison between Unknown and I4 if (_selectItem == itemData) { _selectItem = null; _selectToolData = null; base.view.transform.Find("GroupPanel/Title/Label").GetComponent().text = LocalizationGeneralLogic.GetText("Menu_Title_SelectEndlessToolFirst"); _animator.SetBool(ANIMATOR_CAN_SELECT_PLAYER_BOOL_ID, false); } else { _selectItem = itemData; _selectToolData = new EndlessToolDataItem((int)itemData.item_id); if (_selectToolData.ApplyToSelf || (int)_selectToolData.ToolType == 3) { _animator.SetBool(ANIMATOR_CAN_SELECT_PLAYER_BOOL_ID, false); } } _selectPlayer = null; SetRankListTitle(); SetupRank(); SetupItemList(); } private void OnScrollerChange(Transform childTrans, int index) { List rankListSorted = Singleton.Instance.GetRankListSorted(); EndlessPlayerData playerEndlessData = Singleton.Instance.GetPlayerEndlessData(rankListSorted[index]); PlayerFriendBriefData playerBriefData = Singleton.Instance.GetPlayerBriefData(rankListSorted[index]); childTrans.GetComponent().SetupView(index + 1, playerEndlessData, UIUtil.GetPlayerNickname(playerBriefData), _selectPlayer == playerEndlessData, OnRankRowButtonClick, _selectToolData); } private void SetRankListTitle() { if (_selectItem == null) { base.view.transform.Find("GroupPanel/Title/Label").GetComponent().text = LocalizationGeneralLogic.GetText("Menu_Title_SelectEndlessToolFirst"); } else { base.view.transform.Find("GroupPanel/Title/Label").GetComponent().text = LocalizationGeneralLogic.GetText("Menu_Title_SelectEndlessTarget"); } } private void CheckItemListEmpty() { base.view.transform.Find("ItemPanel/NoItemHint").gameObject.SetActive(Singleton.Instance.GetPlayerEndlessItemList().Count <= 0); } private void CheckSelectItemForPlayerPanel() { if (_selectItem == null || _selectToolData.ApplyToSelf || _selectPlayer == null) { _animator.SetBool(ANIMATOR_CAN_SELECT_PLAYER_BOOL_ID, false); } else { _animator.SetBool(ANIMATOR_CAN_SELECT_PLAYER_BOOL_ID, true); } } private void ShowEndlessToolEffect(EndlessToolDataItem toolData, UseEndlessItemRsp rsp) { Singleton.Instance.ShowUIEffect(config.contextName, toolData.EffectPrefatPath); string text = LocalizationGeneralLogic.GetText("Menu_Desc_EndlessUseSuccess", toolData.GetDisplayTitle()); Singleton.Instance.ShowDialog(new GeneralHintDialogContext(text)); } private void SetupUseToolConfirmDialog(EndlessToolDataItem toolData) { //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Invalid comparison between Unknown and I4 string text = LocalizationGeneralLogic.GetText("Menu_Desc_EndlessComfirmUse", toolData.GetDisplayTitle()); if (toolData.ShowIcon) { if (toolData.ApplyToSelf) { List appliedToolDataList = Singleton.Instance.GetAppliedToolDataList(); for (int i = 0; i < appliedToolDataList.Count; i++) { if (appliedToolDataList[i].ID == toolData.ID) { text = LocalizationGeneralLogic.GetText("Menu_Desc_EndlessComfirmReuse", toolData.GetDisplayTitle()); break; } } } else if ((int)toolData.ToolType != 3 && _selectPlayer != null) { List wait_effect_item_list = _selectPlayer.wait_effect_item_list; for (int j = 0; j < wait_effect_item_list.Count; j++) { if (wait_effect_item_list[j].item_id == (uint)toolData.ID) { text = LocalizationGeneralLogic.GetText("Menu_Desc_EndlessComfirmReuse", toolData.GetDisplayTitle()); break; } } } } if (Singleton.Instance.SelfInvisible()) { text = text + Environment.NewLine + LocalizationGeneralLogic.GetText("Menu_Desc_InvisibleItemWillLoseEffectHint"); } Singleton.Instance.ShowDialog(new GeneralDialogContext { type = GeneralDialogContext.ButtonType.DoubleButton, title = LocalizationGeneralLogic.GetText("Menu_Title_Tips"), desc = text, buttonCallBack = OnConfirmUseTool, notDestroyAfterTouchBG = true, destroyCallBack = ClearSelectPlayer }); } private void OnConfirmUseTool(bool confirmed) { if (confirmed) { RequestUseTool(); } else { ClearSelectPlayer(); } } private void ClearSelectPlayer() { _selectPlayer = null; SetupRank(); CheckSelectItemForPlayerPanel(); } } }