public SettingsManager(GeneralSettings settings) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); On <SetLanguageEvent>(e => { if (_settings.Language == e.Language) { return; } _settings.Language = e.Language; }); On <SetMusicVolumeEvent>(e => _settings.MusicVolume = e.Value); On <SetFxVolumeEvent>(e => _settings.FxVolume = e.Value); On <SetCombatDelayEvent>(e => _settings.CombatDelay = e.Value); On <DebugFlagEvent>(e => { _settings.DebugFlags = (DebugFlags)CoreUtil.UpdateFlag((uint)_settings.DebugFlags, e.Operation, (uint)e.Flag); TraceAttachment = (_settings.DebugFlags & DebugFlags.TraceAttachment) != 0; }); On <SpecialEvent>(e => _settings.Special1 = CoreUtil.UpdateValue(_settings.Special1, e.Operation, e.Argument)); On <Special2Event>(e => _settings.Special2 = CoreUtil.UpdateValue(_settings.Special2, e.Operation, e.Argument)); On <EngineFlagEvent>(e => _settings.Flags = (EngineFlags)CoreUtil.UpdateFlag((uint)_settings.Flags, e.Operation, (uint)e.Flag)); }
protected GeneralSettings() { On <SetLanguageEvent>(e => { if (Language == e.Language) { return; } Language = e.Language; }); On <SetMusicVolumeEvent>(e => MusicVolume = e.Value); On <SetFxVolumeEvent>(e => FxVolume = e.Value); On <SetCombatDelayEvent>(e => CombatDelay = e.Value); On <DebugFlagEvent>(e => { DebugFlags = (DebugFlags)CoreUtil.UpdateFlag((uint)DebugFlags, e.Operation, (uint)e.Flag); TraceAttachment = (DebugFlags & DebugFlags.TraceAttachment) != 0; }); On <SpecialEvent>(e => Special1 = CoreUtil.UpdateValue(Special1, e.Operation, e.Argument)); On <Special2Event>(e => Special2 = CoreUtil.UpdateValue(Special2, e.Operation, e.Argument)); On <EngineFlagEvent>(e => Flags = (EngineFlags)CoreUtil.UpdateFlag((uint)Flags, e.Operation, (uint)e.Flag)); }
protected Settings() { On <SetLanguageEvent>(e => { if (Language == e.Language) { return; } Language = e.Language; Raise(e); // Re-raise to ensure any consumers who received it before Settings will get it again. }); On <SetMusicVolumeEvent>(e => MusicVolume = e.Value); On <SetFxVolumeEvent> (e => FxVolume = e.Value); On <SetCombatDelayEvent>(e => CombatDelay = e.Value); On <DebugFlagEvent> (e => { DebugFlags = (DebugFlags)CoreUtil.UpdateFlag((uint)DebugFlags, e.Operation, (uint)e.Flag); TraceAttachment = (DebugFlags & DebugFlags.TraceAttachment) != 0; }); On <SpecialEvent> (e => Special1 = CoreUtil.UpdateValue(Special1, e.Operation, e.Argument)); On <Special2Event> (e => Special2 = CoreUtil.UpdateValue(Special2, e.Operation, e.Argument)); On <EngineFlagEvent>(e => Flags = (EngineFlags)CoreUtil.UpdateFlag((uint)Flags, e.Operation, (uint)e.Flag)); }