/// <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); }
/// <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); } } }