public void SendMissionProgress(MyMissionBase mission, MyMissionProgressType progressType, MyTextsWrapperEnum? messageEnum = null)
        {
            MyEventMissionProgress message = new MyEventMissionProgress();
            message.MissionId = mission != null ? (int)mission.ID : (int?)null;
            message.ProgressType = progressType;
            message.MessageEnum = messageEnum.HasValue ? (int)messageEnum.Value : (int?)null;

            Peers.SendToAll(ref message, NetDeliveryMethod.ReliableOrdered);
        }
        public void OnMissionProgress(ref MyEventMissionProgress msg)
        {
            if (IsStory() && !IsHost)
            {
                ClearCountdownNotification();

                Debug.Assert(m_followMission != null);

                switch (msg.ProgressType)
                {
                    case MyMissionProgressType.Success:
                        MyMission.ShowObjectiveCompleted();
                        m_followMission.SetObjectives(null);
                        break;
                    case MyMissionProgressType.Fail:
                        {
                            MyTextsWrapperEnum? message = null;
                            if (msg.MessageEnum.HasValue)
                            {
                                message = (MyTextsWrapperEnum)msg.MessageEnum.Value;
                                if (!MyMwcEnums.IsValidValue(message.Value))
                                {
                                    message = null;
                                }
                            }
                            MySession.Static.GameOver(message);
                        }
                        break;
                    case MyMissionProgressType.NewObjective:
                        m_followMission.SetObjectives(msg.MissionId);
                        break;
                    default:
                        Debug.Fail("Unknown MyMissionProgressType");
                        break;
                }
            }
        }