예제 #1
0
    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;
    }
예제 #2
0
    /// <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);
    }
예제 #3
0
    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]));
    }
예제 #4
0
    // ================================== 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();
    }
예제 #5
0
    // 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();
    }
예제 #6
0
 public NodeSaveInfo(NodeSaveInfo a_Copy)
 {
     m_TopicIndex = a_Copy.m_TopicIndex;
     m_NodeIndex  = a_Copy.m_NodeIndex;
     m_Progress   = a_Copy.m_Progress;
 }