public static MissionStepInfo DeepCopy(MissionStepInfo source)
        {
            MissionStepInfo elem = new MissionStepInfo();

            elem.Counter = source.Counter;
            elem.StepId  = elem.StepId;
            return(elem);
        }
        public static MissionInfo DeepCopy(MissionInfo source)
        {
            MissionInfo elem = new MissionInfo();

            elem.Counter             = source.Counter;
            elem.MissionId           = source.MissionId;
            elem.MissionStepInfoList = new List <MissionStepInfo>();
            for (int i = 0; i < source.MissionStepInfoList.Count; ++i)
            {
                MissionStepInfo info = DeepCopy(source.MissionStepInfoList[i]);
                elem.MissionStepInfoList.Add(info);
            }
            return(elem);
        }
    private void OnAcceptNewMission(MissionElement mission)
    {
        MissionInfo info = new MissionInfo();

        info.MissionId           = mission.GetCurrentMissionId();
        info.Counter             = 0;
        info.MissionStepInfoList = new List <MissionStepInfo>();

        //set search map
        if (!m_MissionCounterMap.ContainsKey(mission.GetCurrentMissionId()))
        {
            m_MissionCounterMap.Add(mission.GetCurrentMissionId(), 0);
        }
        else
        {
            m_MissionCounterMap[mission.GetCurrentMissionId()] = 0;
        }

        for (int i = 0; i < mission.GetMissionStepConfig().Count; ++i)
        {
            MissionStepInfo stepInfo = new MissionStepInfo();
            stepInfo.Counter = 0;
            stepInfo.StepId  = mission.GetMissionStepConfig()[i].Id;

            //set search map
            if (!m_MissionStepCounterMap.ContainsKey(mission.GetMissionStepConfig()[i].Id))
            {
                m_MissionStepCounterMap.Add(mission.GetMissionStepConfig()[i].Id, 0);
            }
            else
            {
                m_MissionStepCounterMap[mission.GetMissionStepConfig()[i].Id] = 0;
            }
            info.MissionStepInfoList.Add(stepInfo);
        }

        //add element
        m_MissionInfoList.Add(info);

        RewriteMissionCounter();
    }