using System; using KKSG; using UILib; using UnityEngine; using XMainClient.UI; using XMainClient.UI.UICommon; using XUtliPoolLib; namespace XMainClient { internal class LevelRewardActivityHandler : DlgHandlerBase { protected override string FileName { get { return "Battle/LevelReward/LevelRewardActivityFrame"; } } private XLevelRewardDocument _doc = null; private Transform m_ActivityNormalFrame; private XUIPool m_ActivityItemPool = new XUIPool(XSingleton.singleton.m_uiTool); private IXUISprite m_ActivityContinue; private IXUISprite m_ActivityRestart; private Transform m_BrokeRecord; private IXUILabel[] m_ActivityMsg = new IXUILabel[3]; private IUIDummy m_snapshot; private uint m_show_time_token = 0u; protected override void Init() { base.Init(); this._doc = XDocuments.GetSpecificDocument(XLevelRewardDocument.uuID); this.InitUI(); } private void InitUI() { this.m_ActivityNormalFrame = base.transform.Find("Normal"); this.m_ActivityContinue = (base.transform.Find("Continue").GetComponent("XUISprite") as IXUISprite); this.m_ActivityRestart = (base.transform.Find("Restart").GetComponent("XUISprite") as IXUISprite); Transform transform = base.transform.Find("Normal/ItemList/ScrollView/Item"); this.m_ActivityItemPool.SetupPool(transform.parent.gameObject, transform.gameObject, 5u, false); this.m_BrokeRecord = base.transform.Find("Normal/Detail/BrokeRecord"); for (int i = 0; i < 3; i++) { this.m_ActivityMsg[i] = (base.transform.Find(string.Format("Normal/Detail/Msg{0}", i + 1)).GetComponent("XUILabel") as IXUILabel); } this.m_snapshot = (base.PanelObject.transform.Find("Snapshot/Snapshot").GetComponent("UIDummy") as IUIDummy); } public override void RegisterEvent() { base.RegisterEvent(); this.m_ActivityContinue.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnContinueClick)); this.m_ActivityRestart.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(this.OnRestartClick)); } private void OnContinueClick(IXUISprite sp) { this._doc.SendLeaveScene(); } private void OnRestartClick(IXUISprite sp) { this._doc.ReEnterLevel(); } protected override void OnShow() { base.OnShow(); this.ShowActivityFrame(); } protected override void OnHide() { XSingleton.singleton.KillTimer(this.m_show_time_token); XSingleton.singleton.EnableMainDummy(false, null); base.OnHide(); } public override void OnUnload() { XSingleton.singleton.OnUIUnloadMainDummy(this.m_snapshot); XSingleton.singleton.KillTimer(this.m_show_time_token); base.OnUnload(); } public void ShowActivityFrame() { this.m_ActivityMsg[0].SetVisible(true); this.m_ActivityMsg[1].SetVisible(true); this.m_ActivityMsg[2].SetVisible(true); SceneType currentStage = this._doc.CurrentStage; if (currentStage == SceneType.SCENE_BOSSRUSH || currentStage == SceneType.SCENE_TOWER) { this.m_ActivityNormalFrame.gameObject.SetActive(true); this.m_ActivityItemPool.FakeReturnAll(); for (int i = 0; i < this._doc.Items.Count; i++) { GameObject gameObject = this.m_ActivityItemPool.FetchGameObject(true); IXUISprite ixuisprite = gameObject.transform.Find("Icon").GetComponent("XUISprite") as IXUISprite; ixuisprite.ID = (ulong)this._doc.Items[i].itemID; XSingleton.singleton.normalItemDrawer.DrawItem(gameObject, (int)this._doc.Items[i].itemID, (int)this._doc.Items[i].itemCount, false); gameObject.transform.localPosition = new Vector3(this.m_ActivityItemPool.TplPos.x + (float)(i * this.m_ActivityItemPool.TplWidth), this.m_ActivityItemPool.TplPos.y); bool isbind = this._doc.Items[i].isbind; if (isbind) { ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(XSingleton.singleton.OnBindItemClick)); } else { ixuisprite.RegisterSpriteClickEventHandler(new SpriteClickEventHandler(XSingleton.singleton.OnItemClick)); } } this.m_BrokeRecord.gameObject.SetActive(this._doc.BrokeRecords); this.m_ActivityRestart.SetVisible(false); XSingleton.singleton.EnableMainDummy(true, this.m_snapshot); float interval = XSingleton.singleton.SetMainAnimationGetLength(XSingleton.singleton.Player.Present.PresentLib.Disappear); this.m_show_time_token = XSingleton.singleton.SetTimer(interval, new XTimerMgr.ElapsedEventHandler(this.KillDummyTimer), null); SceneType currentStage2 = this._doc.CurrentStage; if (currentStage2 != SceneType.SCENE_BOSSRUSH) { if (currentStage2 != SceneType.SCENE_TOWER) { this.m_ActivityMsg[0].SetText(""); this.m_ActivityMsg[1].SetText(XStringDefineProxy.GetString("SMALLMONSTER_RANK", new object[] { this._doc.SmallMonsterRank })); this.m_ActivityMsg[2].SetText(""); this.m_ActivityMsg[0].SetVisible(false); this.m_ActivityMsg[2].SetVisible(false); } else { SceneTable.RowData sceneData = XSingleton.singleton.GetSceneData(XSingleton.singleton.SceneID); string text = ""; bool flag = sceneData != null; if (flag) { text = XStringDefineProxy.GetString("TOWER_PPT", new object[] { sceneData.RecommendPower }); } this.m_ActivityMsg[0].SetText(XStringDefineProxy.GetString("TOWER_WAVE", new object[] { this._doc.TowerFloor })); this.m_ActivityMsg[1].SetText(text); this.m_ActivityMsg[2].SetText(XStringDefineProxy.GetString("TOWER_TIME", new object[] { XSingleton.singleton.TimeFormatString(this._doc.LevelFinishTime, 2, 3, 4, false, true) })); this.m_ActivityRestart.SetVisible(true); } } else { XBossBushDocument xbossBushDocument = XSingleton.singleton.Doc.GetXComponent(XBossBushDocument.uuID) as XBossBushDocument; UnitAppearance cacheServerMonster = XSingleton.singleton.GetCacheServerMonster(1u); this.m_ActivityMsg[0].SetText(XStringDefineProxy.GetString("FINISH_WAVE", new object[] { Mathf.Min(DlgBase.singleton.isWin ? xbossBushDocument.respData.currank : (xbossBushDocument.respData.currank - 1), XSingleton.singleton.GetInt("BossRushMaxWave")) })); this.m_ActivityMsg[1].SetText(XStringDefineProxy.GetString("BOSSRUSH_NAME", new object[] { xbossBushDocument.entityRow.Name })); this.m_ActivityMsg[2].SetText(""); this.m_ActivityMsg[2].SetVisible(false); } this.m_ActivityItemPool.ActualReturnAll(false); } } private void KillDummyTimer(object sender) { XSingleton.singleton.KillTimer(this.m_show_time_token); XSingleton.singleton.SetMainAnimation(XSingleton.singleton.Player.Present.PresentLib.AttackIdle); } } }