| Core/GameEngine/Model/Config/FashionDressCabinetConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/GameEngine/Model/Config/FashionDressCabinetConfig.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/GameEngine/Model/Config/FashionDressConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/GameEngine/Model/Config/FashionDressConfig.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/GameEngine/Model/ConfigManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDressCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDressCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDressModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDressQualityBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDressQualityBehaviour.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDressWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Role/RolePanel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/GameEngine/Model/Config/FashionDressCabinetConfig.cs
File was renamed from Core/GameEngine/Model/Config/FashionDressLevelUpConfig.cs @@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 07, 2019 // [ Date ]: Tuesday, January 08, 2019 //-------------------------------------------------------- using UnityEngine; @@ -9,11 +9,11 @@ namespace TableConfig { public partial class FashionDressLevelUpConfig : ConfigBase { public partial class FashionDressCabinetConfig : ConfigBase { public int LV { get ; private set ; } public int NeedExp { get ; private set ; } public int[] AttrType; public string Attr { get ; private set; } public override string getKey() { @@ -27,12 +27,7 @@ NeedExp=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; string[] AttrTypeStringArray = rawContents[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); AttrType = new int[AttrTypeStringArray.Length]; for (int i=0;i<AttrTypeStringArray.Length;i++) { int.TryParse(AttrTypeStringArray[i],out AttrType[i]); } Attr = rawContents[2].Trim(); } catch (Exception ex) { Core/GameEngine/Model/Config/FashionDressCabinetConfig.cs.metacopy from Core/GameEngine/Model/Config/FashionDressLevelUpConfig.cs.meta copy to Core/GameEngine/Model/Config/FashionDressCabinetConfig.cs.meta
File was copied from Core/GameEngine/Model/Config/FashionDressLevelUpConfig.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 780afd3c2aae26346a489721491894e5 timeCreated: 1546853266 guid: 28e71cfd492229640aecaf39e2a40093 timeCreated: 1546913213 licenseType: Pro MonoImporter: serializedVersion: 2 Core/GameEngine/Model/Config/FashionDressConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 07, 2019 // [ Date ]: Tuesday, January 08, 2019 //-------------------------------------------------------- using UnityEngine; @@ -12,7 +12,9 @@ public partial class FashionDressConfig : ConfigBase { public int CoatID { get ; private set ; } public string name { get ; private set; } public int type { get ; private set ; } public int quality { get ; private set ; } public int[] EquipItemID; public int UnlockItemID { get ; private set ; } public int MaxLV { get ; private set ; } @@ -29,27 +31,31 @@ { CoatID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; type=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; name = rawContents[1].Trim(); string[] EquipItemIDStringArray = rawContents[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); type=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; quality=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; string[] EquipItemIDStringArray = rawContents[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); EquipItemID = new int[EquipItemIDStringArray.Length]; for (int i=0;i<EquipItemIDStringArray.Length;i++) { int.TryParse(EquipItemIDStringArray[i],out EquipItemID[i]); } UnlockItemID=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; UnlockItemID=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0; MaxLV=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; MaxLV=IsNumeric(rawContents[6]) ? int.Parse(rawContents[6]):0; string[] CostItemCntStringArray = rawContents[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); string[] CostItemCntStringArray = rawContents[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); CostItemCnt = new int[CostItemCntStringArray.Length]; for (int i=0;i<CostItemCntStringArray.Length;i++) { int.TryParse(CostItemCntStringArray[i],out CostItemCnt[i]); } StarAttr = rawContents[6].Trim(); StarAttr = rawContents[8].Trim(); } catch (Exception ex) { Core/GameEngine/Model/Config/FashionDressConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 5ac2a701b6eaba844b1082c87758125e timeCreated: 1546865215 timeCreated: 1546928945 licenseType: Pro MonoImporter: serializedVersion: 2 Core/GameEngine/Model/ConfigManager.cs
@@ -219,8 +219,8 @@ AddAsyncTask<GatherSoulComposeConfig>(); AddAsyncTask<KingTreasureConfig>(); AddAsyncTask<KingTreasureItemConfig>(); AddAsyncTask<FashionDressLevelUpConfig>(); AddAsyncTask<FashionDressConfig>(); AddAsyncTask<FashionDressCabinetConfig>(); while (!AllCompleted()) { System/FashionDress/FashionDressCell.cs
New file @@ -0,0 +1,115 @@ using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FashionDressCell : CellView { [SerializeField] ItemBehaviour m_Item; [SerializeField] Text m_ItemName; [SerializeField] Text m_ItemCount; [SerializeField] Text m_GetPath; [SerializeField] RectTransform m_ContainerStars; [SerializeField] Transform[] m_Stars; [SerializeField] Transform[] m_StarEquips; [SerializeField] Button m_LevelUp; [SerializeField] Transform m_ContainerDarkMask; [SerializeField] Transform m_Lock; [SerializeField] Button m_Unlock; [SerializeField] Transform m_ContainerSelect; [SerializeField] Transform m_Equiped; [SerializeField] Transform m_Preview; [SerializeField] Button m_Select; int fashionDressId = 0; FashionDressModel model { get { return ModelCenter.Instance.GetModel<FashionDressModel>(); } } PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } public void Display(int id) { fashionDressId = id; FashionDress fashionDress; m_LevelUp.RemoveAllListeners(); m_Unlock.RemoveAllListeners(); var fashionDressLevel = model.GetFashionDressLevel(fashionDressId); m_ContainerDarkMask.gameObject.SetActive(fashionDressLevel == 0); m_ContainerStars.gameObject.SetActive(fashionDressLevel > 0); if (model.TryGetFashionDress(fashionDressId, out fashionDress)) { var equipItemId = fashionDress.GetEquipItemId(); var equipedFashionDressId = model.GetFashionDressEquipId(fashionDress.fashionDressType); m_Equiped.gameObject.SetActive(equipedFashionDressId == fashionDressId); var previewFashionId = 0; model.TryGetSelect(fashionDress.fashionDressType, out previewFashionId); m_Preview.gameObject.SetActive(equipedFashionDressId != fashionDressId && previewFashionId == fashionDressId); bool isMax = fashionDressLevel >= fashionDress.maxLevel; var count = packModel.GetItemCountByID(PackType.rptItem, equipItemId); m_Item.SetItem(equipItemId, 0); var levelUpRequireCount = fashionDress.GetLevelUpRequireCount(fashionDressLevel); var requireCountDisplay = UIHelper.AppendStringColor(count >= levelUpRequireCount ? TextColType.DarkGreen : TextColType.Red, count.ToString()); m_ItemCount.text = isMax ? count.ToString() : StringUtility.Contact(requireCountDisplay, "/", levelUpRequireCount); var config = Config.Instance.Get<FashionDressConfig>(fashionDressId); m_ItemName.text = config.name; //--to do 时装名称 获取途径 if (fashionDressLevel > 0) { for (int i = 0; i < m_Stars.Length; i++) { m_Stars[i].gameObject.SetActive(i < fashionDress.maxLevel); } for (int i = 0; i < m_StarEquips.Length; i++) { m_StarEquips[i].gameObject.SetActive(i < fashionDressLevel); } } m_Lock.gameObject.SetActive(count < levelUpRequireCount); m_Unlock.gameObject.SetActive(count >= levelUpRequireCount); m_LevelUp.AddListener(LevelUp); m_Unlock.AddListener(Unlock); m_Select.AddListener(Select); } } private void Select() { FashionDress fashionDress; if (model.TryGetFashionDress(fashionDressId, out fashionDress)) { model.SetPreviewFashionDress(fashionDress.fashionDressType, fashionDressId); } } private void Unlock() { } private void LevelUp() { } } } System/FashionDress/FashionDressCell.cs.meta
File was renamed from Core/GameEngine/Model/Config/FashionDressLevelUpConfig.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 780afd3c2aae26346a489721491894e5 timeCreated: 1546853266 guid: 6f69d8fa7c986cd4babb27d708adba91 timeCreated: 1546918315 licenseType: Pro MonoImporter: serializedVersion: 2 System/FashionDress/FashionDressModel.cs
@@ -9,8 +9,17 @@ { Dictionary<int, FashionDress> fashionDressDict = new Dictionary<int, FashionDress>(); Dictionary<int, int> fashionDressLevelDict = new Dictionary<int, int>(); Dictionary<int, Dictionary<int, int>> cabinetPropertyDict = new Dictionary<int, Dictionary<int, int>>(); Dictionary<int, int> fashionTypeMapPlaceDict = new Dictionary<int, int>(); Dictionary<int, List<int>> fashionDressTypeDict = new Dictionary<int, List<int>>(); Dictionary<int, Dictionary<int, List<int>>> fashionDressQualityDict = new Dictionary<int, Dictionary<int, List<int>>>(); public int cabinetLevel { get; private set; } public int cabinetExp { get; private set; } public int cabinetMaxLevel { get; private set; } int m_SelectType = 0; public Dictionary<int, int> fashionDressSelectDict { get; private set; } int m_SelectType = 1; public int selectType { get { return m_SelectType; } @@ -27,16 +36,44 @@ } } int m_SelectQuality = 0; public int selectQuality { get { return m_SelectQuality; } set { if (m_SelectQuality != value) { m_SelectQuality = value; if (selectQualityRefresh != null) { selectQualityRefresh(); } } } } public event Action selectTypeRefresh; public event Action cabinetRefresh; public event Action selectQualityRefresh; public event Action<int> previewRefresh; PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } public override void Init() { ParseConfig(); fashionDressSelectDict = new Dictionary<int, int>(); } public void OnBeforePlayerDataInitialize() { fashionDressLevelDict.Clear(); cabinetLevel = 0; cabinetExp = 0; } public void OnPlayerLoginOk() @@ -49,16 +86,59 @@ void ParseConfig() { var configs = Config.Instance.GetAllValues<FashionDressConfig>(); foreach (var config in configs) { fashionDressDict[config.CoatID] = new FashionDress(config); } } var configs = Config.Instance.GetAllValues<FashionDressConfig>(); foreach (var config in configs) { fashionDressDict[config.CoatID] = new FashionDress(config); { List<int> list; if (!fashionDressTypeDict.TryGetValue(config.type, out list)) { list = new List<int>(); fashionDressTypeDict.Add(config.type, list); } list.Add(config.CoatID); } public bool TryGetFashionDress(int id, out FashionDress fashionDress) { return fashionDressDict.TryGetValue(id, out fashionDress); { Dictionary<int, List<int>> dict; if (!fashionDressQualityDict.TryGetValue(config.type, out dict)) { dict = new Dictionary<int, List<int>>(); fashionDressQualityDict.Add(config.type, dict); } List<int> list; if (!dict.TryGetValue(config.quality, out list)) { list = new List<int>(); dict.Add(config.quality, list); } list.Add(config.CoatID); } } } { var configs = Config.Instance.GetAllValues<FashionDressCabinetConfig>(); foreach (var config in configs) { cabinetPropertyDict.Add(config.LV, ConfigParse.GetDic<int, int>(config.Attr)); if (config.LV > cabinetMaxLevel) { cabinetMaxLevel = config.LV; } } } { var config = Config.Instance.Get<FuncConfigConfig>("FashionDressType"); if (config != null) { fashionTypeMapPlaceDict = ConfigParse.GetDic<int, int>(config.Numerical1); } } } public int GetFashionDressLevel(int id) @@ -70,14 +150,77 @@ return 0; } public bool TryGetFashionDressProperty(int id, int star, out Dictionary<int, int> dict) public int GetFashionDressEquipId(int type) { if (fashionTypeMapPlaceDict.ContainsKey(type) && fashionDressTypeDict.ContainsKey(type)) { var equipPlace = fashionTypeMapPlaceDict[type]; var itemModel = packModel.GetItemModelByIndex(PackType.rptEquip, (int)equipPlace); var list = fashionDressTypeDict[type]; if (itemModel != null) { var index = list.FindIndex((id) => { FashionDress fashionDress; if (TryGetFashionDress(id, out fashionDress)) { return fashionDress.GetEquipItemId() == itemModel.itemId; } return false; }); if (index != -1) { return list[index]; } } } return 0; } public bool TryGetFashionDress(int id, out FashionDress fashionDress) { return fashionDressDict.TryGetValue(id, out fashionDress); } public bool TryGetFashionDresses(int type, int quality, out List<int> list) { list = null; if (fashionDressQualityDict.ContainsKey(type)) { return fashionDressQualityDict[type].TryGetValue(quality, out list); } return false; } public bool TryGetFashionDressProperty(int id, int level, out Dictionary<int, int> dict) { dict = null; if (fashionDressDict.ContainsKey(id)) { return fashionDressDict[id].TryGetProperty(star, out dict); return fashionDressDict[id].TryGetProperty(level, out dict); } return false; } public bool TryGetSelect(int type, out int id) { id = 0; if (fashionDressSelectDict.ContainsKey(type)) { id = fashionDressSelectDict[type]; return true; } return false; } public void SetPreviewFashionDress(int type, int id) { fashionDressSelectDict[type] = id; if (previewRefresh != null) { previewRefresh(type); } } #region 时装详情 @@ -139,9 +282,19 @@ return 0; } public bool TryGetProperty(int star, out Dictionary<int, int> dict) public bool TryGetProperty(int level, out Dictionary<int, int> dict) { return propertys.TryGetValue(star, out dict); return propertys.TryGetValue(level, out dict); } public int GetLevelUpRequireCount(int level) { var index = level; if (index < requireLevelUpCounts.Count) { return requireLevelUpCounts[index]; } return 0; } } } System/FashionDress/FashionDressQualityBehaviour.cs
New file @@ -0,0 +1,58 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class FashionDressQualityBehaviour : MonoBehaviour { [SerializeField] int m_Quality = 0; [SerializeField] Transform m_ContainerSelect; [SerializeField] Transform m_ContainerNormal; [SerializeField] Shadow m_QualityShadow; [SerializeField] Button m_Select; FashionDressModel model { get { return ModelCenter.Instance.GetModel<FashionDressModel>(); } } private void Awake() { m_Select.AddListener(OnSelect); } public void Display() { model.selectQualityRefresh += SelectQualityRefresh; DisplaySelect(); } void DisplaySelect() { bool selected = model.selectQuality == m_Quality; m_ContainerSelect.gameObject.SetActive(selected); m_ContainerNormal.gameObject.SetActive(!selected); m_QualityShadow.enabled = selected; } public void Dispose() { model.selectQualityRefresh -= SelectQualityRefresh; } private void SelectQualityRefresh() { DisplaySelect(); } private void OnSelect() { model.selectQuality = m_Quality; } } } System/FashionDress/FashionDressQualityBehaviour.cs.metacopy from Core/GameEngine/Model/Config/FashionDressLevelUpConfig.cs.meta copy to System/FashionDress/FashionDressQualityBehaviour.cs.meta
File was copied from Core/GameEngine/Model/Config/FashionDressLevelUpConfig.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 780afd3c2aae26346a489721491894e5 timeCreated: 1546853266 guid: a006ff57d928a7248b12f7688c91811e timeCreated: 1546914298 licenseType: Pro MonoImporter: serializedVersion: 2 System/FashionDress/FashionDressWin.cs
@@ -6,6 +6,7 @@ using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; @@ -15,6 +16,16 @@ public class FashionDressWin : Window { [SerializeField] FashionDressTypeBehaviour[] m_FashionDressTypes; [SerializeField] Button m_ViewProperty; [SerializeField] Button m_Resolve; [SerializeField] IntensifySmoothSlider m_SmoothSlider; [SerializeField] Text m_CabinetExp; [SerializeField] Text m_CabinetLevel; [SerializeField] FashionDressQualityBehaviour[] m_FashionDressQualitys; [SerializeField] ScrollerController m_ScrollerControl; [SerializeField] Button m_ViewDetail; FashionDressModel model { @@ -27,10 +38,27 @@ protected override void AddListeners() { m_ViewProperty.AddListener(ViewProperty); m_Resolve.AddListener(Resolve); m_ViewDetail.AddListener(ViewDetail); m_ScrollerControl.OnRefreshCell += OnRefreshCell; } protected override void OnPreOpen() { model.cabinetRefresh += FashionDressCabinetRefresh; model.selectTypeRefresh += SelectTypeRefresh; model.selectQualityRefresh += SelectQualityRefresh; for (int i = 0; i < m_FashionDressTypes.Length; i++) { m_FashionDressTypes[i].Display(); } for (int i = 0; i < m_FashionDressQualitys.Length; i++) { m_FashionDressQualitys[i].Display(); } Display(); } protected override void OnAfterOpen() @@ -39,6 +67,18 @@ protected override void OnPreClose() { model.cabinetRefresh -= FashionDressCabinetRefresh; model.selectTypeRefresh -= SelectTypeRefresh; model.selectQualityRefresh -= SelectQualityRefresh; for (int i = 0; i < m_FashionDressTypes.Length; i++) { m_FashionDressTypes[i].Dispose(); } for (int i = 0; i < m_FashionDressQualitys.Length; i++) { m_FashionDressQualitys[i].Dispose(); } } protected override void OnAfterClose() @@ -46,6 +86,94 @@ } #endregion void Display() { DisplayCabinet(); DisplayFashionDress(); } void DisplayCabinet(bool requireAnimation = false) { m_SmoothSlider.stage = model.cabinetLevel; if (!requireAnimation) { m_SmoothSlider.delay = 0; m_SmoothSlider.ResetStage(); } else { m_SmoothSlider.delay = 0.2f; } bool isMax = model.cabinetLevel >= model.cabinetMaxLevel; var progress = 0f; if (isMax) { progress = 1; m_CabinetExp.text = model.cabinetExp.ToString(); } else { var config = Config.Instance.Get<FashionDressCabinetConfig>(model.cabinetLevel + 1); progress = Mathf.Clamp01((float)model.cabinetExp / config.NeedExp); m_CabinetExp.text = StringUtility.Contact(model.cabinetExp, "/", config.NeedExp); } m_SmoothSlider.value = progress; m_CabinetLevel.text = Language.Get("CabinetLevel", model.cabinetLevel); } void DisplayFashionDress() { List<int> list; m_ScrollerControl.Refresh(); if (model.TryGetFashionDresses(model.selectType, model.selectQuality, out list)) { for (int i = 0; i < list.Count; i++) { m_ScrollerControl.AddCell(ScrollerDataType.Header, list[i]); } } m_ScrollerControl.Restart(); } private void FashionDressCabinetRefresh() { DisplayCabinet(true); } private void SelectTypeRefresh() { DisplayFashionDress(); } private void SelectQualityRefresh() { DisplayFashionDress(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var fashionDressCell = cell as FashionDressCell; fashionDressCell.Display(cell.index); } private void Resolve() { } private void ViewProperty() { } private void ViewDetail() { var id = 0; if (model.TryGetSelect(model.selectType, out id)) { model.ViewFashionDressDetails(id); } } } } System/Role/RolePanel.cs
@@ -288,6 +288,7 @@ private void OpenFashionDress() { CloseChild(); WindowCenter.Instance.Open<FashionDressWin>(); functionOrder = m_FashionDress.order; }