| Core/GameEngine/Model/Config/TaskListConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/GameEngine/Model/Config/TaskListConfig.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Lua/Gen/SnxxzUITreasureModelWrap.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Lua/Gen/XLuaGenAutoRegister.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/HumanThreeDimensionsBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/HumanTreasureTaskCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/HumanTreasureTaskCell.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/HumanTreasureWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/TreasureCollectBriefInfoBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/TreasureComponent.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Treasure/TreasureModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/GameEngine/Model/Config/TaskListConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: Fish // [ Date ]: Thursday, February 14, 2019 // [ Date ]: Saturday, April 20, 2019 //-------------------------------------------------------- using System.Collections.Generic; @@ -13,15 +13,17 @@ public partial class TaskListConfig { public readonly int TaskID; public readonly int ChapterID; public readonly string ChapterName; public readonly string TaskName; public readonly string TaskDescribe; public readonly string TaskRewards; public readonly string TaskTarget; public readonly int[] CollectNPC; public readonly int FabaoID; public readonly int TaskID; public readonly int ChapterID; public readonly string ChapterName; public readonly string TaskName; public readonly string TaskDescribe; public readonly string TaskRewards; public readonly string TaskTarget; public readonly int[] CollectNPC; public readonly int FabaoID; public readonly int clue; public readonly string clueName; public TaskListConfig() { @@ -33,28 +35,32 @@ { var tables = input.Split('\t'); int.TryParse(tables[0],out TaskID); int.TryParse(tables[1],out ChapterID); ChapterName = tables[2]; TaskName = tables[3]; TaskDescribe = tables[4]; TaskRewards = tables[5]; TaskTarget = tables[6]; int.TryParse(tables[0],out TaskID); int.TryParse(tables[1],out ChapterID); ChapterName = tables[2]; TaskName = tables[3]; TaskDescribe = tables[4]; TaskRewards = tables[5]; TaskTarget = tables[6]; string[] CollectNPCStringArray = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries); CollectNPC = new int[CollectNPCStringArray.Length]; for (int i=0;i<CollectNPCStringArray.Length;i++) { int.TryParse(CollectNPCStringArray[i],out CollectNPC[i]); } int.TryParse(tables[8],out FabaoID); } int.TryParse(tables[8],out FabaoID); int.TryParse(tables[9],out clue); clueName = tables[10]; } catch (Exception ex) { Core/GameEngine/Model/Config/TaskListConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: f73c099fbaf92ca46b2efc87300b8342 timeCreated: 1550121603 timeCreated: 1555731989 licenseType: Pro MonoImporter: serializedVersion: 2 Lua/Gen/SnxxzUITreasureModelWrap.cs
File was deleted Lua/Gen/XLuaGenAutoRegister.cs
@@ -1375,9 +1375,6 @@ translator.DelayWrapLoader(typeof(PwdKeyboard), PwdKeyboardWrap.__Register); translator.DelayWrapLoader(typeof(Snxxz.UI.TreasureModel), SnxxzUITreasureModelWrap.__Register); translator.DelayWrapLoader(typeof(Snxxz.UI.TreasureFindHostModel), SnxxzUITreasureFindHostModelWrap.__Register); System/Treasure/HumanThreeDimensionsBehaviour.cs
@@ -8,8 +8,6 @@ public class HumanThreeDimensionsBehaviour : MonoBehaviour { [SerializeField] Canvas m_TreasureCanva; [SerializeField] Text m_Chapter; [SerializeField] Text m_ChapterName; [SerializeField] Transform m_ContainerLock; [SerializeField] Transform m_ContainerCollecting; [SerializeField] Text m_TreasureName; @@ -30,17 +28,8 @@ void DisplayBase() { List<int> tasks = null; if (model.TryGetTreasureTasks(treasureId, out tasks)) { var config = TreasureConfig.Get(treasureId); var taskConfig = TaskListConfig.Get(tasks[0]); var chapterArray = taskConfig.ChapterName.Split(split_identify, System.StringSplitOptions.RemoveEmptyEntries); var chapterName = chapterArray.Length > 1 ? chapterArray[1] : chapterArray[0]; m_Chapter.text = chapterArray[0]; m_ChapterName.text = chapterName; m_TreasureName.text = string.Format("获得{0}", config.Name); } var config = TreasureConfig.Get(treasureId); m_TreasureName.text = string.Format("获得{0}", config.Name); } void DisplayState() System/Treasure/HumanTreasureTaskCell.cs
New file @@ -0,0 +1,91 @@ using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class HumanTreasureTaskCell : CellView { [SerializeField] Text m_TreasureName; [SerializeField] Text m_ClueName; [SerializeField] Transform m_ContainerCollected; [SerializeField] Transform m_ContainerCollecting; [SerializeField] Button m_Goto; [SerializeField] Transform m_ContainerCutline; TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } } TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } } private void Awake() { m_Goto.AddListener(Goto); } public void Display(int clue) { var config = TreasureConfig.Get(model.selectedTreasure); m_TreasureName.text = StringUtility.Contact("【", config.Name, "】"); Dictionary<int, List<int>> clues; if (!model.TryGetTreasureClues(model.selectedTreasure, out clues) || !clues.ContainsKey(clue)) { return; } var tasks = clues[clue]; var taskConfig = TaskListConfig.Get(tasks[0]); m_ClueName.text = taskConfig.clueName; var clueState = 0; Treasure treasure; var taskId = taskModel.GetLatestMainTaskId(); var taskState = taskModel.GetQuestState(taskId); if (model.TryGetTreasure(model.selectedTreasure, out treasure)) { if (treasure.state == TreasureState.Collected) { clueState = 2; } else { var lastTask = tasks[tasks.Count - 1]; if (taskId > lastTask || (taskId == lastTask && taskState == 3)) { clueState = 2; } else { if (tasks.Contains(taskId)) { clueState = 1; } else { clueState = 0; } } } } m_ContainerCollected.gameObject.SetActive(clueState == 2); m_ContainerCollecting.gameObject.SetActive(clueState == 1); var lastClue = clues.Keys.Last(); m_ContainerCutline.gameObject.SetActive(lastClue != clue); } private void Goto() { WindowJumpMgr.Instance.ClearJumpData(); WindowCenter.Instance.Close<TreasureBaseWin>(); WindowCenter.Instance.Open<MainInterfaceWin>(); var taskId = taskModel.GetLatestMainTaskId(); taskModel.TaskMove(taskId); } } } System/Treasure/HumanTreasureTaskCell.cs.meta
File was renamed from Lua/Gen/SnxxzUITreasureModelWrap.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 6872b877cfce7414e9ab438145e45682 timeCreated: 1554263556 guid: 357f775fb939ac648a21f39982a64008 timeCreated: 1555741972 licenseType: Pro MonoImporter: serializedVersion: 2 System/Treasure/HumanTreasureWin.cs
@@ -16,14 +16,16 @@ [XLua.Hotfix] public class HumanTreasureWin : Window { [SerializeField] Transform m_ContainerDisplay; [SerializeField] Transform m_Container; [SerializeField] PositionTween m_PositionTween1; [SerializeField] PositionTween m_PositionTween2; [SerializeField] Button m_Preview; [SerializeField] Image m_TreasureName; [SerializeField] Text m_Remind; [SerializeField] Text m_TaskTitle; [SerializeField] Text m_TreasureStory; [SerializeField] Image m_SkillIcon; [SerializeField] Text m_SkillName; [SerializeField] Text m_SkillCoolDown; [SerializeField] Text m_SkillDescription; [SerializeField] Transform m_ContainerCollect; [SerializeField] Button m_Challenge; @@ -32,6 +34,8 @@ [SerializeField] Text m_TaskProgress; [SerializeField] Transform m_ContainerCollected; [SerializeField] Transform m_ContainerUnknown; [SerializeField] ScrollerController m_TaskController; bool animationStep = false; @@ -50,11 +54,17 @@ { m_Challenge.AddListener(Challenge); m_Goto.AddListener(GotoTask); m_Preview.SetListener(Preview); m_TaskController.OnRefreshCell += OnRefreshCell; } protected override void OnPreOpen() { Display(); animationStep = false; TreasureBaseWin.allowSelectTreasure += AllowSelectTreasure; model.treasureSelectedEvent += TreasureSelectedEvent; } @@ -73,7 +83,6 @@ { TreasureBaseWin.allowSelectTreasure -= AllowSelectTreasure; model.treasureSelectedEvent -= TreasureSelectedEvent; animationStep = false; } protected override void OnAfterClose() @@ -84,6 +93,7 @@ { DisplayBase(); DisplayProgress(); DisplayTasks(); } void DisplayBase() @@ -91,7 +101,6 @@ var config = TreasureConfig.Get(model.selectedTreasure); m_TreasureName.SetSprite(config.TreasureNameIcon); m_TreasureStory.text = config.Story; m_Remind.text = string.Format("通关本征途可激活{0}", config.Name); List<int> tasks = null; if (model.TryGetTreasureTasks(model.selectedTreasure, out tasks)) @@ -108,8 +117,6 @@ m_SkillIcon.SetSprite(skillConfig.IconName); m_SkillName.text = skillConfig.SkillName; m_SkillDescription.text = skillConfig.Description; m_SkillCoolDown.text = skillConfig.CoolDownTime == 0 ? string.Empty : Language.Get("L1065", skillConfig.CoolDownTime / 1000); } } @@ -126,17 +133,17 @@ { var satisfyChallenge = model.SatisfyChallenge(model.selectedTreasure); m_Goto.gameObject.SetActive(!satisfyChallenge); //m_Goto.gameObject.SetActive(!satisfyChallenge); m_Challenge.gameObject.SetActive(satisfyChallenge); var progress = 1f; List<int> tasks = null; if (model.TryGetTreasureTasks(model.selectedTreasure, out tasks)) Dictionary<int, List<int>> clues; if (model.TryGetTreasureClues(model.selectedTreasure, out clues)) { var count = model.GetCompleteTaskCount(model.selectedTreasure); progress = Mathf.Clamp01((float)count / tasks.Count); m_TaskProgress.text = StringUtility.Contact((int)(progress * 100), "%"); m_TaskProgress.text = StringUtility.Contact(count, "/", clues.Count); progress = Mathf.Clamp01((float)count / clues.Count); } m_TaskSlider.value = progress; @@ -144,14 +151,33 @@ } } void DisplayAnimation() void DisplayTasks() { m_Container.gameObject.SetActive(false); animationStep = true; UI3DTreasureSelectStage.Instance.Tween(OnTreasureTweenComplete); m_TaskController.Refresh(); Dictionary<int, List<int>> clues; if (model.TryGetTreasureClues(model.selectedTreasure, out clues)) { foreach (var clue in clues.Keys) { m_TaskController.AddCell(ScrollerDataType.Header, clue); } } m_TaskController.Restart(); } private void OnTreasureTweenComplete() void DisplayAnimation() { animationStep = true; m_PositionTween1.Play(); m_PositionTween2.Play(); UI3DTreasureSelectStage.Instance.Tween(OnTweenComplete); m_Container.gameObject.SetActive(false); } private void OnTweenComplete() { animationStep = false; m_Container.gameObject.SetActive(true); @@ -159,8 +185,13 @@ private void TreasureSelectedEvent(int obj) { Display(); m_PositionTween1.Stop(); m_PositionTween2.Stop(); m_PositionTween1.SetEndState(); m_PositionTween2.SetEndState(); m_Container.gameObject.SetActive(true); UI3DTreasureSelectStage.Instance.SetEndState(); Display(); } private void Challenge() @@ -193,6 +224,29 @@ } return true; } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var taskCell = cell as HumanTreasureTaskCell; taskCell.Display(cell.index); } private void Preview() { UI3DTreasureSelectStage.Instance.CloseRenderCamera(); m_ContainerDisplay.gameObject.SetActive(false); var baseWin = WindowCenter.Instance.Get<TreasureBaseWin>(); if (baseWin != null) { baseWin.DisplayContainer(false); } UI3DHeroSkillShow.Instance.ShowTreasureSkill(model.selectedTreasure, () => { UI3DTreasureSelectStage.Instance.OpenRenderCamera(); m_ContainerDisplay.gameObject.SetActive(true); baseWin.DisplayContainer(true); }); } } } System/Treasure/TreasureCollectBriefInfoBehaviour.cs
@@ -108,11 +108,11 @@ { var progress = 1f; List<int> tasks; if (model.TryGetTreasureTasks(displayId, out tasks)) Dictionary<int, List<int>> clues; if (model.TryGetTreasureClues(displayId, out clues)) { var count = model.GetCompleteTaskCount(displayId); progress = Mathf.Clamp01((float)count / tasks.Count); progress = Mathf.Clamp01((float)count / clues.Count); } m_TaskSlider.value = progress; System/Treasure/TreasureComponent.cs
@@ -100,7 +100,7 @@ public void RequestName() { RecycleName(); if (category == TreasureCategory.King || category == TreasureCategory.Human) if (category == TreasureCategory.King) { return; } System/Treasure/TreasureModel.cs
@@ -19,6 +19,7 @@ Dictionary<TreasureCategory, List<int>> treasureCategory = new Dictionary<TreasureCategory, List<int>>(); Dictionary<int, int> treasureMapDict = new Dictionary<int, int>(); Dictionary<int, TreasureDungeon> treasureDungeons = new Dictionary<int, TreasureDungeon>(); Dictionary<int, Dictionary<int, List<int>>> treasureClues = new Dictionary<int, Dictionary<int, List<int>>>(); Dictionary<int, List<int>> treasureTasks = new Dictionary<int, List<int>>(); Dictionary<TreasureCategory, int> treasureUnlockShowDict = new Dictionary<TreasureCategory, int>(); Dictionary<int, int> treasureTaskCompletedCounts = new Dictionary<int, int>(); @@ -315,7 +316,20 @@ var taskConfigs = TaskListConfig.GetValues(); foreach (var config in taskConfigs) { Dictionary<int, List<int>> clues = null; if (!treasureClues.TryGetValue(config.FabaoID, out clues)) { clues = new Dictionary<int, List<int>>(); treasureClues.Add(config.FabaoID, clues); } List<int> tasks = null; if (!clues.TryGetValue(config.clue, out tasks)) { tasks = new List<int>(); clues.Add(config.clue, tasks); } tasks.Add(config.TaskID); if (!treasureTasks.TryGetValue(config.FabaoID, out tasks)) { tasks = new List<int>(); @@ -424,7 +438,12 @@ return false; } public bool TryGetTreasureTasks(int id, out List<int> tasks) public bool TryGetTreasureClues(int id, out Dictionary<int, List<int>> clues) { return treasureClues.TryGetValue(id, out clues); } public bool TryGetTreasureTasks(int id,out List<int> tasks) { return treasureTasks.TryGetValue(id, out tasks); } @@ -463,29 +482,27 @@ public int GetCompleteTaskCount(int id) { var count = 0; List<int> tasks = null; if (TryGetTreasureTasks(id, out tasks)) Dictionary<int, List<int>> clues = null; if (TryGetTreasureClues(id, out clues)) { var taskId = taskModel.GetLatestMainTaskId(); var taskState = taskModel.GetQuestState(taskId); var lastTask = tasks[tasks.Count - 1]; if (taskId > lastTask) var clueCount = 0; foreach (var clue in clues.Keys) { count = tasks.Count; } else { var index = tasks.IndexOf(taskId); if (index == -1) clueCount++; List<int> tasks = clues[clue]; var lastTask = tasks[tasks.Count - 1]; if (taskId > lastTask) { count = 0; count = clueCount; } else else if (taskId == lastTask && taskState == 3) { count = taskState == 3 ? (index + 1) : index; count = clueCount; } } count = Mathf.Min(count, tasks.Count); count = Mathf.Min(count, clues.Count); } return count; }