public void TryAcceptMission(int id)
    {
        for (int i = 0; i < m_MissionList.Count; ++i)
        {
            if (m_MissionList[i].GetCurrentMissionId() == id)
            {
                // already has mission
                return;
            }
        }

        //check is mission exist
        for (int i = 0; i < m_MissionInfoList.Count; ++i)
        {
            if (m_MissionInfoList[i].MissionId == id)
            {
                return;
            }
        }

        MissionElement elem = new MissionElement();

        elem.InitMissionStep(id, OnMissionComplete);

        OnAcceptNewMission(elem);

        if (!m_bIsBusy)
        {
            m_MissionList.Add(elem);
        }
        else
        {
            m_AddedMissionList.Add(elem);
        }
    }