Exemplo n.º 1
0
 /// <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();
        }
Exemplo n.º 3
0
 /// <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;
 }
Exemplo n.º 4
0
 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>();
 }
Exemplo n.º 5
0
 /// <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;
 }
Exemplo n.º 6
0
 /// <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);
        }
Exemplo n.º 10
0
 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));
Exemplo n.º 12
0
 public OsuMemoryEventSource(ILogger logger, ISettingsHandler settings, ISqliteControler sqliteControler, IModParser modParser, List <IHighFrequencyDataHandler> highFrequencyDataHandlers) : base(logger, settings, sqliteControler, modParser, highFrequencyDataHandlers)
 {
 }
Exemplo n.º 13
0
        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)
 {
 }