/// <summary> /// Initializes a new instance of the <see cref="ModService" /> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="cache">The cache.</param> /// <param name="definitionInfoProviders">The definition information providers.</param> /// <param name="reader">The reader.</param> /// <param name="modParser">The mod parser.</param> /// <param name="modWriter">The mod writer.</param> /// <param name="gameService">The game service.</param> /// <param name="storageProvider">The storage provider.</param> /// <param name="mapper">The mapper.</param> public ModService(ILogger logger, ICache cache, IEnumerable <IDefinitionInfoProvider> definitionInfoProviders, IReader reader, IModParser modParser, IModWriter modWriter, IGameService gameService, IStorageProvider storageProvider, IMapper mapper) : base(cache, definitionInfoProviders, reader, modWriter, modParser, gameService, storageProvider, mapper) { this.logger = logger; }
public MemoryDataProcessor(ISettings settings, IContextAwareLogger logger, IModParser modParser, bool isMainProcessor, string tokensPath) { _settings = settings; _logger = logger; _modParser = modParser; foreach (var v in (InterpolatedValueName[])Enum.GetValues(typeof(InterpolatedValueName))) { InterpolatedValues.Add(v, new InterpolatedValue(0.15)); } ToggleSmoothing(true); IsMainProcessor = isMainProcessor; TokensPath = tokensPath; _strainsToken = _tokenSetter("mapStrains", new Dictionary <int, double>(), TokenType.Normal, ",", new Dictionary <int, double>()); _skinToken = _tokenSetter("skin", string.Empty, TokenType.Normal, null, string.Empty); _skinPathToken = _tokenSetter("skinPath", string.Empty, TokenType.Normal, null, string.Empty); _firstHitObjectTimeToken = _tokenSetter("firstHitObjectTime", 0d, TokenType.Normal, null, 0d); _MapBreaksToken = _tokenSetter("mapBreaks", new List <BreakPeriod>(), TokenType.Normal, null, new List <BreakPeriod>()); _MapTimingPointsToken = _tokenSetter("mapTimingPoints", new List <TimingPoint>(), TokenType.Normal, null, new List <TimingPoint>()); _beatmapRankedStatusToken = _tokenSetter("rankedStatus", (short)0, TokenType.Normal, null, (short)0); _statusToken = _tokenSetter("status", OsuStatus.Null, TokenType.Normal, "", OsuStatus.Null); _rawStatusToken = _tokenSetter("rawStatus", OsuMemoryStatus.NotRunning, TokenType.Normal, "", OsuMemoryStatus.NotRunning); InitLiveTokens(); Task.Run(TokenThreadWork, cancellationTokenSource.Token).HandleExceptions(); }
/// <summary> /// Initializes a new instance of the <see cref="ModCollectionService" /> class. /// </summary> /// <param name="messageBus">The message bus.</param> /// <param name="modReportExporter">The mod report exporter.</param> /// <param name="cache">The cache.</param> /// <param name="definitionInfoProviders">The definition information providers.</param> /// <param name="reader">The reader.</param> /// <param name="modWriter">The mod writer.</param> /// <param name="modParser">The mod parser.</param> /// <param name="gameService">The game service.</param> /// <param name="modCollectionExporter">The mod collection exporter.</param> /// <param name="storageProvider">The storage provider.</param> /// <param name="mapper">The mapper.</param> public ModCollectionService(IMessageBus messageBus, IModReportExporter modReportExporter, ICache cache, IEnumerable <IDefinitionInfoProvider> definitionInfoProviders, IReader reader, IModWriter modWriter, IModParser modParser, IGameService gameService, IModCollectionExporter modCollectionExporter, IStorageProvider storageProvider, IMapper mapper) : base(cache, definitionInfoProviders, reader, modWriter, modParser, gameService, storageProvider, mapper) { this.messageBus = messageBus; this.modReportExporter = modReportExporter; this.modCollectionExporter = modCollectionExporter; }
public ModPipeline(IModLocator modLocator, IModParser modParser, IModLoader modLoader, IModIntegrityChecker integrityChecker, IAssemblyResolver resolver, ILoadOrderCalculator orderer) { ModLocator = modLocator; ModParser = modParser; ModLoader = modLoader; IntegrityChecker = integrityChecker; Resolver = resolver; OrderCalculator = orderer; _mods = new List <IMod>(); }
/// <summary> /// Initializes a new instance of the <see cref="ModBaseService" /> class. /// </summary> /// <param name="cache">The cache.</param> /// <param name="definitionInfoProviders">The definition information providers.</param> /// <param name="reader">The reader.</param> /// <param name="modWriter">The mod writer.</param> /// <param name="modParser">The mod parser.</param> /// <param name="gameService">The game service.</param> /// <param name="storageProvider">The storage provider.</param> /// <param name="mapper">The mapper.</param> public ModBaseService(ICache cache, IEnumerable <IDefinitionInfoProvider> definitionInfoProviders, IReader reader, IModWriter modWriter, IModParser modParser, IGameService gameService, IStorageProvider storageProvider, IMapper mapper) : base(storageProvider, mapper) { Cache = cache; DefinitionInfoProviders = definitionInfoProviders; GameService = gameService; Reader = reader; ModParser = modParser; ModWriter = modWriter; }
/// <summary> /// Initializes a new instance of the <see cref="ModMergeService" /> class. /// </summary> /// <param name="modMergeCompressExporter">The mod merge compress exporter.</param> /// <param name="parserManager">The parser manager.</param> /// <param name="cache">The cache.</param> /// <param name="messageBus">The message bus.</param> /// <param name="modPatchExporter">The mod patch exporter.</param> /// <param name="modMergeExporter">The mod merge exporter.</param> /// <param name="definitionInfoProviders">The definition information providers.</param> /// <param name="reader">The reader.</param> /// <param name="modWriter">The mod writer.</param> /// <param name="modParser">The mod parser.</param> /// <param name="gameService">The game service.</param> /// <param name="storageProvider">The storage provider.</param> /// <param name="mapper">The mapper.</param> public ModMergeService(IModMergeCompressExporter modMergeCompressExporter, IParserManager parserManager, ICache cache, IMessageBus messageBus, IModPatchExporter modPatchExporter, IModMergeExporter modMergeExporter, IEnumerable <IDefinitionInfoProvider> definitionInfoProviders, IReader reader, IModWriter modWriter, IModParser modParser, IGameService gameService, IStorageProvider storageProvider, IMapper mapper) : base(cache, definitionInfoProviders, reader, modWriter, modParser, gameService, storageProvider, mapper) { this.modMergeCompressExporter = modMergeCompressExporter; this.parserManager = parserManager; this.messageBus = messageBus; this.modMergeExporter = modMergeExporter; this.modPatchExporter = modPatchExporter; }
public static ScPlayerScore Convert(this PlayerScore playerScore, IModParser modParser) { if (!_playerScores.TryGetValue(playerScore, out var scPlayerScore)) { _playerScores[playerScore] = scPlayerScore = new ScPlayerScore(playerScore); } scPlayerScore.Accuracy = OsuScore.CalculateAccuracy((PlayMode)scPlayerScore.Mode, scPlayerScore.Hit50, scPlayerScore.Hit100, scPlayerScore.Hit300, scPlayerScore.HitMiss, scPlayerScore.HitGeki, scPlayerScore.HitKatu) * 100; scPlayerScore.Grade = OsuScore.CalculateGrade((PlayMode)scPlayerScore.Mode, (Mods)scPlayerScore.Mods, scPlayerScore.Accuracy, scPlayerScore.Hit50, scPlayerScore.Hit100, scPlayerScore.Hit300, scPlayerScore.HitMiss); scPlayerScore.ModsStr = modParser.GetModsFromEnum(scPlayerScore.Mods, true); return(scPlayerScore); }
public OsuMemoryEventSourceBase(IContextAwareLogger logger, ISettings settings, IDatabaseController databaseControler, IModParser modParser, List <IHighFrequencyDataConsumer> highFrequencyDataConsumers, ISaver saver) { _settings = settings; _databaseController = databaseControler; _modParser = modParser; _highFrequencyDataConsumers = highFrequencyDataConsumers; Logger = logger; LiveTokenSetter = Tokens.CreateTokenSetter(Name); TokenSetter = Tokens.CreateTokenSetter($"{Name}-Regular"); _memoryReader = OsuMemoryReader.Instance; _settings.SettingUpdated += OnSettingsSettingUpdated; bool isFallback = _settings.Get <bool>(_names.OsuFallback); bool memoryScannerIsEnabled = _settings.Get <bool>(_names.EnableMemoryScanner); MemoryPoolingIsEnabled = _settings.Get <bool>(_names.EnableMemoryPooling); _poolingMsDelay = _settings.Get <int>(_names.MemoryPoolingFrequency); if (!memoryScannerIsEnabled) { return; } if (isFallback) { _settings.Add(_names.EnableMemoryScanner.Name, false); return; } lock (_lockingObject) _timer = new Timer(TimerCallback, null, 250, Int32.MaxValue); _memoryListener = new MemoryListener(settings, saver, logger); _memoryListener.NewOsuEvent += async(s, args) => { while (NewOsuEvent == null) { await Task.Delay(5); } NewOsuEvent.Invoke(this, args); }; _memoryListener.SetHighFrequencyDataHandlers(_highFrequencyDataConsumers); Started = true; }
public void Setup() { // return fake file systems based on the input "files" locator = new FakeModLoactor(); resolveCount = 0; parser = new FakeModParser(); loader = new FakeModLoader(); integrity = new Mock<IModIntegrityChecker>(); resolverDisposeMock = new Mock<IDisposable>(); resolver = new Mock<IAssemblyResolver>(); resolver.Setup(x => x.Initialize(It.IsAny<IModLoadingDomain>())).Returns(resolverDisposeMock.Object).Callback(() => resolveCount++); loadorder = new Mock<ILoadOrderCalculator>(); loadorder.Setup(x => x.CalculateLoadOrder(It.IsAny<IEnumerable<IMod>>())).Returns(new Func<IEnumerable<IMod>, IEnumerable<IMod>>(x => x)); pipeline = new ModPipeline(locator, parser, loader, integrity.Object, resolver.Object, loadorder.Object); }
public OsuMemoryEventSource(IContextAwareLogger logger, ISettings settings, IDatabaseController databaseController, IModParser modParser, List <Lazy <IHighFrequencyDataConsumer> > highFrequencyDataConsumers, ISaver saver, Delegates.Exit exiter) : base(logger, settings, databaseController, modParser, highFrequencyDataConsumers, saver, exiter) { }
public static IEnumerable <ScPlayerScore> Convert(this List <PlayerScore> playerScores, IModParser modParser) => playerScores.Select(ps => ps.Convert(modParser));
public OsuMemoryEventSource(ILogger logger, ISettingsHandler settings, ISqliteControler sqliteControler, IModParser modParser, List <IHighFrequencyDataHandler> highFrequencyDataHandlers) : base(logger, settings, sqliteControler, modParser, highFrequencyDataHandlers) { }
public OsuMemoryEventSourceBase(IContextAwareLogger logger, ISettings settings, IDatabaseController databaseControler, IModParser modParser, List <Lazy <IHighFrequencyDataConsumer> > highFrequencyDataConsumers, ISaver saver, Delegates.Exit exiter) { _settings = settings; _databaseController = databaseControler; _modParser = modParser; _highFrequencyDataConsumers = highFrequencyDataConsumers; Logger = logger; LiveTokenSetter = Tokens.CreateTokenSetter(Name); TokenSetter = Tokens.CreateTokenSetter($"{Name}-Regular"); var clientCount = _settings.Get <bool>(TourneyMode) ? _settings.Get <int>(ClientCount) : 1; if (_settings.Get <bool>(TourneyMode)) { string exitReason = null; if (clientCount < 2) { exitReason = $"{ClientCount.Name} setting value is invalid. Set value equal or bigger than 2"; } if (_settings.Get <int>(DataClientId) > clientCount - 1) { exitReason = $"{DataClientId.Name} can't be bigger than {ClientCount.Name}. Client ids are 0-indexed"; } if (!string.IsNullOrWhiteSpace(exitReason)) { Logger.Log(exitReason, LogLevel.Warning); MessageBox.Show(exitReason, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); exiter(exitReason); return; } _clientMemoryReaders.AddRange(Enumerable.Range(0, clientCount) .Select(i => { var instance = StructuredOsuMemoryReader.Instance.GetInstanceForWindowTitleHint( $" Tournament Client {i}"); instance.OsuMemoryAddresses.GeneralData.KeyOverlay = null; return(instance); })); //TODO: provide tournament-manager specific data via tokens var _tournamentManagerMemoryReader = OsuMemoryReader.Instance.GetInstanceForWindowTitleHint("Tournament Manager"); Logger.Log($"{_clientMemoryReaders.Count} client readers prepared", LogLevel.Information); } else { _clientMemoryReaders.Add(StructuredOsuMemoryReader.Instance); StructuredOsuMemoryReader.Instance.OsuMemoryAddresses.GeneralData.KeyOverlay = null; StructuredOsuMemoryReader.Instance.InvalidRead += OnInvalidMemoryRead; } _settings.SettingUpdated += OnSettingsSettingUpdated; bool isFallback = _settings.Get <bool>(_names.OsuFallback); bool memoryScannerIsEnabled = _settings.Get <bool>(_names.EnableMemoryScanner); MemoryPoolingIsEnabled = _settings.Get <bool>(_names.EnableMemoryPooling); _poolingMsDelay = _settings.Get <int>(_names.MemoryPoolingFrequency); if (!memoryScannerIsEnabled) { return; } if (isFallback) { _settings.Add(_names.EnableMemoryScanner.Name, false); return; } memoryListener = new MemoryListener(settings, saver, logger, clientCount); memoryListener.NewOsuEvent += async(s, args) => { while (NewOsuEvent == null) { await Task.Delay(5); } NewOsuEvent.Invoke(this, args); }; memoryListener.SetHighFrequencyDataHandlers(_highFrequencyDataConsumers); MemoryWorkerTask = Task.Run(MemoryWorker, cts.Token).HandleExceptions(); Started = true; }
public OsuMapLoaderPlugin(ILogger logger, IModParser modParser) { _logger = logger; _modParser = modParser; }
public OsuMemoryEventSource(IContextAwareLogger logger, ISettings settings, IDatabaseController databaseController, IModParser modParser, List <IHighFrequencyDataConsumer> highFrequencyDataConsumers) : base(logger, settings, databaseController, modParser, highFrequencyDataConsumers) { }