bool UpdateMissionItem(int nMissionID)
    {
        if (nMissionID < 0)
        {
            return(false);
        }

        int nIndex = -1;

        for (int i = 0; i < m_MissionItemsList.Count; i++)
        {
            int ItemMissionID = m_MissionItemsList[i].MissionID;
            if (ItemMissionID == nMissionID)
            {
                nIndex = i;
                break;
            }
        }
        // 没任务
        if (nIndex < 0 || nIndex >= m_MissionItemsList.Count)
        {
            return(false);
        }
        Tab_MissionDictionary MDLine = TableManager.GetMissionDictionaryByID(nMissionID, 0);

        if (MDLine == null)
        {
            LogModule.ErrorLog("Can not find missionDictionary {0}", nMissionID);
        }
        else
        {
            int nParam = GameManager.gameManager.MissionManager.GetMissionParam(nMissionID, 0);
            if (nParam != 0)
            {
                m_MissionItemsList[nIndex].MissionInfo.text = "[489667]" + string.Format(MDLine.FollowText, "[489667]", nParam);
            }
        }

        MissionState misState = (MissionState)GameManager.gameManager.MissionManager.GetMissionState(nMissionID);

        if (MissionState.Mission_Completed == misState)
        {
            UIManager.ShowUI(UIInfo.MissionCompletefEffect);
            //string StrMissionTile = MDLine.MissionName;//m_MissionItemsList[nIndex].GetComponent<MissionItemLogic>().MissionTile.text;//StrDictionary.GetClientDictionaryString("#{1361}") + m_MissionItemsList[nIndex].GetComponent<MissionItemLogic>().MissionTile.text;
            m_MissionItemsList[nIndex].MissionTile.text = string.Format(MDLine.MissionName, "[AFF9CD]", "[AFF9CD]");

            int nParam = GameManager.gameManager.MissionManager.GetMissionParam(nMissionID, 0);
            m_MissionItemsList[nIndex].MissionInfo.text = "[AFF9CD]" + string.Format(MDLine.FollowText, "[AFF9CD]", nParam);
            m_MissionItemsList[nIndex].OnUpdateMissionStateIcon(misState);

            UpdateMissionFollowBlink(nIndex, true);

            // 移位
            MissionItemLogic TempObj = m_MissionItemsList[nIndex];
            m_MissionItemsList.RemoveAt(nIndex);
            m_MissionItemsList.Insert(0, TempObj);
            for (int i = 0; i < m_MissionItemsList.Count; i++)
            {
                m_MissionItemsList[i].name = "MissionItem" + i;
            }
            m_CommpletedItemCount += 1;

            // 添加新手指引
            if (nMissionID == 2 || nMissionID == 6)
            {
                m_GuideMissionFlag = true;
                ShowNewPlayerGuide(nMissionID);
            }
            // 乱七八糟的新手指引
            SetVictorNewGuild(nMissionID);
        }
        else
        {
            string StrMissionTile = MDLine.MissionName;
            if (MissionState.Mission_Failed == misState)
            {
                StrMissionTile = "[fe3737]" + StrDictionary.GetClientDictionaryString("#{1362}") + StrMissionTile;
            }

            byte   yMissionQuality = GameManager.gameManager.MissionManager.GetMissionQuality(nMissionID);
            string strMissionColor = GetColorByQuality(yMissionQuality);
            m_MissionItemsList[nIndex].MissionTile.text = string.Format(StrMissionTile, strMissionColor, "[489667]");//"[fe3737]" + StrMissionTile;
            m_MissionItemsList[nIndex].OnUpdateMissionStateIcon(misState);

            UpdateMissionFollowBlink(nIndex, false);
        }

        return(true);
    }
    void DoRepositionForce()
    {
        if (m_MissionsList == null)
        {
            return;
        }

        m_MissionsTopList.enabled = false;
        m_MissionsList.enabled    = false;

        //MissionItemLogic[] children = m_MissionsList.GetComponentsInChildren<MissionItemLogic>();

        float curPos = 0;

        Vector3 everyPos = new Vector3(0f, 0f, 0f);

        Transform myTrans = m_MissionsList.gameObject.transform;

        int MaxCount = myTrans.childCount;

        List <int> sortedIds = new List <int>();

        // 优先已经完成得任务

        for (int i = 0; i < MaxCount; ++i)
        {
            Transform        everyTrans   = myTrans.GetChild(i);
            MissionItemLogic missionLogic = everyTrans.gameObject.GetComponent <MissionItemLogic>();
            if (missionLogic != null)
            {
                int          nMissionID = missionLogic.MissionID;
                MissionState misState   = (MissionState)GameManager.gameManager.MissionManager.GetMissionState(nMissionID);
                if (misState == MissionState.Mission_Completed)
                {
                    everyPos.x = everyTrans.localPosition.x;
                    everyPos.z = everyTrans.localPosition.z;
                    everyPos.y = curPos;
                    everyTrans.localPosition = everyPos;

                    curPos -= m_MissionsList.cellHeight;

                    sortedIds.Add(i);
                }
            }
        }

        // 再次主线任务
        for (int i = 0; i < MaxCount; ++i)
        {
            if (sortedIds.Contains(i))
            {
                continue;
            }
            Transform        everyTrans   = myTrans.GetChild(i);
            MissionItemLogic missionLogic = everyTrans.gameObject.GetComponent <MissionItemLogic>();
            if (missionLogic != null)
            {
                int nMissionID = missionLogic.MissionID;

                if ((int)MISSIONTYPE.MISSION_MAIN == GameManager.gameManager.MissionManager.GetMissionType(nMissionID))
                {
                    everyPos.x = everyTrans.localPosition.x;
                    everyPos.z = everyTrans.localPosition.z;
                    everyPos.y = curPos;
                    everyTrans.localPosition = everyPos;

                    curPos -= m_MissionsList.cellHeight;

                    sortedIds.Add(i);
                }
            }
        }


        for (int i = 0; i < MaxCount; ++i)
        {
            if (sortedIds.Contains(i))
            {
                continue;
            }

            Transform everyTrans = myTrans.GetChild(i);
            everyPos.x = everyTrans.localPosition.x;
            everyPos.z = everyTrans.localPosition.z;
            everyPos.y = curPos;
            everyTrans.localPosition = everyPos;

            curPos -= m_MissionsList.cellHeight;
        }

        m_dragPanel.ResetPosition();
    }
    // 创建MissionItem
    bool AddMissionItem(int nMissionID, GameObject resItem)
    {
        if (nMissionID < 0)
        {
            return(false);
        }

        Tab_MissionDictionary MissionDic = TableManager.GetMissionDictionaryByID(nMissionID, 0);

        if (MissionDic == null)
        {
            LogModule.ErrorLog("Can not find missionDictionary {0}", nMissionID);
            return(false);
        }

        if (m_CommpletedItemCount < 0)
        {
            return(false);
        }

        for (int i = 0; i < m_MissionItemsList.Count; ++i)
        {
            if (null != m_MissionItemsList[i])
            {
                if (m_MissionItemsList[i] && m_MissionItemsList[i].MissionID == nMissionID)
                {
                    return(false);
                }
            }
        }

        GameObject ItemObj = Utils.BindObjToParent(resItem, m_MissionsList.gameObject, "MissionItem-1");

        if (ItemObj)
        {
            MissionItemLogic MissionItem = ItemObj.GetComponent <MissionItemLogic>();
            if (MissionItem == null)
            {
                return(false);
            }

            byte   yMissionQuality = GameManager.gameManager.MissionManager.GetMissionQuality(nMissionID);
            string strMissionColor = GetColorByQuality(yMissionQuality);

            MissionItem.MissionID        = nMissionID;
            MissionItem.MissionTile.text = string.Format(MissionDic.MissionName, strMissionColor, "[489667]");
            MissionItem.MissionInfo.text = "[489667]" + string.Format(MissionDic.FollowText, "[489667]", "0");
            MissionItem.UpdateMissionEffect();

//             if (nMissionID == GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentMissionID)
//             {
//               MissionItem.SetAwardItemID(GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentSpecialAwardItemID());
//             }
//             else
//               MissionItem.SetAwardItemID(-1);

            //if (GameManager.gameManager.MissionManager.GetMissionType(nMissionID) == (int)MISSIONTYPE.MISSION_PAOHUAN)
            //{
            //    MissionItem.SetAwardItemID(GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentSpecialAwardItemID());
            //}
            //else
            //  MissionItem.SetAwardItemID(-1);

            // 主线任务放在接任务最上面
            int nTempIndex = m_CommpletedItemCount;
            if (nTempIndex >= 0 && nTempIndex < m_MissionItemsList.Count &&
                (int)MISSIONTYPE.MISSION_MAIN == GameManager.gameManager.MissionManager.GetMissionType(m_MissionItemsList[nTempIndex].MissionID))
            {
                nTempIndex++;
            }
            if (nTempIndex > m_MissionItemsList.Count)
            {
                nTempIndex = m_MissionItemsList.Count;
            }
            m_MissionItemsList.Insert(nTempIndex, MissionItem);
        }

        m_AcceptMissionButton.SetActive(false);

        return(true);
    }
    // 策划要求:任务追踪 跨场景不变  添加 任务Item并设置状态
    void InitMissionItemList(List <int> nMissionSortList, GameObject resItem)
    {
        for (int i = 0; i < nMissionSortList.Count; ++i)
        {
            int nMissionID = nMissionSortList[i];
            if (nMissionID < 0)
            {
                return;
            }

            Tab_MissionDictionary MissionDic = TableManager.GetMissionDictionaryByID(nMissionID, 0);
            if (MissionDic == null)
            {
                LogModule.ErrorLog("Can not find missionDictionary {0}", nMissionID);
                return;
            }

            GameObject ItemObj = Utils.BindObjToParent(resItem, m_MissionsList.gameObject, "MissionItem" + i);
            if (ItemObj)
            {
                MissionItemLogic MissionItem = ItemObj.GetComponent <MissionItemLogic>();
                if (MissionItem == null)
                {
                    return;
                }

                byte   yMissionQuality = GameManager.gameManager.MissionManager.GetMissionQuality(nMissionID);
                string strMissionColor = GetColorByQuality(yMissionQuality);

                MissionItem.MissionID        = nMissionID;
                MissionItem.MissionTile.text = string.Format(MissionDic.MissionName, strMissionColor, "[489667]");
                MissionItem.MissionInfo.text = "[489667]" + string.Format(MissionDic.FollowText, "[489667]", "0");
                MissionItem.OnUpdateMissionStateIcon(MissionState.Mission_None);
                MissionItem.UpdateMissionEffect();

                m_MissionItemsList.Add(MissionItem);
                SetPaoHuanAwardItemID();


                // 设置状态
                MissionState misState = (MissionState)GameManager.gameManager.MissionManager.GetMissionState(nMissionID);
                if (MissionState.Mission_Completed == misState)
                {
                    MissionItem.MissionTile.text = string.Format(MissionDic.MissionName, "[AFF9CD]", "[AFF9CD]");

                    int nParam = GameManager.gameManager.MissionManager.GetMissionParam(nMissionID, 0);
                    MissionItem.MissionInfo.text = "[AFF9CD]" + string.Format(MissionDic.FollowText, "[AFF9CD]", nParam);
                    MissionItem.OnUpdateMissionStateIcon(misState);

//                  if (nMissionID == GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentMissionID)
//                      MissionItem.SetAwardItemID (GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentSpecialAwardItemID ());
//                  else
//                      MissionItem.SetAwardItemID (-1);
                    UpdateMissionFollowBlink(i, true);

                    m_CommpletedItemCount += 1;

                    // 添加新手指引
                    if (nMissionID == 2 || nMissionID == 7)
                    {
                        m_GuideMissionFlag = true;
                        ShowNewPlayerGuide(nMissionID);
                    }
                }
                else
                {
                    string StrMissionTile = MissionDic.MissionName;
                    if (MissionState.Mission_Failed == misState)
                    {
                        StrMissionTile = "[489667]" + StrDictionary.GetClientDictionaryString("#{1362}") + StrMissionTile;
                    }
                    MissionItem.MissionTile.text = string.Format(StrMissionTile, strMissionColor, "[489667]");
//                  if (nMissionID == GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentMissionID)
//                      MissionItem.SetAwardItemID (GameManager.gameManager.MissionManager.PaoHuanInfo.CurrentSpecialAwardItemID ());
//                  else
//                      MissionItem.SetAwardItemID (-1);
                    int nParam = GameManager.gameManager.MissionManager.GetMissionParam(nMissionID, 0);
                    if (nParam != 0)
                    {
                        MissionItem.MissionInfo.text = "[489667]" + string.Format(MissionDic.FollowText, "[489667]", nParam);
                        MissionItem.OnUpdateMissionStateIcon(misState);
                    }
                }
            }
        }

        SortMissionItem();

        if (m_MissionsList)
        {
#if UNITY_WP8
            DoRepositionForce();
#else
            m_MissionsList.repositionNow = true;
#if BOBJOYSTICK
            RefreshJoyGUI();
#endif
#endif
        }
    }