From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/UI/WeddingSceneHandler.cs | 581 +++++++++++++++++++++ 1 file changed, 581 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/UI/WeddingSceneHandler.cs (limited to 'Client/Assets/Scripts/XMainClient/UI/WeddingSceneHandler.cs') diff --git a/Client/Assets/Scripts/XMainClient/UI/WeddingSceneHandler.cs b/Client/Assets/Scripts/XMainClient/UI/WeddingSceneHandler.cs new file mode 100644 index 00000000..e7c0be48 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/UI/WeddingSceneHandler.cs @@ -0,0 +1,581 @@ +using System; +using System.Collections.Generic; +using KKSG; +using UILib; +using UnityEngine; +using XMainClient.UI.UICommon; +using XUtliPoolLib; + +namespace XMainClient.UI +{ + internal class WeddingSceneHandler : DlgHandlerBase + { + protected override string FileName + { + get + { + return "GameSystem/Wedding/WeddingSceneHandler"; + } + } + + private IXUIButton m_exitHomeBtn; + + private IXUIButton m_FlowerBtn; + + private GameObject m_FlowerCD; + + private IXUILabel m_FlowerCDTime; + + private IXUIButton m_FireworksBtn; + + private GameObject m_FireworksCD; + + private IXUILabel m_FireworksCDTime; + + private IXUIButton m_SwearBtn; + + private IXUIButton m_InviteFriendsBtn; + + private IXUILabel m_Happiness; + + private IXUILabel m_HappinessMax; + + private IXUILabel m_Content; + + private IXUILabel m_WeddingName; + + private IXUIList m_BtnsGrid; + + private IXUISprite m_HappinessBtn; + + private GameObject m_SwearDlg; + + private IXUIButton m_AskSwearBtn; + + private IXUILabel m_HappinessValue; + + private IXUIButton m_CloseSwearBtn; + + private GameObject m_SwearFX; + + private GameObject m_InviteRedPoint; + + private IXUILabel m_Tip1; + + private IXUILabel m_Tip2; + + private XFx m_Fireworks; + + private XFx m_Candy; + + private uint m_Tip1CDToken; + + private string m_Tip1Content; + + private bool m_UpdateTip2 = false; + + private int m_FlowerTime = 0; + + private int m_FireworksTime = 0; + + private uint _CDTokenFlower = 0u; + + private uint _CDTokenFireworks = 0u; + + private List m_vecGuestShowTime = new List(); + + private int m_guestIndex = 0; + + private uint m_weddingRunTime = 0u; + + private bool m_HasVows = false; + + private bool m_HasShowVows = false; + + protected override void Init() + { + this.m_exitHomeBtn = (base.PanelObject.transform.Find("ExitHome").GetComponent("XUIButton") as IXUIButton); + this.m_Happiness = (base.PanelObject.transform.Find("Happiness/Value").GetComponent("XUILabel") as IXUILabel); + this.m_HappinessMax = (base.PanelObject.transform.Find("Happiness/Max").GetComponent("XUILabel") as IXUILabel); + this.m_HappinessBtn = (base.PanelObject.transform.Find("Happiness/P").GetComponent("XUISprite") as IXUISprite); + this.m_FlowerBtn = (base.PanelObject.transform.Find("Grid/SysAFlower").GetComponent("XUIButton") as IXUIButton); + this.m_FlowerCDTime = (base.PanelObject.transform.Find("Grid/SysAFlower/Mask/time").GetComponent("XUILabel") as IXUILabel); + this.m_FlowerCD = base.PanelObject.transform.Find("Grid/SysAFlower/Mask").gameObject; + this.m_FlowerCD.SetActive(false); + this.m_FireworksBtn = (base.PanelObject.transform.Find("Grid/SysBFireworks").GetComponent("XUIButton") as IXUIButton); + this.m_FireworksCDTime = (base.PanelObject.transform.Find("Grid/SysBFireworks/Mask/time").GetComponent("XUILabel") as IXUILabel); + this.m_FireworksCD = base.PanelObject.transform.Find("Grid/SysBFireworks/Mask").gameObject; + this.m_FireworksCD.SetActive(false); + this.m_SwearBtn = (base.PanelObject.transform.Find("Grid/SysDSwear").GetComponent("XUIButton") as IXUIButton); + this.m_InviteFriendsBtn = (base.PanelObject.transform.Find("Grid/SysCInvite").GetComponent("XUIButton") as IXUIButton); + this.m_InviteRedPoint = base.PanelObject.transform.Find("Grid/SysCInvite/RedPoint").gameObject; + this.m_WeddingName = (base.PanelObject.transform.Find("Name").GetComponent("XUILabel") as IXUILabel); + this.m_BtnsGrid = (base.PanelObject.transform.Find("Grid").GetComponent("XUIList") as IXUIList); + this.m_SwearFX = base.PanelObject.transform.Find("Grid/SysDSwear/FX").gameObject; + this.m_SwearDlg = base.PanelObject.transform.Find("SwearDlg").gameObject; + this.m_AskSwearBtn = (base.PanelObject.transform.Find("SwearDlg/Bg/OK").GetComponent("XUIButton") as IXUIButton); + this.m_CloseSwearBtn = (base.PanelObject.transform.Find("SwearDlg/Bg/Close").GetComponent("XUIButton") as IXUIButton); + this.m_HappinessValue = (base.PanelObject.transform.Find("SwearDlg/Bg/Happiness/Value").GetComponent("XUILabel") as IXUILabel); + this.m_Content = (base.PanelObject.transform.Find("SwearDlg/Bg/Label").GetComponent("XUILabel") as IXUILabel); + this.m_SwearDlg.gameObject.SetActive(false); + this.m_Tip1 = (base.PanelObject.transform.Find("Tip1").GetComponent("XUILabel") as IXUILabel); + this.m_Tip1.gameObject.SetActive(false); + this.m_Tip2 = (base.PanelObject.transform.Find("Tip2").GetComponent("XUILabel") as IXUILabel); + this.m_Tip2.gameObject.SetActive(false); + base.Init(); + } + + public override void RegisterEvent() + { + this.m_exitHomeBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickExitHome)); + this.m_FlowerBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickFlowerBtn)); + this.m_FireworksBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickFireworksBtn)); + this.m_SwearBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickSwearBtn)); + this.m_InviteFriendsBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnClickInviteFriendsBtn)); + this.m_AskSwearBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnAskSwearBtn)); + this.m_CloseSwearBtn.RegisterClickEventHandler(new ButtonClickEventHandler(this.OnCloseSwear)); + this.m_HappinessBtn.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnHappinessClick)); + base.RegisterEvent(); + } + + protected override void OnShow() + { + base.OnShow(); + this.m_HappinessMax.SetText(string.Format("/{0}", XSingleton.singleton.GetValue("WeddingMaxHappyness"))); + this.m_vecGuestShowTime = XSingleton.singleton.GetUIntList("WeddingGuestShowTime"); + this.m_weddingRunTime = uint.Parse(XSingleton.singleton.GetValue("WeddingRunningTime")); + this.m_Content.SetText(XSingleton.singleton.ReplaceReturn(XSingleton.singleton.GetString("WeddingSwearTip"))); + bool flag = XWeddingDocument.Doc.CurrWeddingInfo != null && XWeddingDocument.Doc.CurrWeddingInfo.role1 != null && XWeddingDocument.Doc.CurrWeddingInfo.role2 != null; + if (flag) + { + this.m_WeddingName.SetText(XStringDefineProxy.GetString("WeddingName", new object[] + { + XWeddingDocument.Doc.CurrWeddingInfo.role1.name, + XWeddingDocument.Doc.CurrWeddingInfo.role2.name + })); + this.m_SwearBtn.gameObject.SetActive(this.IsWeddingLover()); + this.m_InviteFriendsBtn.gameObject.SetActive(this.IsWeddingLover()); + this.m_BtnsGrid.Refresh(); + } + this.m_FlowerCD.SetActive(false); + this.m_FireworksCD.SetActive(false); + this.m_HasVows = false; + this.m_SwearFX.SetActive(false); + this.m_InviteRedPoint.SetActive(XWeddingDocument.Doc.HasApplyCandidate); + this.m_HasShowVows = false; + } + + private bool IsWeddingLover() + { + bool flag = XWeddingDocument.Doc.CurrWeddingInfo != null && XWeddingDocument.Doc.CurrWeddingInfo.role1 != null && XWeddingDocument.Doc.CurrWeddingInfo.role2 != null; + bool result; + if (flag) + { + ulong roleID = XSingleton.singleton.XPlayerData.RoleID; + result = (roleID == XWeddingDocument.Doc.CurrWeddingInfo.role1.roleid || roleID == XWeddingDocument.Doc.CurrWeddingInfo.role2.roleid); + } + else + { + result = false; + } + return result; + } + + protected override void OnHide() + { + base.OnHide(); + bool flag = this.m_Fireworks != null; + if (flag) + { + XSingleton.singleton.DestroyFx(this.m_Fireworks, true); + this.m_Fireworks = null; + } + bool flag2 = this.m_Candy != null; + if (flag2) + { + XSingleton.singleton.DestroyFx(this.m_Candy, true); + this.m_Candy = null; + } + XSingleton.singleton.KillTimer(this.m_Tip1CDToken); + XSingleton.singleton.KillTimer(this._CDTokenFlower); + XSingleton.singleton.KillTimer(this._CDTokenFireworks); + } + + private bool OnClickExitHome(IXUIButton btn) + { + XSingleton.singleton.ReqLeaveScene(); + return true; + } + + private bool OnClickFlowerBtn(IXUIButton btn) + { + DlgBase.singleton.SetVisible(true, true); + DlgBase.singleton.SetSingleButtonMode(false); + string[] andSeparateValue = XSingleton.singleton.GetAndSeparateValue("WeddingFlowerCost", XGlobalConfig.SequenceSeparator); + uint num = uint.Parse(andSeparateValue[1]) * XWeddingDocument.Doc.AllAttendPlayerCount; + string text = ""; + ItemList.RowData itemConf = XBagDocument.GetItemConf(int.Parse(andSeparateValue[0])); + bool flag = itemConf != null; + if (flag) + { + text = XSingleton.singleton.ChooseProfString(itemConf.ItemName, 0u); + } + string mainLabel = string.Format(XStringDefineProxy.GetString("WeddingFlowerTip", new object[] + { + num, + text + }), new object[0]); + string @string = XStringDefineProxy.GetString(XStringDefine.COMMON_OK); + string string2 = XStringDefineProxy.GetString(XStringDefine.COMMON_CANCEL); + DlgBase.singleton.SetLabelsWithSymbols(mainLabel, @string, string2); + DlgBase.singleton.SetModalCallback(new ButtonClickEventHandler(this.EnsureFlower), null); + return true; + } + + private bool EnsureFlower(IXUIButton btn) + { + DlgBase.singleton.SetVisible(false, true); + XWeddingDocument.Doc.WeddingSceneOperator(WeddingOperType.WeddingOper_Flower); + return true; + } + + public void RefreshInviteRedPoint() + { + this.m_InviteRedPoint.SetActive(XWeddingDocument.Doc.HasApplyCandidate); + } + + public void OnFlowerRain() + { + Transform transform = XSingleton.singleton.UIRoot.Find("Camera").transform; + string value = XSingleton.singleton.GetValue("WeddingFlowerFxPath"); + XFx xfx = XSingleton.singleton.CreateUIFx(value, transform, false); + xfx.DelayDestroy = 3f; + XSingleton.singleton.DestroyFx(xfx, false); + } + + private bool OnClickFireworksBtn(IXUIButton btn) + { + DlgBase.singleton.SetVisible(true, true); + DlgBase.singleton.SetSingleButtonMode(false); + string[] andSeparateValue = XSingleton.singleton.GetAndSeparateValue("WeddingFireworksCost", XGlobalConfig.SequenceSeparator); + uint num = uint.Parse(andSeparateValue[1]) * XWeddingDocument.Doc.AllAttendPlayerCount; + string text = ""; + ItemList.RowData itemConf = XBagDocument.GetItemConf(int.Parse(andSeparateValue[0])); + bool flag = itemConf != null; + if (flag) + { + text = XSingleton.singleton.ChooseProfString(itemConf.ItemName, 0u); + } + string mainLabel = string.Format(XStringDefineProxy.GetString("WeddingFireworksTip", new object[] + { + num, + text + }), new object[0]); + string @string = XStringDefineProxy.GetString(XStringDefine.COMMON_OK); + string string2 = XStringDefineProxy.GetString(XStringDefine.COMMON_CANCEL); + DlgBase.singleton.SetLabelsWithSymbols(mainLabel, @string, string2); + DlgBase.singleton.SetModalCallback(new ButtonClickEventHandler(this.EnsureFireworks), null); + return true; + } + + private bool EnsureFireworks(IXUIButton btn) + { + DlgBase.singleton.SetVisible(false, true); + XWeddingDocument.Doc.WeddingSceneOperator(WeddingOperType.WeddingOper_Fireworks); + return true; + } + + public void OnFireworks() + { + bool flag = this.m_Fireworks != null; + if (flag) + { + XSingleton.singleton.DestroyFx(this.m_Fireworks, true); + } + Transform transform = XSingleton.singleton.UIRoot.Find("Camera").transform; + string value = XSingleton.singleton.GetValue("WeddingFireworksPath"); + this.m_Fireworks = XSingleton.singleton.CreateUIFx(value, transform, false); + } + + public void OnCandyFx() + { + bool flag = this.m_Candy != null; + if (flag) + { + XSingleton.singleton.DestroyFx(this.m_Candy, true); + } + Transform transform = XSingleton.singleton.UIRoot.Find("Camera").transform; + string value = XSingleton.singleton.GetValue("WeddingCandyPath"); + this.m_Candy = XSingleton.singleton.CreateUIFx(value, transform, false); + } + + private bool OnClickSwearBtn(IXUIButton btn) + { + this.m_SwearDlg.SetActive(true); + return true; + } + + public void CoolDownBtn(WeddingOperType type) + { + if (type != WeddingOperType.WeddingOper_Flower) + { + if (type == WeddingOperType.WeddingOper_Fireworks) + { + this.m_FireworksTime = XSingleton.singleton.GetInt("WeddingFireworksCD"); + this.m_FireworksCDTime.SetText(this.m_FireworksTime.ToString()); + this.m_FireworksCD.SetActive(true); + this.StarFireworksTimer(); + } + } + else + { + this.m_FlowerTime = XSingleton.singleton.GetInt("WeddingFlowCD"); + this.m_FlowerCDTime.SetText(this.m_FlowerTime.ToString()); + this.m_FlowerCD.SetActive(true); + this.StarFlowerTimer(); + } + } + + private void StarFlowerTimer() + { + bool flag = !base.IsVisible(); + if (!flag) + { + XSingleton.singleton.KillTimer(this._CDTokenFlower); + this._CDTokenFlower = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdateFlower), null); + } + } + + private void StarFireworksTimer() + { + bool flag = !base.IsVisible(); + if (!flag) + { + XSingleton.singleton.KillTimer(this._CDTokenFireworks); + this._CDTokenFireworks = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdateFireworks), null); + } + } + + private void LeftTimeUpdateFlower(object o) + { + this.m_FlowerTime--; + XSingleton.singleton.KillTimer(this._CDTokenFlower); + bool flag = this.m_FlowerTime <= 0; + if (flag) + { + this.m_FlowerCD.SetActive(false); + } + else + { + this.m_FlowerCDTime.SetText(this.m_FlowerTime.ToString()); + this._CDTokenFlower = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdateFlower), null); + } + } + + private void LeftTimeUpdateFireworks(object o) + { + this.m_FireworksTime--; + XSingleton.singleton.KillTimer(this._CDTokenFireworks); + bool flag = this.m_FireworksTime <= 0; + if (flag) + { + this.m_FireworksCD.SetActive(false); + } + else + { + this.m_FireworksCDTime.SetText(this.m_FireworksTime.ToString()); + this._CDTokenFireworks = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTimeUpdateFireworks), null); + } + } + + private bool OnClickInviteFriendsBtn(IXUIButton btn) + { + DlgBase.singleton.SetVisibleWithAnimation(true, null); + return true; + } + + public void ShowPartnerSwearNtf(string name) + { + DlgBase.singleton.SetVisible(true, true); + DlgBase.singleton.SetSingleButtonMode(false); + string @string = XStringDefineProxy.GetString("WeddingSwearTitle"); + string mainLabel = string.Format(XSingleton.singleton.ReplaceReturn(XSingleton.singleton.GetString("WeddingSwearContent")), name); + string string2 = XStringDefineProxy.GetString(XStringDefine.COMMON_OK); + string string3 = XStringDefineProxy.GetString("WeddingSwearCancel"); + DlgBase.singleton.SetTitle(@string); + DlgBase.singleton.SetLabelsWithSymbols(mainLabel, string2, string3); + DlgBase.singleton.SetModalCallback(new ButtonClickEventHandler(this.EnsureSwear), new ButtonClickEventHandler(this.NotEnsureSwear)); + } + + private bool EnsureSwear(IXUIButton btn) + { + XWeddingDocument.Doc.WeddingSceneOperator(WeddingOperType.WeddingOper_AgreeVows); + DlgBase.singleton.SetVisible(false, true); + return true; + } + + private bool NotEnsureSwear(IXUIButton btn) + { + XWeddingDocument.Doc.WeddingSceneOperator(WeddingOperType.WeddingOper_DisAgreeVows); + DlgBase.singleton.SetVisible(false, true); + return true; + } + + private bool OnAskSwearBtn(IXUIButton btn) + { + XWeddingDocument.Doc.WeddingSceneOperator(WeddingOperType.WeddingOper_ApplyVows); + return true; + } + + public void ApplyVowsSuss() + { + bool activeSelf = this.m_SwearDlg.activeSelf; + if (activeSelf) + { + this.m_SwearDlg.SetActive(false); + } + XSingleton.singleton.ShowSystemTip(XStringDefineProxy.GetString("WeddingSwearSucc"), "fece00"); + } + + private bool OnCloseSwear(IXUIButton btn) + { + this.m_SwearDlg.SetActive(false); + return true; + } + + public void UpdateHappiness(uint happiness) + { + bool flag = (ulong)happiness >= (ulong)((long)XSingleton.singleton.GetInt("WeddingMaxHappyness")) && !this.m_HasVows && this.IsWeddingLover() && !this.m_HasShowVows; + if (flag) + { + this.OnSwearPop(); + this.m_SwearFX.SetActive(true); + this.m_HasShowVows = true; + } + this.m_HappinessValue.SetText(happiness.ToString()); + this.m_Happiness.SetText(happiness.ToString()); + } + + public void OnVowsPrepare() + { + this.m_HasVows = true; + bool flag = this.IsWeddingLover(); + if (flag) + { + this.m_SwearFX.SetActive(false); + } + } + + public void UpdateWeddingState(WeddingState state, uint lefttime, bool vows) + { + this.m_HasVows = vows; + XSingleton.singleton.AddLog("weddingstate:" + state.ToString() + ", lefttime:" + lefttime.ToString(), null, null, null, null, null, XDebugColor.XDebug_None); + WeddingState weddingState = state; + if (weddingState != WeddingState.WeddingState_Prepare) + { + if (weddingState == WeddingState.WeddingState_Running) + { + this.m_Tip1Content = "WeddingState2"; + this.m_UpdateTip2 = true; + XSingleton.singleton.KillTimer(this.m_Tip1CDToken); + this.m_Tip1CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTime1Update), lefttime); + this.SetTipTime(this.m_Tip1, lefttime, this.m_Tip1Content); + this.CheckGuestShow(lefttime); + } + } + else + { + this.m_Tip1Content = "WeddingState1"; + this.m_UpdateTip2 = false; + XSingleton.singleton.KillTimer(this.m_Tip1CDToken); + this.m_Tip1CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTime1Update), lefttime); + this.SetTipTime(this.m_Tip1, lefttime, this.m_Tip1Content); + bool flag = this.IsWeddingLover(); + if (flag) + { + this.m_Tip2.SetText(XStringDefineProxy.GetString("WeddingState4")); + this.m_Tip2.gameObject.SetActive(true); + } + } + } + + private void LeftTime1Update(object o) + { + uint num = (uint)o - 1u; + this.SetTipTime(this.m_Tip1, num, this.m_Tip1Content); + bool updateTip = this.m_UpdateTip2; + if (updateTip) + { + this.CheckGuestShow(num); + } + XSingleton.singleton.KillTimer(this.m_Tip1CDToken); + bool flag = num > 0u; + if (flag) + { + this.m_Tip1CDToken = XSingleton.singleton.SetTimer(1f, new XTimerMgr.ElapsedEventHandler(this.LeftTime1Update), num); + } + } + + private void CheckGuestShow(uint weddingLeftTime) + { + bool flag = this.m_guestIndex >= this.m_vecGuestShowTime.Count; + if (!flag) + { + uint num = this.m_weddingRunTime - weddingLeftTime; + uint num2 = this.m_vecGuestShowTime[this.m_guestIndex]; + uint time = (num2 > num) ? (num2 - num) : 0u; + this.SetTipTime(this.m_Tip2, time, "WeddingState3"); + bool flag2 = num2 <= num; + if (flag2) + { + this.m_guestIndex++; + } + } + } + + private void SetTipTime(IXUILabel label, uint time, string content) + { + bool flag = time > 0u && time < 60u; + if (flag) + { + label.SetText(XStringDefineProxy.GetString(content, new object[] + { + time, + XSingleton.singleton.GetString("SECOND_DUARATION") + })); + } + else + { + uint num = time / 60u; + label.SetText(XStringDefineProxy.GetString(content, new object[] + { + num, + XSingleton.singleton.GetString("MINUTE_DUARATION") + })); + } + label.gameObject.SetActive(time > 0u); + } + + private void OnHappinessClick(IXUISprite btn) + { + DlgBase.singleton.SetVisible(true, true); + DlgBase.singleton.SetSingleButtonMode(true); + string @string = XStringDefineProxy.GetString("WeddingHappinessTitle"); + string mainLabel = string.Format(XSingleton.singleton.ReplaceReturn(XSingleton.singleton.GetString("WeddingHappinessContent")), new object[0]); + DlgBase.singleton.SetTitle(@string); + DlgBase.singleton.SetLabelsWithSymbols(mainLabel, XStringDefineProxy.GetString(XStringDefine.COMMON_OK), XStringDefineProxy.GetString(XStringDefine.COMMON_OK)); + DlgBase.singleton.SetModalCallback(new ButtonClickEventHandler(this.CloseHappinessDlg), null); + } + + private bool CloseHappinessDlg(IXUIButton btn) + { + DlgBase.singleton.SetVisible(false, true); + return true; + } + + public void OnSwearPop() + { + this.m_SwearDlg.SetActive(true); + } + } +} -- cgit v1.1-26-g67d0