Core/NetworkPackage/ClientPack/ClientToMapServer/CB1_ActionMap/CB108_tagCMFBQuickPass.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; // B1 08 快速一键过关副本 #tagCMFBQuickPass public class CB108_tagCMFBQuickPass : GameNetPackBasic { public uint MapID; public ushort LineID; public CB108_tagCMFBQuickPass () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xB108; } public override void WriteToBytes () { WriteBytes (MapID, NetDataType.DWORD); WriteBytes (LineID, NetDataType.WORD); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CB1_ActionMap/CB108_tagCMFBQuickPass.cs.meta
File was renamed from Core/NetworkPackage/ClientPack/ClientToMapServer/CB1_ActionMap/CB108_tagCMRefreshCustomFBPrize.cs.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 guid: 82b61f8b44b0c6f459ef79578d4357af timeCreated: 1555060380 licenseType: Pro guid: 2f7ba87dc3227bd47865a23a487d44c2 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 Core/NetworkPackage/ClientPack/ClientToMapServer/CB1_ActionMap/CB108_tagCMRefreshCustomFBPrize.cs
File was deleted Core/NetworkPackage/ClientPack/ClientToMapServer/CB1_ActionMap/CB109_tagCMGiveCustomFBPrize.cs
File was deleted Core/NetworkPackage/ClientPack/ClientToMapServer/CB1_ActionMap/CB109_tagCMGiveCustomFBPrize.cs.meta
File was deleted System/Dungeon/DungeonData.cs
@@ -42,6 +42,7 @@ public int curOrder; // 之前排名 public int updOrder; //更新后排名 public int quickPass; //快速通关 public int isSweep; public int dataMapID; public int lineID; System/Dungeon/DungeonModel.cs
@@ -1228,12 +1228,27 @@ break; } } else if (m_DungeonResult.quickPass == 1) { //switch (m_DungeonResult.dataMapID) //{ // case RuneTowerModel.RUNETOWER_MAPID: // WindowCenter.Instance.Open<DungeonRuneTowerVictoryWin>(); // break; // case SkyTowerModel.DATA_MAPID: // WindowCenter.Instance.Open<SkyTowerVictoryWin>(); // break; // case RealmModel.Tower_MapId: // WindowCenter.Instance.Open<RealmTowerVictoryWin>(); // break; //} } else { if (m_DungeonResult.dataMapID != RuneTowerModel.RUNETOWER_MAPID && m_DungeonResult.dataMapID != SkyTowerModel.DATA_MAPID && m_DungeonResult.dataMapID != RealmModel.Tower_MapId) { { WindowJumpMgr.Instance.ClearJumpData(); WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.BaseAndCustom); WindowCenter.Instance.Open<MainInterfaceWin>(); @@ -1783,6 +1798,18 @@ } } //个人等副本不让使用雷诛,容易造成数据冲突 public bool CanFlashKill() { var mapId = PlayerDatas.Instance.baseData.MapID; var mapConfig = MapConfig.Get(mapId); if (mapConfig.MapFBType == (int)MapType.SingleFB || mapConfig.MapFBType == (int)MapType.VSRoom) { return false; } return true; } } } System/Realm/RealmModel.cs
@@ -143,6 +143,13 @@ public event Action realmExpRefresh; public event Action<bool> xxzlStateRefresh; public event Action<int> OnFlashOverEvent; public void OnFlashOver(int state) { if (OnFlashOverEvent != null) OnFlashOverEvent(state); } EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } } EquipStarModel equipStarModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } } System/Realm/RealmTowerFloorCell.cs
@@ -16,8 +16,11 @@ [SerializeField] Image m_Passed; [SerializeField] TextEx m_FloorName; [SerializeField] Transform m_SelectImg; [SerializeField] UIFrame m_FlashFrame; [SerializeField] PositionTween m_FloorTween; RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } public void Display(int _floorId) { @@ -26,6 +29,32 @@ m_Challenge.SetActive(realmModel.currentFloor == _floorId); m_Passed.SetActive(realmModel.currentFloor > _floorId); m_SelectImg.SetActive(realmModel.selectFloorID == _floorId); dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent; m_FlashFrame.SetActive(false); if (realmModel.currentFloor == _floorId && dungeonModel.CanFlashKill()) { dungeonModel.onDungeonResultEvent += OnDungeonResultEvent; } } private void OnDisable() { dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent; } private void OnDungeonResultEvent() { if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == RealmModel.Tower_MapId) { m_FlashFrame.SetActive(true); m_FloorTween.Play(() => { m_FlashFrame.SetActive(false); realmModel.OnFlashOver(1); }); SoundPlayer.Instance.PlayUIAudio(857); } } } System/Realm/RealmTowerWin.cs
@@ -23,8 +23,11 @@ [SerializeField] TextEx m_TopNow; [SerializeField] TextEx m_TowerName; [SerializeField] Button m_Close; [SerializeField] Button m_FlashKill; [SerializeField] Text m_FlashKillCount; RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } #region Built-in protected override void BindController() @@ -40,8 +43,8 @@ protected override void OnPreOpen() { m_TowerBehaviour.OnRefreshCell += RefreshCell; realmModel.OnTowerPassEvent += OnTowerPassEvent; //realmModel.OnTowerPassEvent += OnTowerPassEvent; realmModel.OnFlashOverEvent += OnFlashOverEvent; Display(); OnCreateScroller(); } @@ -53,7 +56,8 @@ protected override void OnPreClose() { m_TowerBehaviour.OnRefreshCell -= RefreshCell; realmModel.OnTowerPassEvent -= OnTowerPassEvent; //realmModel.OnTowerPassEvent -= OnTowerPassEvent; realmModel.OnFlashOverEvent -= OnFlashOverEvent; } protected override void OnAfterClose() @@ -65,6 +69,29 @@ } #endregion void OnFlashOverEvent(int state) { var floors = RealmTowerConfig.GetFloorsByFloorID(realmModel.currentFloor); m_TowerBehaviour.MoveToIndex(floors.Count - floors.IndexOf(realmModel.currentFloor) - 3, 0.2f, EnhancedScroller.TweenType.easeInQuad); Clock.AlarmAfter(0.3f, () => { OnTowerPassEvent(); if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == RealmModel.Tower_MapId) { var serveritems = dungeonModel.dungeonResult.itemInfo; if (serveritems != null) { List<Item> items = new List<Item>(); foreach (var item in serveritems) { items.Add(new Item(item.ItemID, (ulong)item.Count)); } ItemLogicUtility.Instance.ShowGetItem(items, seconds: 0); } } }); } void Display() @@ -92,6 +119,68 @@ m_Challenge.SetActive(realmModel.currentFloor == realmModel.selectFloorID); m_TopNow.SetActive(realmModel.currentFloor != realmModel.selectFloorID); m_TowerName.text = Language.Get("RealmTower4", RealmConfig.Get(RealmConfig.Get(RealmTowerConfig.Get(realmModel.selectFloorID).NeedRealmLV).LvLarge).Name); ShowBtns(); } void ShowBtns() { int count = GetFlashKillCount(); if (count == 0) { m_Challenge.SetActive(realmModel.currentFloor == realmModel.selectFloorID); m_FlashKill.SetActive(false); } else { m_Challenge.SetActive(false); m_FlashKill.SetActive(true); m_FlashKillCount.text = count == 1 ? string.Empty : count.ToString(); m_FlashKill.AddListener(() => { if (!dungeonModel.CanFlashKill()) { SysNotifyMgr.Instance.ShowTip("InFBCanotDo"); return; } var pack = new CB108_tagCMFBQuickPass(); pack.MapID = RealmModel.Tower_MapId; pack.LineID = (ushort)(realmModel.currentFloor + count - 1); GameNetSystem.Instance.SendInfo(pack); }); } } // 前20层不用雷诛 int GetFlashKillCount() { int count = 0; if (realmModel.currentFloor <= 20) return count; for (int i = 0; i < GeneralDefine.flashKillMaxCount; i++) { var config = RealmTowerConfig.Get(realmModel.currentFloor + i); if (config == null) break; if (PlayerDatas.Instance.baseData.realmLevel < config.NeedRealmLV) break; var fightPower = NPCExConfig.Get(config.BossID).SuppressFightPower; if (PlayerDatas.Instance.baseData.FightPoint >= (ulong)fightPower * GeneralDefine.fightPowerMore) { count++; } else { //遇到第一个卡点就停止 break; } } return count; } @@ -116,7 +205,7 @@ m_TowerBehaviour.AddCell(ScrollerDataType.Tail, 0); m_TowerBehaviour.Restart(); m_TowerBehaviour.JumpIndex(floors.Count - floors.IndexOf(realmModel.selectFloorID) - 1); m_TowerBehaviour.JumpIndex(floors.Count - floors.IndexOf(realmModel.selectFloorID) - 3); } System/Realm/RealmWin.cs
@@ -132,7 +132,7 @@ }); towerBtn.AddListener(() => { WindowJumpMgr.Instance.WindowJumpToEx("RealmTowerWin"); WindowCenter.Instance.Open<RealmTowerWin>(); }); } System/RuneTower/RuneTowerBehaviour.cs
@@ -94,6 +94,7 @@ m_Tower.verticalNormalizedPosition = Mathf.SmoothDamp(m_Tower.verticalNormalizedPosition, targetNormalizePosition, ref refNormalizePosition, 0.1f); yield return null; } model.OnFlashOver(2); } IEnumerator Co_CollapseShow(int _towerId) System/RuneTower/RuneTowerModel.cs
@@ -103,9 +103,24 @@ public event Action<int> selectedFloorEvent; public event Action<int> sweepBoughtTimesChangeEvent; public event Action<int> OnFlashOverEvent; int lastFlashOverState; public void OnFlashOver(int state) { if (lastFlashOverState + 1 != state) return; lastFlashOverState = state; if (lastFlashOverState == 2) lastFlashOverState = 0; if (OnFlashOverEvent != null) OnFlashOverEvent(state); } RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } } DailyQuestModel dailyModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } Redpoint towerRedpoint = new Redpoint(37); Redpoint runeRedpoint = new Redpoint(37, 37002); @@ -358,15 +373,38 @@ if (serverInited && runeModel.passRuneTowerFloor != 0) { var config = RuneTowerFloorConfig.Get((int)runeModel.passRuneTowerFloor); if (!allTowerCompleted && config.TowerId != currentTower && config.TowerId > showedUnLockTower) { wannaShowUnlockTower = config.TowerId; } } if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == RUNETOWER_MAPID) return; if (serverInited && runeModel.passRuneTowerFloor != 0) { var config = RuneTowerFloorConfig.Get((int)runeModel.passRuneTowerFloor); if (config.UnLockRune > 0 && runeModel.passRuneTowerFloor > showedPassFloor) { wannaShowPassFloor = runeModel.passRuneTowerFloor; PopupWindowsProcessor.Instance.Add("RuneNewGotWin"); } } if (!allTowerCompleted && config.TowerId != currentTower && config.TowerId > showedUnLockTower) } //立即显示 public void OnPassNewTowerFloorShowImme() { if (serverInited && runeModel.passRuneTowerFloor != 0) { var config = RuneTowerFloorConfig.Get((int)runeModel.passRuneTowerFloor); if (config.UnLockRune > 0 && runeModel.passRuneTowerFloor > showedPassFloor) { wannaShowUnlockTower = config.TowerId; wannaShowPassFloor = runeModel.passRuneTowerFloor; WindowCenter.Instance.Open<RuneNewGotWin>(); } } @@ -434,6 +472,7 @@ public void OnBeforePlayerDataInitialize() { serverInited = false; lastFlashOverState = 0; } private int RuneCompare(Item _lhs, Item _rhs) System/RuneTower/RuneTowerWin.cs
@@ -50,6 +50,9 @@ [SerializeField] Text m_SweepButtonDescription; [SerializeField] Text m_SweepTip; [SerializeField] Button m_FlashKill; [SerializeField] Text m_FlashKillCount; ShowType showType = ShowType.RewardInfo; int runeSweepActionId = 0; @@ -89,6 +92,7 @@ model.selectedFloorEvent += OnSelectedFloorChange; dailyQuestModel.dailyQuestProgressUpdateEvent += OnRuneTowerSweepResult; model.OnFlashOverEvent += OnFlashOverEvent; } protected override void OnAfterOpen() @@ -105,6 +109,7 @@ UI3DModelExhibition.Instance.StopShow(); model.selectedFloorEvent -= OnSelectedFloorChange; dailyQuestModel.dailyQuestProgressUpdateEvent -= OnRuneTowerSweepResult; model.OnFlashOverEvent -= OnFlashOverEvent; } protected override void OnAfterClose() @@ -119,17 +124,7 @@ { base.OnActived(); PopupRewardInfo(); if (model.wannaShowUnlockTower > 0) { WindowCenter.Instance.uiRoot.eventSystem.enabled = false; m_Tower.TowerCollapseShow(model.wannaShowUnlockTower, model.currentTower, OnTowerCollapseCompleted); } else { m_Tower.Display(model.currentTower); } Display(); CheckTaskGuide(); CheckSweepGuide(); @@ -143,6 +138,118 @@ } #endregion void Display() { PopupRewardInfo(); if (model.wannaShowUnlockTower > 0) { WindowCenter.Instance.uiRoot.eventSystem.enabled = false; m_Tower.TowerCollapseShow(model.wannaShowUnlockTower, model.currentTower, OnTowerCollapseCompleted); } else { m_Tower.Display(model.currentTower); } ShowBtns(); } void OnFlashOverEvent(int state) { if (state == 1) { if (model.wannaShowUnlockTower > 0) { WindowCenter.Instance.uiRoot.eventSystem.enabled = false; m_Tower.TowerCollapseShow(model.wannaShowUnlockTower, model.currentTower, OnTowerCollapseCompleted); } else { m_Tower.Display(model.currentTower); } } else if (state == 2 && dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == RuneTowerModel.RUNETOWER_MAPID) { model.OnPassNewTowerFloorShowImme(); var serveritems = dungeonModel.dungeonResult.itemInfo; if (serveritems != null) { List<Item> items = new List<Item>(); foreach (var item in serveritems) { items.Add(new Item(item.ItemID, (ulong)item.Count)); } ItemLogicUtility.Instance.ShowGetItem(items, seconds: 0); } model.selectedFloor = model.currentFloor; PopupRewardInfo(); ShowBtns(); runeSweepActionId = DailyQuestConfig.Get((int)DailyQuestType.RuneTowerSweep).RelatedID; OnRuneTowerSweepResult(runeSweepActionId); } } void ShowBtns() { int count = GetFlashKillCount(); if (count == 0) { m_Challenge.SetActive(true); m_FlashKill.SetActive(false); } else { m_Challenge.SetActive(false); m_FlashKill.SetActive(true); m_FlashKillCount.text = count == 1 ? string.Empty : count.ToString(); m_FlashKill.AddListener(() => { if (!dungeonModel.CanFlashKill()) { SysNotifyMgr.Instance.ShowTip("InFBCanotDo"); return; } var pack = new CB108_tagCMFBQuickPass(); pack.MapID = RuneTowerModel.RUNETOWER_MAPID; pack.LineID = (ushort)(model.currentFloor + count - 1); GameNetSystem.Instance.SendInfo(pack); }); } } // 前2个塔不显示闪杀按钮,不跨塔雷洙 int GetFlashKillCount() { int count = 0; if (model.currentTower <= 2) return count; for (int i = 0; i < GeneralDefine.flashKillMaxCount; i++) { var towerFloorConfig = RuneTowerFloorConfig.Get(model.selectedFloor + i); if (towerFloorConfig == null) break; var fightPower = (ulong)NPCExConfig.Get(towerFloorConfig.BossId).SuppressFightPower; if (PlayerDatas.Instance.baseData.FightPoint >= fightPower * GeneralDefine.fightPowerMore) { count++; } else { //遇到第一个卡点就停止 break; } } return count; } private void ChallengeTower() { @@ -255,7 +362,6 @@ private void UpdateFightPower() { var towerConfig = RuneTowerConfig.Get(model.currentTower); var towerFloorConfig = RuneTowerFloorConfig.Get(model.selectedFloor); m_FigthPower.text = NPCExConfig.Get(towerFloorConfig.BossId).SuppressFightPower.ToString(); @@ -409,6 +515,7 @@ private void OnTowerCollapseCompleted() { WindowCenter.Instance.uiRoot.eventSystem.enabled = true; model.OnFlashOver(2); } public enum ShowType System/RuneTower/TowerFloorBehaviour.cs
@@ -24,17 +24,21 @@ [SerializeField] Image m_Cover; [SerializeField] RectTransform m_ContainerSelected; [SerializeField] UIEffect m_GateEffect; [SerializeField] UIFrame m_FlashFrame; [SerializeField] PositionTween m_FloorTween; public RuneTowerBehaviour towerBehaviour; [HideInInspector] public RuneTowerBehaviour towerBehaviour; RectTransform m_RectTransform; RectTransform rectTransform { get { return m_RectTransform ?? (this.transform as RectTransform); } } RuneTowerModel model { get { return ModelCenter.Instance.GetModel<RuneTowerModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } int floorId = 0; public void Display(int _floorId) { m_FlashFrame.SetActive(false); this.floorId = _floorId; var isOpened = this.model.currentFloor >= this.floorId; @@ -54,14 +58,25 @@ //} OnSelected(model.selectedFloor); model.selectedFloorEvent -= OnSelected; model.selectedFloorEvent += OnSelected; dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent; //不在塔地图中增加雷诛功能 if (this.model.currentFloor == this.floorId && dungeonModel.CanFlashKill()) { dungeonModel.onDungeonResultEvent += OnDungeonResultEvent; } } public void Dispose() private void OnEnable() { model.selectedFloorEvent += OnSelected; } private void OnDisable() { model.selectedFloorEvent -= OnSelected; StopAllCoroutines(); } private void Awake() { @@ -79,6 +94,18 @@ m_ContainerSelected.SetActive(floorId == _floor); } private void OnDungeonResultEvent() { if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == RuneTowerModel.RUNETOWER_MAPID) { m_FlashFrame.SetActive(true); m_FloorTween.Play(() => { m_FlashFrame.SetActive(false); model.OnFlashOver(1); }); SoundPlayer.Instance.PlayUIAudio(857); } } } } System/Skill/ScrollerController.cs
@@ -429,6 +429,24 @@ return m_Scorller.GetCellSize(_dataIndex); } //滑动过去 public void MoveToIndex(int index, float _time, EnhancedScroller.TweenType _tweenType) { if (!inited) { cacheJump = index; return; } if ((index < 0 || index >= _data.Count) && !m_Scorller.Loop) { return; } var _size = m_Scorller.GetScrollPositionForDataIndex(index, EnhancedScroller.CellViewPositionEnum.Before); m_Scorller.Tween(_tweenType, _time, _size); } public void JumpIndex(float _delta, float _time, EnhancedScroller.TweenType _tweenType) { if (!inited) System/SkyTower/SkyTowerBehaviour.cs
@@ -30,6 +30,7 @@ bool hasCreateTowerResources = false; List<SkyTowerFloorBehaviour> floorBehaviours = new List<SkyTowerFloorBehaviour>(); SkyTowerModel model { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } public void Display() { @@ -38,6 +39,52 @@ scrollRectTransform.anchoredPosition = Vector2.zero; DisplayTowerBaseInfo(); MoveToTargetFloor(model.currentFloor); } float speed = 0f; private void LateUpdate() { if (startFlashMove) { m_Tower.verticalNormalizedPosition = Mathf.SmoothDamp(m_Tower.verticalNormalizedPosition, 1, ref speed, 0.1f); if (m_Tower.verticalNormalizedPosition > 0.99f) { startFlashMove = false; if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == SkyTowerModel.DATA_MAPID) { var serveritems = dungeonModel.dungeonResult.itemInfo; if (serveritems != null) { List<Item> items = new List<Item>(); foreach (var item in serveritems) { items.Add(new Item(item.ItemID, (ulong)item.Count)); } ItemLogicUtility.Instance.ShowGetItem(items, seconds:0); } } model.OnFlashOver(2); } } } private void OnEnable() { model.OnFlashOverEvent += OnFlashOverEvent; startFlashMove = false; } private void OnDisable() { model.OnFlashOverEvent -= OnFlashOverEvent; StopAllCoroutines(); } bool startFlashMove = false; private void OnFlashOverEvent(int state) { if (state == 1) startFlashMove = true; } public void Dispose() @@ -145,11 +192,6 @@ bottomHeight = ((RectTransform)towerBottom.transform).rect.height; hasCreateTowerResources = true; } private void OnDisable() { StopAllCoroutines(); } } System/SkyTower/SkyTowerFloorBehaviour.cs
@@ -19,11 +19,14 @@ [SerializeField] Image m_Cover; [SerializeField] RectTransform m_ContainerSelected; [SerializeField] UIEffect m_GateEffect; [SerializeField] UIFrame m_FlashFrame; [SerializeField] PositionTween m_FloorTween; RectTransform m_RectTransform; RectTransform rectTransform { get { return m_RectTransform ?? (this.transform as RectTransform); } } SkyTowerModel model { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } int floorId = 0; public void Display(int _floorId) @@ -34,12 +37,21 @@ m_FloorName.text = config.floorName; m_Cover.SetActive(this.model.currentFloor > this.floorId); m_FloorTween.SetStartState(); m_FloorTween.Stop(); m_FlashFrame.SetActive(false); dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent; if (this.model.currentFloor == this.floorId) { //m_GateEffect.Play(); m_Challenge.SetActive(true); m_ContainerSelected.SetActive(true); m_FloorName.color = UIHelper.GetUIColor(TextColType.NavyYellow); if (dungeonModel.CanFlashKill()) { dungeonModel.onDungeonResultEvent += OnDungeonResultEvent; } } else { @@ -54,7 +66,24 @@ { } private void OnDisable() { dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent; StopAllCoroutines(); } private void OnDungeonResultEvent() { if (dungeonModel.dungeonResult.quickPass == 1 && dungeonModel.dungeonResult.dataMapID == SkyTowerModel.DATA_MAPID) { m_FlashFrame.SetActive(true); m_FloorTween.Play(() => { m_FlashFrame.SetActive(false); model.OnFlashOver(1); }); SoundPlayer.Instance.PlayUIAudio(857); } } } } System/SkyTower/SkyTowerModel.cs
@@ -18,6 +18,7 @@ readonly static int REDPOINTID_042 = 215081; //天星塔挑战全服5奖励 public static int fullServerPassNum1 = 1; //全服通关人数指标 public static int fullServerPassNum2 = 5; public bool allPassed { get { return IsTopFloor(highestPassFloor); @@ -52,7 +53,13 @@ } } public event Action OnChooseFloorIndexChange; public event Action<int> OnFlashOverEvent; public void OnFlashOver(int state) { if (OnFlashOverEvent != null) OnFlashOverEvent(state); } bool redpointConfirm_01 = false; bool redpointConfirm_02 = false; @@ -289,6 +296,7 @@ ChallengeFloors.Add(int.Parse(floorID)); } ChallengeFloors.Sort(); } public bool IsRecommendNextLevel() System/SkyTower/SkyTowerWin.cs
@@ -42,6 +42,8 @@ [SerializeField] Button m_Challenge; [SerializeField] TextEx m_ChallengeTitle; [SerializeField] ImageEx m_ChallengeImage; [SerializeField] Button m_FlashKill; [SerializeField] Text m_FlashKillCount; [SerializeField] Button m_Rank; [SerializeField] Button m_Gift; @@ -49,6 +51,7 @@ SkyTowerModel model { get { return ModelCenter.Instance.GetModel<SkyTowerModel>(); } } RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } ShowType showType = ShowType.None; @@ -61,7 +64,12 @@ { m_Challenge.SetListener(Challenge); m_ViewBoss.SetListener(() => { DisplayBossInfo(false); }); m_ViewReward.SetListener(() => { DisplayRewardInfo(false); }); m_ViewReward.SetListener(() => { if (showType == ShowType.Reward) { return; } DisplayRewardInfo(false); }); m_Rank.SetListener(() => { rankModel.jumpRankType = 6; WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.GameRank); @@ -79,6 +87,7 @@ protected override void OnPreOpen() { model.OnFlashOverEvent += OnFlashOverEvent; showType = ShowType.None; model.ConfirmRedpoint02(); } @@ -89,6 +98,7 @@ protected override void OnPreClose() { model.OnFlashOverEvent -= OnFlashOverEvent; } protected override void OnAfterClose() @@ -98,12 +108,24 @@ protected override void OnActived() { base.OnActived(); Display(); } void Display() { DisplayTowerInfo(); DisplayChallengeButton(); DisplayRewardInfo(false); } #endregion private void OnFlashOverEvent(int state) { if (state == 2) Display(); } private void DisplayTowerInfo() { @@ -159,10 +181,6 @@ private void DisplayRewardInfo(bool immediately) { if (showType == ShowType.Reward) { return; } showType = ShowType.Reward; @@ -214,8 +232,61 @@ private void DisplayChallengeButton() { m_ChallengeTitle.text = Language.Get(model.allPassed ? "SkyTower4" : "Multiple_Challenge"); m_ChallengeImage.gray = !model.IsChallengable(); int count = GetFlashKillCount(); if (count == 0) { m_FlashKill.SetActive(false); m_Challenge.SetActive(true); m_ChallengeTitle.text = Language.Get(model.allPassed ? "SkyTower4" : "Multiple_Challenge"); m_ChallengeImage.gray = !model.IsChallengable(); } else { m_FlashKill.SetActive(true); m_Challenge.SetActive(false); m_FlashKillCount.text = count == 1 ? string.Empty : count.ToString(); m_FlashKill.AddListener(() => { if (!dungeonModel.CanFlashKill()) { SysNotifyMgr.Instance.ShowTip("InFBCanotDo"); return; } var pack = new CB108_tagCMFBQuickPass(); pack.MapID = SkyTowerModel.DATA_MAPID; pack.LineID = (ushort)(model.currentFloor + count - 1); GameNetSystem.Instance.SendInfo(pack); }); } } // 前20层不用雷诛 int GetFlashKillCount() { int count = 0; if (model.currentFloor <= 20) return count; for (int i = 0; i < GeneralDefine.flashKillMaxCount; i++) { var config = SkyTowerConfig.Get(model.currentFloor + i); if (config == null) break; var fightPower = NPCExConfig.Get(config.bossId).SuppressFightPower; if (PlayerDatas.Instance.baseData.FightPoint >= (ulong)fightPower * GeneralDefine.fightPowerMore) { count++; } else { //遇到第一个卡点就停止 break; } } return count; } private void Challenge() UI/Decorate/Tweens/PositionTween.cs
@@ -26,7 +26,14 @@ protected override void OnOnceEnd() { this.rectTransform.anchoredPosition = reversal ? from : to; if (wrapMode == WrapMode.PingPongOnce) { SetStartState(); } else { this.rectTransform.anchoredPosition = reversal ? from : to; } base.OnOnceEnd(); } UI/Decorate/Tweens/Tween.cs
@@ -100,8 +100,15 @@ switch (wrapMode) { case WrapMode.Once: case WrapMode.Once: if (accumulatedTime > duration) { OnOnceEnd(); doTween = false; } break; case WrapMode.PingPongOnce: if (accumulatedTime > duration*2) { OnOnceEnd(); doTween = false; @@ -168,8 +175,9 @@ t = Mathf.Repeat((accumulatedTime / duration) * curveLength, 1); break; case WrapMode.PingPong: case WrapMode.PingPongOnce: t = Mathf.PingPong((accumulatedTime / duration) * curveLength, 1); break; break; } var value = curve.Evaluate(reversal ? curveLength - t : t); @@ -221,6 +229,7 @@ Once, Loop, PingPong, PingPongOnce, } } }