예제 #1
0
        /// <summary>
        ///     Set option response handler.
        /// </summary>
        /// <param name="sender">The sender who send the option message.</param>
        /// <param name="message">The option message received.</param>
        private void OnSetOptionResponseMessage(ulong sender, SetOptionResponseMessage message)
        {
            object value = null;

            switch (message.Option)
            {
            case Option.AlwaysAutoHelmet:
            case Option.AdditionalFuelWarning:
            case Option.AlignToGravity:
                value = MyAPIGateway.Utilities.SerializeFromBinary <bool>(message.Value);
                break;

            case Option.FuelThreshold:
            case Option.HaltedSpeedTolerance:
                value = MyAPIGateway.Utilities.SerializeFromBinary <float>(message.Value);
                break;

            case Option.AlignToGravityDelay:
            case Option.DelayAfterManualHelmet:
                value = MyAPIGateway.Utilities.SerializeFromBinary <int>(message.Value);
                break;

            case Option.DisableAutoDampener:
                value = MyAPIGateway.Utilities.SerializeFromBinary <DisableAutoDampenerOption>(message.Value);
                break;

            default:
                using (Log.BeginMethod(nameof(OnSetOptionResponseMessage))) {
                    Log.Error($"Unknown option '{nameof(message.Option)}'");
                }

                return;
            }

            Mod.ShowResultMessage(message.Option, value, message.Result);
        }
예제 #2
0
        /// <summary>
        ///     Set option message handler.
        /// </summary>
        /// <param name="sender">The sender who send the option message.</param>
        /// <param name="message">The option message received.</param>
        private void OnSetOptionMessage(ulong sender, SetOptionMessage message)
        {
            if (message?.Option == null)
            {
                return;
            }

            if (!IsServerAdmin(message.SteamId))
            {
                var response = new SetOptionResponseMessage {
                    Result = Result.NoPermission, Option = message.Option, Value = message.Value
                };
                Network.Send(response, sender);
                return;
            }

            try {
                switch (message.Option)
                {
                case Option.AlwaysAutoHelmet:
                case Option.AdditionalFuelWarning:
                case Option.AlignToGravity:
                    SyncOption(message.Option, MyAPIGateway.Utilities.SerializeFromBinary <bool>(message.Value));
                    break;

                case Option.FuelThreshold:
                case Option.HaltedSpeedTolerance:
                    SyncOption(message.Option, MyAPIGateway.Utilities.SerializeFromBinary <float>(message.Value));
                    break;

                case Option.AlignToGravityDelay:
                case Option.DelayAfterManualHelmet:
                    SyncOption(Option.DelayAfterManualHelmet, MyAPIGateway.Utilities.SerializeFromBinary <int>(message.Value));
                    break;

                case Option.DisableAutoDampener:
                    SyncOption(message.Option, MyAPIGateway.Utilities.SerializeFromBinary <DisableAutoDampenerOption>(message.Value));
                    break;

                default:
                    using (Log.BeginMethod(nameof(OnSetOptionMessage))) {
                        Log.Error($"Unknown option '{nameof(message.Option)}'");
                    }

                    return;
                }

                var response = new SetOptionResponseMessage {
                    Result = Result.Success, Option = message.Option, Value = message.Value
                };
                Network.Send(response, sender);
            } catch (Exception exception) {
                using (Log.BeginMethod(nameof(OnSetOptionMessage))) {
                    Log.Error(exception);

                    var response = new SetOptionResponseMessage {
                        Result = Result.Error, Option = message.Option, Value = message.Value
                    };
                    Network.Send(response, sender);
                }
            }
        }