using System; using UILib; using UnityEngine; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient.UI { internal class ExchangeItemDlg : DlgBase { public override bool autoload { get { return true; } } public override string fileName { get { return "Guild/GuildCollect/ExchangeItemDlg"; } } private XExchangeItemDocument _doc = null; private readonly int COLNUM = 4; private Vector2 m_DragDistance = Vector2.zero; private bool m_CancelRecord = false; private uint _audioPlayToken; protected override void Init() { base.Init(); this._doc = XDocuments.GetSpecificDocument(XExchangeItemDocument.uuID); } public override void RegisterEvent() { base.RegisterEvent(); base.uiBehaviour.m_Close.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnCloseBtnClick)); base.uiBehaviour.m_EnsureBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnEnsureBtnClick)); base.uiBehaviour.m_Input.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnInputBtnClick)); base.uiBehaviour.m_SpeakBtn.RegisterPressEventHandler(new ButtonPressEventHandler(this.OnVoiceButton)); base.uiBehaviour.m_SpeakBtn.RegisterDragEventHandler(new ButtonDragEventHandler(this.OnVoiceButtonDrag)); base.uiBehaviour.m_MyVoiceBtn.ID = 0UL; base.uiBehaviour.m_MyVoiceBtn.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnAudioPlayClick)); base.uiBehaviour.m_OtherVoiceBtn.ID = 1UL; base.uiBehaviour.m_OtherVoiceBtn.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnAudioPlayClick)); } protected override void OnShow() { base.uiBehaviour.m_MyVoiceBtn.SetVisible(false); base.uiBehaviour.m_MyInputGo.SetActive(false); base.uiBehaviour.m_OtherVoiceBtn.SetVisible(false); base.uiBehaviour.m_OtherInputGo.SetActive(false); XSingleton.singleton.SetBusStatuMute("bus:/MainGroupControl/Except_Quiz", 0f); XSingleton.singleton.SetBusStatuMute("bus:/MainGroupControl/Quiz ", 1f); DlgBase.singleton.SetMaqueeSwitch(false); XSingleton.singleton.EnableAutoPlay(false); base.OnShow(); } public void InitShow(string name, uint prof) { this.SetVisibleWithAnimation(true, null); base.uiBehaviour.m_Title.SetText(string.Format(XStringDefineProxy.GetString("ExchangeTitle"), this._doc.ExchangeItemStr)); base.uiBehaviour.m_MyItemGo.SetActive(false); base.uiBehaviour.m_OtherItemGo.SetActive(false); IXUILabel ixuilabel = base.uiBehaviour.transform.Find("Bg/Other/Name").GetComponent("XUILabel") as IXUILabel; IXUISprite ixuisprite = base.uiBehaviour.transform.Find("Bg/Other/head").GetComponent("XUISprite") as IXUISprite; ixuilabel.SetText(name); ixuisprite.spriteName = XSingleton.singleton.GetSuperRiskAvatar(prof % 10u); bool flag = XSingleton.singleton.XPlayerData != null; if (flag) { IXUILabel ixuilabel2 = base.uiBehaviour.transform.Find("Bg/Self/Name").GetComponent("XUILabel") as IXUILabel; IXUISprite ixuisprite2 = base.uiBehaviour.transform.Find("Bg/Self/head").GetComponent("XUISprite") as IXUISprite; ixuilabel2.SetText(XSingleton.singleton.XPlayerData.Name); ixuisprite2.spriteName = XSingleton.singleton.GetSuperRiskAvatar(XSingleton.singleton.XPlayerData.TypeID % 10u); } this.OnTipsChange(); this.OnEnsureStateChange(); ulong typeFilter = 1UL << this._doc.ExchangeType; this._doc.ItemList.Clear(); XSingleton.singleton.Doc.XBagDoc.GetItemsByType(typeFilter, ref this._doc.ItemList); this.RefreshMyItemList(); base.uiBehaviour.m_ItemScrollView.ResetPosition(); } public void RefreshMyItemList() { base.uiBehaviour.m_MyItemPool.FakeReturnAll(); Vector3 tplPos = base.uiBehaviour.m_MyItemPool.TplPos; int num = 0; for (int i = 0; i < this._doc.ItemList.Count; i++) { bool flag = this._doc.ItemList[i].uid == this._doc.CurrentSelectUid && this._doc.ItemList[i].itemCount == 1; if (!flag) { GameObject gameObject = base.uiBehaviour.m_MyItemPool.FetchGameObject(false); gameObject.transform.localPosition = new Vector3(tplPos.x + (float)(num % this.COLNUM * base.uiBehaviour.m_MyItemPool.TplWidth), tplPos.y - (float)(num / this.COLNUM * base.uiBehaviour.m_MyItemPool.TplHeight), 0f); ItemList.RowData itemConf = XBagDocument.GetItemConf(this._doc.ItemList[i].itemID); int itemCount = (this._doc.ItemList[i].uid == this._doc.CurrentSelectUid) ? (this._doc.ItemList[i].itemCount - 1) : this._doc.ItemList[i].itemCount; XSingleton.singleton.normalItemDrawer.DrawItem(gameObject, itemConf, itemCount, false); IXUISprite ixuisprite = gameObject.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite; ixuisprite.ID = this._doc.ItemList[i].uid; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnItemClick)); num++; } } base.uiBehaviour.m_MyItemPool.ActualReturnAll(false); } public void OnMySelectChange(ulong SelectID) { bool flag = SelectID == 0UL; if (flag) { base.uiBehaviour.m_MyItemGo.SetActive(false); } else { base.uiBehaviour.m_MyItemGo.SetActive(true); int i = 0; while (i < this._doc.ItemList.Count) { bool flag2 = this._doc.ItemList[i].uid == SelectID; if (flag2) { ItemList.RowData itemConf = XBagDocument.GetItemConf(this._doc.ItemList[i].itemID); bool flag3 = itemConf == null; if (flag3) { XSingleton.singleton.AddErrorLog("Can't find my select itemid for itemlist. selectID = ", SelectID.ToString(), null, null, null, null); return; } XSingleton.singleton.normalItemDrawer.DrawItem(base.uiBehaviour.m_MySelect, itemConf, 0, false); base.uiBehaviour.m_MyItemName.SetText(XSingleton.singleton.ChooseProfString(itemConf.ItemName, 0u)); IXUISprite ixuisprite = base.uiBehaviour.m_MySelect.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite; ixuisprite.ID = 0UL; ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnItemClick)); return; } else { i++; } } XSingleton.singleton.AddErrorLog("Can't find MySelectID for bag. MySelectID = ", SelectID.ToString(), null, null, null, null); } } public void OnOtherSelectChange(int SelectID) { bool flag = SelectID == 0; if (flag) { base.uiBehaviour.m_OtherItemGo.SetActive(false); } else { base.uiBehaviour.m_OtherItemGo.SetActive(true); ItemList.RowData itemConf = XBagDocument.GetItemConf(SelectID); bool flag2 = itemConf == null; if (flag2) { XSingleton.singleton.AddErrorLog("Can't find Other select itemid for itemlist. selectID = ", SelectID.ToString(), null, null, null, null); } else { XSingleton.singleton.normalItemDrawer.DrawItem(base.uiBehaviour.m_OtherSelect, itemConf, 0, false); XSingleton.singleton.normalItemDrawer.OpenClickShowTooltipEvent(base.uiBehaviour.m_OtherSelect, SelectID); base.uiBehaviour.m_OtherItemName.SetText(XSingleton.singleton.ChooseProfString(itemConf.ItemName, 0u)); } } } public void OnEnsureStateChange() { base.uiBehaviour.m_MyEnsureText.SetText(XStringDefineProxy.GetString(string.Format("ExchangeMyEnsureTips_{0}", this._doc.MyEnsureState ? 1 : 0))); base.uiBehaviour.m_OtherEnsureText.SetText(XStringDefineProxy.GetString(string.Format("ExchangeOtherEnsureTips_{0}", this._doc.OtherEnsureState ? 1 : 0))); } public void OnTipsChange() { string text = XStringDefineProxy.GetString(string.Format("ExchangeTips_{0}", this._doc.TipsState)); bool flag = this._doc.TipsState == 0 || this._doc.TipsState == 2; if (flag) { text = string.Format(text, this._doc.ExchangeItemStr); } base.uiBehaviour.m_Tips.SetText(text); } protected override void OnHide() { XSingleton.singleton.KillTimer(this._audioPlayToken); XSingleton.singleton.SetBusStatuMute("bus:/MainGroupControl/Except_Quiz", 1f); XSingleton.singleton.SetBusStatuMute("bus:/MainGroupControl/Quiz ", 1f); DlgBase.singleton.SetMaqueeSwitch(true); XSingleton.singleton.EnableAutoPlay(true); XSingleton.singleton.StopAutoPlay(); base.OnHide(); } protected override void OnUnload() { XSingleton.singleton.KillTimer(this._audioPlayToken); base.OnUnload(); } private bool OnCloseBtnClick(IXUIButton btn) { this._doc.QueryCloseUI(); return true; } private void OnItemClick(IXUISprite iSp) { bool flag = this._doc.CurrentSelectUid != iSp.ID; if (flag) { this._doc.QuerySelectItem(iSp.ID); } } private bool OnEnsureBtnClick(IXUIButton btn) { this._doc.QueryEnsureExchange(!this._doc.MyEnsureState); return true; } public void RefreshMyChat() { bool flag = this._doc.MyAudioID == 0UL; if (flag) { base.uiBehaviour.m_MyInputGo.SetActive(true); base.uiBehaviour.m_MyVoiceBtn.SetVisible(false); base.uiBehaviour.m_MyInputText.SetText(this._doc.MyInputText); } else { base.uiBehaviour.m_MyInputGo.SetActive(false); base.uiBehaviour.m_MyVoiceBtn.SetVisible(true); this.OnAudioPlayClick(base.uiBehaviour.m_MyVoiceBtn); base.uiBehaviour.m_MyVoiceText.SetText(this._doc.MyInputText); } } public void RefreshOtherChat() { bool flag = this._doc.OtherAudioID == 0UL; if (flag) { base.uiBehaviour.m_OtherInputGo.SetActive(true); base.uiBehaviour.m_OtherVoiceBtn.SetVisible(false); base.uiBehaviour.m_OtherInputText.SetText(this._doc.OtherInputText); } else { base.uiBehaviour.m_OtherInputGo.SetActive(false); base.uiBehaviour.m_OtherVoiceBtn.SetVisible(true); this.OnAudioPlayClick(base.uiBehaviour.m_OtherVoiceBtn); base.uiBehaviour.m_OtherVoiceText.SetText(this._doc.OtherInputText); } } private void OnAudioPlayClick(IXUISprite iSp) { XSingleton.singleton.StopAutoPlay(); base.uiBehaviour.m_MyVoiceAni.StopAndReset(); base.uiBehaviour.m_OtherVoiceAni.StopAndReset(); XSingleton.singleton.KillTimer(this._audioPlayToken); bool flag = iSp.ID == 0UL; if (flag) { XSingleton.singleton.StartPlayAudioId(this._doc.MyAudioID); base.uiBehaviour.m_MyVoiceAni.Reset(); this._audioPlayToken = XSingleton.singleton.SetTimer(this._doc.MyAudioTime / 1000f, new XTimerMgr.ElapsedEventHandler(this.OnPlayEnd), null); XSingleton.singleton.AddLog("exchange my voice time = ", this._doc.MyAudioTime.ToString(), null, null, null, null, XDebugColor.XDebug_None); } else { XSingleton.singleton.StartPlayAudioId(this._doc.OtherAudioID); base.uiBehaviour.m_OtherVoiceAni.Reset(); this._audioPlayToken = XSingleton.singleton.SetTimer(this._doc.OtherAudioTime / 1000f, new XTimerMgr.ElapsedEventHandler(this.OnPlayEnd), null); XSingleton.singleton.AddLog("exchange other voice time = ", this._doc.OtherAudioTime.ToString(), null, null, null, null, XDebugColor.XDebug_None); } } private void OnPlayEnd(object o = null) { base.uiBehaviour.m_MyVoiceAni.StopAndReset(); base.uiBehaviour.m_OtherVoiceAni.StopAndReset(); } private bool OnInputBtnClick(IXUIButton btn) { DlgBase.singleton.ShowChatInput(new ChatInputStringBack(this.OnInputStringGet)); DlgBase.singleton.SetInputType(ChatInputType.TEXT); DlgBase.singleton.SetCharacterLimit(50); return true; } public void OnInputStringGet(string str) { XSingleton.singleton.AddLog("Player input string is ", str, null, null, null, null, XDebugColor.XDebug_None); this._doc.SendChat(str, 0UL, 0u); } private void OnVoiceButtonDrag(IXUIButton sp, Vector2 delta) { this.m_DragDistance += delta; bool flag = this.m_DragDistance.magnitude >= 100f; if (flag) { this.m_CancelRecord = true; } else { this.m_CancelRecord = false; } } private void OnVoiceButton(IXUIButton sp, bool state) { if (state) { this.m_CancelRecord = false; XSingleton.singleton.AddLog("Press down", null, null, null, null, null, XDebugColor.XDebug_None); this.m_DragDistance = Vector2.zero; bool answerUseApollo = XChatDocument.m_AnswerUseApollo; if (answerUseApollo) { XSingleton.singleton.StartRecord(VoiceUsage.GUILDCOLLECT, null); } else { XSingleton.singleton.StartRecord(VoiceUsage.GUILDCOLLECT, null); } } else { XSingleton.singleton.AddLog("Press up", null, null, null, null, null, XDebugColor.XDebug_None); DlgBase.singleton.SetActiveChannel(ChatChannelType.Team); bool answerUseApollo2 = XChatDocument.m_AnswerUseApollo; if (answerUseApollo2) { XSingleton.singleton.StopRecord(this.m_CancelRecord); } else { XSingleton.singleton.StopRecord(this.m_CancelRecord); } this.m_CancelRecord = false; } } } }