public void UpdateLastSelectedNode(int a_Progress, int a_NodeIndex, int a_TopicIndex) { NodeSaveInfo lastSelectedNode = m_saveDataInfo.m_LastSelectedNode; // update progress lastSelectedNode.m_Progress.x = a_Progress; // check progress out of range if (lastSelectedNode.m_Progress.x >= lastSelectedNode.m_Progress.y) { lastSelectedNode.m_Progress.x = 0; } // update node index lastSelectedNode.m_NodeIndex = a_NodeIndex; // check node out of range int nodesOfCurTopic = m_dMap[lastSelectedNode.m_TopicIndex].m_lNodes.Count; if (lastSelectedNode.m_NodeIndex >= nodesOfCurTopic) { lastSelectedNode.m_NodeIndex = 0; } // update topic index lastSelectedNode.m_TopicIndex = a_TopicIndex; // check topic out of range if (!m_dMap.ContainsKey(lastSelectedNode.m_TopicIndex)) { lastSelectedNode.m_TopicIndex = 0; } m_saveDataInfo.m_LastSelectedNode = lastSelectedNode; }
/// <summary> /// Func update last unlocked node by increase amount /// </summary> /// <param name="a_IsProgressIncrease"></param> /// <param name="a_IsNodeIndexIncrease"></param> /// <param name="a_IsTopicIncrease"></param> public void UpdateUnlockedNodeByAmount(bool a_IsProgressIncrease, bool a_IsNodeIndexIncrease, bool a_IsTopicIncrease) { // Check Player unlock new progress || node || topic NodeSaveInfo lastSelectedNode = m_saveDataInfo.m_LastSelectedNode; NodeSaveInfo lastUnlockedNode = m_saveDataInfo.m_LastUnlockedNode; // We unlocked NEW NODE || NEW TOPIC in case matching of current node and last node if (lastUnlockedNode.m_NodeIndex != lastSelectedNode.m_NodeIndex || lastUnlockedNode.m_TopicIndex != lastSelectedNode.m_TopicIndex) { return; } Vector2 nextProgress = lastSelectedNode.m_Progress; if (a_IsProgressIncrease) { nextProgress.x++; } int nextNodeIndex = lastSelectedNode.m_NodeIndex + (a_IsNodeIndexIncrease ? 1 : 0); int nextTopicIndex = lastSelectedNode.m_TopicIndex + (a_IsTopicIncrease ? 1 : 0); // check TOPIC is out of range if (m_dMap.ContainsKey(nextTopicIndex)) { if (a_IsTopicIncrease) { nextNodeIndex = 0; nextProgress = Vector2.zero; } if (a_IsNodeIndexIncrease) { nextProgress = Vector2.zero; } // check NODE is out of range MapInfo nextMapInfo = m_dMap[nextTopicIndex]; if (nextNodeIndex < nextMapInfo.m_lNodes.Count) { // check progress out of range if (nextProgress.y == 0) { nextProgress.y = nextMapInfo.m_lNodes[nextNodeIndex].m_lVocaIndex.Count; } if (nextProgress.x > nextProgress.y) { nextProgress.x = 0; } } } lastUnlockedNode.m_Progress = nextProgress; lastUnlockedNode.m_NodeIndex = nextNodeIndex; lastUnlockedNode.m_TopicIndex = nextTopicIndex; m_saveDataInfo.m_LastUnlockedNode = lastUnlockedNode; // update last selectednode m_saveDataInfo.m_LastSelectedNode = new NodeSaveInfo(m_saveDataInfo.m_LastUnlockedNode); }
public NodeInfo GetNodeInfo(NodeSaveInfo a_nodeSaveInfo) { if (!m_dMap.ContainsKey(a_nodeSaveInfo.m_TopicIndex)) { return(null); } MapInfo mapInfo = m_dMap[a_nodeSaveInfo.m_TopicIndex]; if (a_nodeSaveInfo.m_NodeIndex >= mapInfo.m_lNodes.Count) { return(null); } return(new NodeInfo(mapInfo.m_lNodes[a_nodeSaveInfo.m_NodeIndex])); }
// ================================== PRIVATE FUNCS ================================== #region Private Funcs private void Init() { // get info of current node DbMgr dbMgr = DbMgr.s_Instance; NodeSaveInfo lastSelectedNode = dbMgr.PLastSelectedNode; m_CurNodeInfo = dbMgr.GetNodeInfo(lastSelectedNode); // add GElement AddGElement(Ref_StoryKbMgr); AddGElement(Ref_StoryProgressCont); AddGElement(Ref_StoryAnswerCont); AddGElement(Ref_StoryPressedTextCont); AddGElement(Ref_StoryFish); // show progress m_Progress = lastSelectedNode.m_Progress; m_Progress.y = m_CurNodeInfo.m_lVocaIndex.Count; Ref_StoryProgressCont.ShowProgress(m_CurNodeInfo.m_TopicIndex, m_Progress); // gen voca UpdateVoca(); }
// override HUD public override void Init(HUDInfo a_HUDInfo) { base.Init(a_HUDInfo); // hide map template Ref_MapTemplateObj.SetActive(false); SetLocationForElement(Ref_MapTemplateObj); AddHUDElement(Ref_HighlightBtn); // get index of last unlocked & selected nodes m_LastUnlockedNode = Ref_DbMgr.PLastUnlockedNode; m_CurSelectedNode = Ref_DbMgr.PLastSelectedNode; CheckRevertToUnlockedTopic(); // get list of node infos m_CurMapInfo = Ref_DbMgr.GetMapInfo(m_CurSelectedNode.m_TopicIndex); // gen map GenMap(); // show highlight with scale equal to the gen map ShowHighlight(); // show progress of node ShowNodeProgress(); }
public NodeSaveInfo(NodeSaveInfo a_Copy) { m_TopicIndex = a_Copy.m_TopicIndex; m_NodeIndex = a_Copy.m_NodeIndex; m_Progress = a_Copy.m_Progress; }