Core/GameEngine/Model/Config/JadeDynastyTowerConfig.cs
@@ -12,6 +12,7 @@ public partial class JadeDynastyTowerConfig : ConfigBase { public int floorId { get ; private set ; } public int floorIndex { get ; private set ; } public string floorName { get ; private set; } public int[] rewardIdsLevelS; public int[] rewardCountsLevelS; @@ -32,53 +33,55 @@ { floorId=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; floorName = rawContents[1].Trim(); floorIndex=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; string[] rewardIdsLevelSStringArray = rawContents[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); floorName = rawContents[2].Trim(); string[] rewardIdsLevelSStringArray = rawContents[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardIdsLevelS = new int[rewardIdsLevelSStringArray.Length]; for (int i=0;i<rewardIdsLevelSStringArray.Length;i++) { int.TryParse(rewardIdsLevelSStringArray[i],out rewardIdsLevelS[i]); } string[] rewardCountsLevelSStringArray = rawContents[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] rewardCountsLevelSStringArray = rawContents[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardCountsLevelS = new int[rewardCountsLevelSStringArray.Length]; for (int i=0;i<rewardCountsLevelSStringArray.Length;i++) { int.TryParse(rewardCountsLevelSStringArray[i],out rewardCountsLevelS[i]); } string[] rewardIdsLevelAStringArray = rawContents[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] rewardIdsLevelAStringArray = rawContents[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardIdsLevelA = new int[rewardIdsLevelAStringArray.Length]; for (int i=0;i<rewardIdsLevelAStringArray.Length;i++) { int.TryParse(rewardIdsLevelAStringArray[i],out rewardIdsLevelA[i]); } string[] rewardCountsLevelAStringArray = rawContents[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] rewardCountsLevelAStringArray = rawContents[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardCountsLevelA = new int[rewardCountsLevelAStringArray.Length]; for (int i=0;i<rewardCountsLevelAStringArray.Length;i++) { int.TryParse(rewardCountsLevelAStringArray[i],out rewardCountsLevelA[i]); } string[] rewardIdsLevelBStringArray = rawContents[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] rewardIdsLevelBStringArray = rawContents[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardIdsLevelB = new int[rewardIdsLevelBStringArray.Length]; for (int i=0;i<rewardIdsLevelBStringArray.Length;i++) { int.TryParse(rewardIdsLevelBStringArray[i],out rewardIdsLevelB[i]); } string[] rewardCountsLevelBStringArray = rawContents[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] rewardCountsLevelBStringArray = rawContents[8].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); rewardCountsLevelB = new int[rewardCountsLevelBStringArray.Length]; for (int i=0;i<rewardCountsLevelBStringArray.Length;i++) { int.TryParse(rewardCountsLevelBStringArray[i],out rewardCountsLevelB[i]); } unLockEquipPlace=IsNumeric(rawContents[8]) ? int.Parse(rawContents[8]):0; unLockEquipPlace=IsNumeric(rawContents[9]) ? int.Parse(rawContents[9]):0; fightPower=IsNumeric(rawContents[9]) ? int.Parse(rawContents[9]):0; fightPower=IsNumeric(rawContents[10]) ? int.Parse(rawContents[10]):0; } catch (Exception ex) { Core/GameEngine/Model/Config/JadeDynastyTowerConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: bcb7d8fc32f347441a4024465ce1df51 timeCreated: 1548041359 timeCreated: 1548051317 licenseType: Pro MonoImporter: serializedVersion: 2 Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: 3e05761d690b75440a6be79207d0fb01 folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: 1d70ccd06161e0443b7a802ad94292f8 folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: 71e878ac60c49ad4f964dd2dbc725739 folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: eed34091b0568664b9fb42f0634496c1 folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: 32ceb8b7faf99f84a8b73ce53c5e3e4d folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAE_Truck.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: 77f69c2b862d1704299a32d0d8eeb71e folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAF_Merge.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: fa14960fa44b0d1439bab471a764e34f folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HB0_Event.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: d914565b65f8e8145988734c4d915834 folderAsset: yes timeCreated: 1547643019 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: System/JadeDynastyTower/JadeDynastyTowerBehaviour.cs
New file @@ -0,0 +1,139 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 21, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using System; using TableConfig; namespace Snxxz.UI { public class JadeDynastyTowerBehaviour : MonoBehaviour { [SerializeField] ScrollRect m_Tower; RectTransform m_RectTransform; RectTransform rectTransform { get { return m_RectTransform ?? (this.transform as RectTransform); } } float topHeight = 0f; float floorHeight = 0f; float bottomHeight = 0f; GameObject towerTop = null; GameObject towerBottom = null; JadeDynastyTowerFloorBehaviour towerTopBehaviour; bool hasCreateTowerResources = false; List<JadeDynastyTowerFloorBehaviour> floorBehaviours = new List<JadeDynastyTowerFloorBehaviour>(); JadeDynastyTowerModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyTowerModel>(); } } public void Display() { var scrollRectTransform = m_Tower.transform as RectTransform; scrollRectTransform.localScale = Vector3.one; scrollRectTransform.anchoredPosition = Vector2.zero; DisplayTowerBaseInfo(); MoveToTargetFloor(model.currentFloor); } public void Dispose() { m_Tower.scrollSensitivity = 1f; } void MoveToTargetFloor(int floor) { var floors = model.GetShowFloors(); var hasBottom = model.IsBottomFloor(floors[0]); var floorConfig = Config.Instance.Get<JadeDynastyTowerConfig>(floor); var targetNormalizePosition = (hasBottom ? bottomHeight : 0 + floorHeight * (floorConfig.floorIndex - 0.5f) - rectTransform.rect.height * 0.5f) / (m_Tower.content.rect.height - rectTransform.rect.height); targetNormalizePosition = Mathf.Clamp01(targetNormalizePosition); m_Tower.verticalNormalizedPosition = targetNormalizePosition; } private void DisplayTowerBaseInfo() { CreateTowerResources(); var floors = model.GetShowFloors(); var hasTop = model.IsTopFloor(floors[floors.Count - 1]); var normalCount = hasTop ? floors.Count - 1 : floors.Count; if (hasTop) { towerTopBehaviour.gameObject.SetActive(true); towerTopBehaviour.Display(floors[floors.Count - 1]); } else { towerTopBehaviour.gameObject.SetActive(false); } for (var i = 0; i < floorBehaviours.Count; i++) { var behaviour = floorBehaviours[i]; if (i < normalCount) { behaviour.gameObject.SetActive(true); behaviour.Display(i + (hasTop ? 1 : 0)); } else { behaviour.gameObject.SetActive(false); } } var hasBottom = model.IsBottomFloor(floors[0]); towerBottom.gameObject.SetActive(hasBottom); } private void CreateTowerResources() { if (hasCreateTowerResources) { return; } towerTop = UIUtility.CreateWidget("RuneTower_Top", "Top"); towerTop.transform.SetParentEx(m_Tower.content, Vector3.zero, Quaternion.identity, Vector3.one); towerTop.transform.SetAsFirstSibling(); topHeight = ((RectTransform)towerTop.transform).rect.height; towerTopBehaviour = towerTop.AddMissingComponent<JadeDynastyTowerFloorBehaviour>(); var floorPrefab = UILoader.LoadPrefab("RuneTower_Floor"); floorHeight = ((RectTransform)floorPrefab.transform).rect.height; for (int i = 0; i < 4; i++) { var instance = Instantiate<GameObject>(floorPrefab); var floorBehaviour = instance.AddMissingComponent<JadeDynastyTowerFloorBehaviour>(); instance.transform.SetParentEx(m_Tower.content, Vector3.zero, Quaternion.identity, Vector3.one); floorBehaviours.Add(floorBehaviour); } towerBottom = UIUtility.CreateWidget("RuneTower_Bottom", "Bottom"); towerBottom.transform.SetParentEx(m_Tower.content, Vector3.zero, Quaternion.identity, Vector3.one); towerBottom.transform.SetAsLastSibling(); bottomHeight = ((RectTransform)towerBottom.transform).rect.height; hasCreateTowerResources = true; } private void OnDisable() { StopAllCoroutines(); } } } System/JadeDynastyTower/JadeDynastyTowerBehaviour.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: c138ff352bc67574abd362aee0fc583d timeCreated: 1548050025 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/JadeDynastyTower/JadeDynastyTowerFloorBehaviour.cs
New file @@ -0,0 +1,64 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 21, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class JadeDynastyTowerFloorBehaviour : MonoBehaviour { [SerializeField] Image m_Floor; [SerializeField] Button m_Selected; [SerializeField] TextEx m_FloorName; [SerializeField] Image m_Challenge; [SerializeField] Image m_Cover; [SerializeField] RectTransform m_ContainerSelected; [SerializeField] UIEffect m_GateEffect; RectTransform m_RectTransform; RectTransform rectTransform { get { return m_RectTransform ?? (this.transform as RectTransform); } } JadeDynastyTowerModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyTowerModel>(); } } int floorId = 0; public void Display(int _floorId) { this.floorId = _floorId; var isOpened = this.model.currentFloor >= this.floorId; var config = Config.Instance.Get<JadeDynastyTowerConfig>(floorId); m_FloorName.text = config.floorName; m_Cover.gameObject.SetActive(this.model.currentFloor > this.floorId); if (this.model.currentFloor == this.floorId) { m_GateEffect.Play(); m_Challenge.gameObject.SetActive(true); m_ContainerSelected.gameObject.SetActive(true); m_FloorName.color = UIHelper.GetUIColor(TextColType.NavyYellow); } else { m_GateEffect.Stop(); m_Challenge.gameObject.SetActive(false); m_ContainerSelected.gameObject.SetActive(false); m_FloorName.color = UIHelper.s_LightYellow; } } public void Dispose() { } } } System/JadeDynastyTower/JadeDynastyTowerFloorBehaviour.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 1e7ee76654016d1448b8fd5f9f680822 timeCreated: 1548051421 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/JadeDynastyTower/JadeDynastyTowerModel.cs
@@ -1,16 +1,18 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using TableConfig; namespace Snxxz.UI { public class JadeDynastyTowerModel : Model, IPlayerLoginOk, IMapInitOk { const int DATA_MAPID = 0; public const int DATA_MAPID = 0; const int REDPOINTID = 1; public int currentFloor { get; private set; } Redpoint redpoint = new Redpoint(REDPOINTID); List<int> sortedFloors = new List<int>(); public override void Init() { @@ -55,6 +57,46 @@ GameNetSystem.Instance.SendInfo(sendInfo); } public List<int> GetShowFloors() { var currentIndex = sortedFloors.IndexOf(currentFloor); var floors = new List<int>(); if (currentIndex < 2) { for (var i = 0; i <= 4; i++) { floors.Add(i); } } else if (currentIndex >= sortedFloors.Count - 2) { for (var i = sortedFloors.Count - 4; i <= sortedFloors.Count - 1; i++) { floors.Add(i); } } else { for (var i = currentIndex - 2; i <= currentIndex + 2; i++) { floors.Add(i); } } return floors; } public bool IsTopFloor(int floor) { return floor == sortedFloors[sortedFloors.Count - 1]; } public bool IsBottomFloor(int floor) { return floor == sortedFloors[0]; } public void OnPlayerLoginOk() { @@ -70,6 +112,14 @@ } } private void ParseConfig() { var configs = Config.Instance.GetAllKeys<JadeDynastyTowerConfig>(); foreach (var item in configs) { sortedFloors.Add(int.Parse(item)); } } } } System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs
New file @@ -0,0 +1,79 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 21, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace Snxxz.UI { public class JadeDynastyTowerRankBehaviour : MonoBehaviour { [SerializeField] RankCell[] m_RankCells; [SerializeField] Text m_MyRank; [SerializeField] Button m_ViewRank; public void Display(RankInfo[] rankInfos, int myRank) { for (var i = 0; i < m_RankCells.Length; i++) { var cell = m_RankCells[i]; if (i < rankInfos.Length) { var rankInfo = rankInfos[i]; cell.container.SetActive(true); cell.name.text = rankInfo.name; cell.floor.text = Language.Get("", rankInfo.floor); cell.time.text = Language.Get("", rankInfo.time); } else { m_RankCells[i].container.SetActive(false); } } if (myRank != 0) { m_MyRank.text = myRank.ToString(); } else { m_MyRank.text = Language.Get(""); } } private void Start() { m_ViewRank.SetListener(ViewRank); } private void ViewRank() { } public struct RankInfo { public string name; public int floor; public int time; } [System.Serializable] public struct RankCell { public GameObject container; public Text name; public Text floor; public Text time; } } } System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: f17f9c2e8f2d51b4696795c4088005e0 timeCreated: 1548056029 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs
New file @@ -0,0 +1,92 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 21, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class JadeDynastyTowerRewardBehaviour : MonoBehaviour { [SerializeField] ItemBehaviour[] m_RewardsLevelS; [SerializeField] ItemBehaviour[] m_RewardsLevelA; [SerializeField] ItemBehaviour[] m_RewardsLevelB; [SerializeField] RectTransform m_ExtraRewardContainer; [SerializeField] Text m_ExtraRewardFloor; [SerializeField] Text m_ExtraRewardDescription; public void Display(int floor) { var config = Config.Instance.Get<JadeDynastyTowerConfig>(floor); for (var i = 0; i < m_RewardsLevelS.Length; i++) { var behaviour = m_RewardsLevelS[i]; if (i < config.rewardIdsLevelS.Length) { var id = config.rewardIdsLevelS[i]; var count = config.rewardCountsLevelS[i]; behaviour.gameObject.SetActive(true); behaviour.SetItem(id, count); } else { behaviour.gameObject.SetActive(false); } } for (var i = 0; i < m_RewardsLevelA.Length; i++) { var behaviour = m_RewardsLevelA[i]; if (i < config.rewardIdsLevelA.Length) { var id = config.rewardIdsLevelA[i]; var count = config.rewardIdsLevelS[i]; behaviour.gameObject.SetActive(true); behaviour.SetItem(id, count); } else { behaviour.gameObject.SetActive(false); } } for (var i = 0; i < m_RewardsLevelB.Length; i++) { var behaviour = m_RewardsLevelB[i]; if (i < config.rewardIdsLevelB.Length) { var id = config.rewardIdsLevelB[i]; var count = config.rewardCountsLevelB[i]; behaviour.gameObject.SetActive(true); behaviour.SetItem(id, count); } else { behaviour.gameObject.SetActive(false); } } if (config.unLockEquipPlace != 0) { m_ExtraRewardContainer.gameObject.SetActive(true); m_ExtraRewardFloor.text = Language.Get("", config.floorIndex); m_ExtraRewardDescription.text = ""; } else { m_ExtraRewardContainer.gameObject.SetActive(false); } } } } System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: e88c84b0168d5e04797b1964fd51f8db timeCreated: 1548056741 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/JadeDynastyTower/JadeDynastyTowerWin.cs
@@ -8,11 +8,23 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { namespace Snxxz.UI { public class JadeDynastyTowerWin : Window { [SerializeField] JadeDynastyTowerBehaviour m_TowerBehaviour; [SerializeField] JadeDynastyTowerRankBehaviour m_RankBehaviour; [SerializeField] JadeDynastyTowerRewardBehaviour m_RewardBehaviour; [SerializeField] TextEx m_FightPower; [SerializeField] TextEx m_ChallengeTimes; [SerializeField] Button m_Challenge; [SerializeField] ImageEx m_ChallengeImage; JadeDynastyTowerModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyTowerModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } #region Built-in protected override void BindController() @@ -21,10 +33,15 @@ protected override void AddListeners() { m_Challenge.SetListener(Challenge); } protected override void OnPreOpen() { DisplayBaseInfo(); DisplayChallengeTimes(); DisplayChallengable(); DisplayFightPower(); } protected override void OnAfterOpen() @@ -39,7 +56,40 @@ { } #endregion private void DisplayBaseInfo() { m_TowerBehaviour.Display(); // m_RankBehaviour.Display(); m_RewardBehaviour.Display(model.currentFloor); } private void DisplayChallengeTimes() { var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyTowerModel.DATA_MAPID); var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyTowerModel.DATA_MAPID); m_ChallengeTimes.text = StringUtility.Contact(enterTimes, "/", totalTimes); m_ChallengeTimes.colorType = enterTimes <= 0 ? TextColType.Red : TextColType.DarkGreen; } private void DisplayChallengable() { m_ChallengeImage.gray = !model.IsChallengable(); } private void DisplayFightPower() { var config = Config.Instance.Get<JadeDynastyTowerConfig>(model.currentFloor); m_FightPower.text = config.fightPower.ToString(); var reached = PlayerDatas.Instance.baseData.FightPoint >= config.fightPower; m_FightPower.colorType = reached ? TextColType.Green : TextColType.Red; } private void Challenge() { model.RequestChallenge(); } } } System/JadeDynastyTower/TowerWin.cs
@@ -17,6 +17,7 @@ [SerializeField] FunctionButtonGroup m_FunctionGroup; [SerializeField] FunctionButton m_RuneTower; [SerializeField] FunctionButton m_JadeDynastyTower; [SerializeField] Button m_Close; #region Built-in protected override void BindController() @@ -27,6 +28,7 @@ { m_RuneTower.SetListener(OpenRuneTower); m_JadeDynastyTower.SetListener(OpenJadeDynastyTower); m_Close.SetListener(CloseClick); } protected override void OnPreOpen() @@ -49,7 +51,7 @@ protected override void OnActived() { base.OnActived(); OpenRuneTower(); m_FunctionGroup.TriggerByOrder(functionOrder); } #endregion