示例#1
0
        void OnMusicTransition(ref MyEventMusicTransition msg)
        {
            switch (msg.MusicEventType)
            {
            case MyMusicEventEnum.STOP_MUSIC:
                MyScriptWrapper.StopMusic();
                break;

            case MyMusicEventEnum.STOP_TRANSITION:
                MyScriptWrapper.StopTransition(msg.Priority);
                break;

            case MyMusicEventEnum.APPLY_TRANSITION:
            {
                var transition = (MyMusicTransitionEnum)msg.TransitionEnum;

                if (!MyMwcEnums.IsValidValue(transition))
                {
                    Alert("Invalid MyMusicTransitionEnum", msg.SenderEndpoint, msg.EventType);
                    return;
                }

                MyScriptWrapper.ApplyTransition(transition, msg.Priority, msg.Category);
            }
            break;

            default:
                Alert("Unknown music transition type", msg.SenderEndpoint, msg.EventType);
                break;
            }
        }
 public bool ReadEnumNullable <T>(ref T?val) where T : struct, IConvertible
 {
     try
     {
         if (m_binaryReader.ReadBoolean())
         {
             T value;
             if (MyMwcEnums.ReadEnum <T>(m_binaryReader, out value))
             {
                 val = value;
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             val = null;
         }
         return(true);
     }
     catch (Exception ex)
     {
         HandleError(ex);
         return(false);
     }
 }
示例#3
0
 public void LogAll()
 {
     foreach (var val in MyMwcEnums.GetAllowedValues <MyEventEnum>())
     {
         m_loggedMessages.Add(val, MyLoggingTypeEnum.NAME);
     }
 }
示例#4
0
        void OnPlayDialogue(ref MyEventPlayDialogue msg)
        {
            if (!MyMwcEnums.IsValidValue((MyDialogueEnum)msg.DialogueEnum))
            {
                Alert("Invalid dialogue enum", msg.SenderEndpoint, msg.EventType);
                return;
            }

            MyScriptWrapper.PlayDialogue((MyDialogueEnum)msg.DialogueEnum);
        }
 public bool ReadEnum <T>(ref T val) where T : struct, IConvertible
 {
     try
     {
         return(MyMwcEnums.ReadEnum <T>(m_binaryReader, out val));
     }
     catch (Exception ex)
     {
         HandleError(ex);
         return(false);
     }
 }
        void OnEvent(ref MyEventEvent msg)
        {
            var eventType = (MyGlobalEventEnum)msg.EventTypeEnum;

            if (!MyMwcEnums.IsValidValue(eventType))
            {
                Alert("Invalid global event type", msg.SenderEndpoint, msg.EventType);
            }

            // TODO: When required, add position and seed
            MyGlobalEvents.StartGlobalEvent(eventType);
        }
示例#7
0
        void OnSetActorFaction(ref MyEventSetActorFaction msg)
        {
            var actorEnum = (MyActorEnum)msg.ActorId;

            if (MyMwcEnums.IsValidValue(actorEnum))
            {
                MyScriptWrapper.SetActorFaction(actorEnum, msg.Faction);
            }
            else
            {
                Alert("Actor enum invalid", msg.SenderEndpoint, msg.EventType);
            }
        }
        void OnMissionUpdateVars(ref MyEventMissionUpdateVars msg)
        {
            var missionId = (MyMissionID)msg.MissionId;

            if (!MyMwcEnums.IsValidValue <MyMissionID>(missionId))
            {
                Alert("Invalid mission id!", msg.SenderEndpoint, msg.EventType);
                return;
            }

            var mission = MyMissions.GetMissionByID((MyMissionID)msg.MissionId);

            mission.MissionTimer.SetElapsedTime(TimeSpan.FromMilliseconds(msg.ElapsedTime));
        }
示例#9
0
        void OnPlaySound(ref MyEventPlaySound msg)
        {
            if (!MyMwcEnums.IsValidValue((MySoundCuesEnum)msg.SoundEnum))
            {
                Alert("Invalid sound enum", msg.SenderEndpoint, msg.EventType);
                return;
            }

            if (msg.Position.HasValue)
            {
                MyScriptWrapper.PlaySound3D(msg.Position.Value, (MySoundCuesEnum)msg.SoundEnum);
            }
            else
            {
                MyScriptWrapper.PlaySound2D((MySoundCuesEnum)msg.SoundEnum);
            }
        }
示例#10
0
        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;
                }
            }
        }
        void OnAddExplosion(ref MyEventAddExplosion msg)
        {
            if (!MyMwcEnums.IsValidValue(msg.ExplosionFlags))
            {
                Alert("Invalid explosion", msg.SenderEndpoint, msg.EventType);
                return;
            }

            MyEntity entity;

            if (msg.EntityId.HasValue && MyEntities.TryGetEntityById(msg.EntityId.Value.ToEntityId(), out entity))
            {
                MyScriptWrapper.AddExplosion(entity, (MyExplosionTypeEnum)msg.ExplosionType, msg.Damage, msg.Radius, msg.ForceDebris, msg.CreateDecals, (MyParticleEffectsIDEnum?)msg.ParticleIDOverride);
            }
            else if (msg.Position.HasValue)
            {
                MyScriptWrapper.AddExplosion(msg.Position.Value, (MyExplosionTypeEnum)msg.ExplosionType, msg.Radius, msg.Damage, msg.ForceDebris, msg.CreateDecals);
            }
            else
            {
                Alert("Invalid explosion", msg.SenderEndpoint, msg.EventType);
            }
        }
示例#12
0
 public void WriteEnum <T>(T val) where T : struct, IConvertible
 {
     MyMwcEnums.WriteEnum <T>(m_binaryWriter, val);
 }