├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── docs.yml ├── .gitignore ├── .gitmodules ├── Directory.Build.props ├── Directory.Packages.props ├── LICENSE ├── PpCalculator ├── CtbCalculator.cs ├── DifficultyAttributesExtensions.cs ├── ManiaCalculator.cs ├── OsuCalculator.cs ├── PerformanceAttributesExtensions.cs ├── PpCalculator.cs ├── PpCalculator.csproj ├── PpCalculatorHelpers.cs ├── ProcessorWorkingBeatmap.cs └── TaikoCalculator.cs ├── PpCalculatorTests ├── PpCalculatorTests.cs ├── PpCalculatorTests.csproj ├── StarRatingTests.cs └── cache │ └── 2462439_cut.osu ├── PpCalculatorTypes ├── BreakPeriod.cs ├── CatchDifficultyAttributes.cs ├── DifficultyAttributes.cs ├── IPpCalculator.cs ├── KiaiPoint.cs ├── ManiaDifficultyAttributes.cs ├── OsuDifficultyAttributes.cs ├── PerformanceAttributes │ ├── CatchPerformanceAttributes.cs │ ├── ManiaPerformanceAttributes.cs │ ├── OsuPerformanceAttributes.cs │ ├── PerformanceAttributes.cs │ └── TaikoPerformanceAttributes.cs ├── PpCalculatorTypes.csproj ├── TaikoDifficultyAttributes.cs └── TimingPoint.cs ├── README.md ├── StreamCompanion.Common ├── CancelableAsyncLazy.cs ├── Configurations │ └── WebSocketConfiguration.cs ├── Consts.cs ├── Extensions │ ├── BeatmapExtensions.cs │ ├── CancellationTokenSourceExtensions.cs │ ├── MapSearchResultsExtensions.cs │ ├── MathExtensions.cs │ ├── PluginExtensions.cs │ ├── PpCalculatorExtensions.cs │ ├── ProcessExtensions.cs │ ├── SettingsExtensions.cs │ ├── StringExtensions.cs │ ├── TaskExtensions.cs │ └── TokensExtensions.cs ├── Helpers │ ├── OsuScore.cs │ ├── Retry.cs │ └── Tokens │ │ ├── BulkTokenUpdateContext.cs │ │ ├── BulkTokenUpdateState.cs │ │ ├── BulkTokenUpdateType.cs │ │ └── TokensBulkUpdate.cs ├── Models │ ├── WebOverlay.cs │ └── WebOverlayRecommendedSettings.cs ├── Properties │ └── AssemblyInfo.cs └── StreamCompanion.Common.csproj ├── Updater ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── Updater.csproj └── compiled.ico ├── VersionControler ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── VersionControler.csproj ├── build ├── msbuild.bat ├── nuget.exe └── vswhere.exe ├── buildRelease-CI.cmd ├── buildRelease.cmd ├── docs ├── docs │ ├── .vuepress │ │ ├── config.ts │ │ ├── configs │ │ │ ├── index.ts │ │ │ └── sidebar.ts │ │ └── public │ │ │ ├── browserconfig.xml │ │ │ ├── favicon.ico │ │ │ ├── images │ │ │ ├── guide │ │ │ │ └── netRuntimeDownload.png │ │ │ ├── icons │ │ │ │ ├── android-chrome-192x192.png │ │ │ │ ├── android-chrome-512x512.png │ │ │ │ ├── apple-touch-icon.png │ │ │ │ ├── favicon-16x16.png │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── mstile-144x144.png │ │ │ │ ├── mstile-150x150.png │ │ │ │ ├── mstile-310x150.png │ │ │ │ ├── mstile-310x310.png │ │ │ │ ├── mstile-70x70.png │ │ │ │ └── safari-pinned-tab.svg │ │ │ └── logo.svg │ │ │ ├── manifest.webmanifest │ │ │ └── misc │ │ │ └── PluginProject.zip │ ├── README.md │ ├── development │ │ ├── README.md │ │ ├── SC │ │ │ ├── README.md │ │ │ ├── api.md │ │ │ ├── apiExamples │ │ │ │ ├── exampleSCOutput.json │ │ │ │ ├── minimalWS.js │ │ │ │ ├── minimalWSpt2.js │ │ │ │ ├── minimalWSpt3.js │ │ │ │ ├── minimalWSpt4.js │ │ │ │ └── plugin │ │ │ │ │ ├── 1.cs │ │ │ │ │ ├── 1.csproj │ │ │ │ │ ├── 2.cs │ │ │ │ │ ├── 2.csproj │ │ │ │ │ ├── 3.cs │ │ │ │ │ ├── 4.cs │ │ │ │ │ ├── 4.csproj │ │ │ │ │ └── launchSettings.json │ │ │ ├── creating-a-plugin.md │ │ │ ├── event-flow.md │ │ │ ├── images │ │ │ │ ├── EventFlow.drawio │ │ │ │ ├── EventFlow.png │ │ │ │ └── VSCreateItem.png │ │ │ ├── linuxSupport.md │ │ │ └── types-rundown.md │ │ ├── docs │ │ │ └── README.md │ │ └── gettingSource.md │ └── guide │ │ ├── README.md │ │ ├── codeExample │ │ └── tournamentTokens.js │ │ ├── configuration.md │ │ ├── gamma.md │ │ ├── getting-started.md │ │ ├── in-game-overlays.md │ │ └── tournament-mode.md ├── package.json └── yarn.lock ├── images ├── logo.png └── webOverlay.jpg ├── innoSetup ├── browserOverlayScript.iss ├── license.txt ├── osuOverlayScript.iss └── setupScript.iss ├── msbuild.rsp ├── nuget.config ├── osu!StreamCompanion.sln ├── osu!StreamCompanion.sln.DotSettings ├── osu!StreamCompanion ├── App.config ├── Code │ ├── Core │ │ ├── DiContainer.cs │ │ ├── Initializer.cs │ │ ├── Loggers │ │ │ ├── ConsoleLogger.cs │ │ │ ├── EmptyLogger.cs │ │ │ ├── FileLogger.cs │ │ │ ├── MainLogger.cs │ │ │ ├── PluginLogger.cs │ │ │ └── SentryLogger.cs │ │ ├── Maps │ │ │ └── Processing │ │ │ │ ├── MapDataGetter.cs │ │ │ │ └── OsuEventHandler.cs │ │ ├── Plugins │ │ │ ├── AssemblyLoader.cs │ │ │ ├── LocalPluginComparer.cs │ │ │ ├── LocalPluginEntry.cs │ │ │ ├── LocalPluginManager.cs │ │ │ ├── PluginEntryUserControl.Designer.cs │ │ │ ├── PluginEntryUserControl.cs │ │ │ ├── PluginEntryUserControl.resx │ │ │ ├── PluginManagerConfiguration.cs │ │ │ ├── PluginManagerSettings.cs │ │ │ ├── PluginManagerSettingsUserControl.Designer.cs │ │ │ ├── PluginManagerSettingsUserControl.cs │ │ │ └── PluginManagerSettingsUserControl.resx │ │ ├── Savers │ │ │ ├── MainSaver.cs │ │ │ └── TextSaver.cs │ │ └── Settings.cs │ ├── Helpers │ │ ├── AsyncBindingHelper.cs │ │ ├── Exceptions.cs │ │ ├── GetDotNetVersion.cs │ │ ├── Helpers.cs │ │ ├── ListExtensions.cs │ │ └── StringExtensions.cs │ ├── Misc │ │ ├── FileChecker.cs │ │ ├── IModule.cs │ │ ├── ImpatientWebClient.cs │ │ └── NativeMethods.cs │ ├── Modules │ │ ├── AdministratorChecker.cs │ │ ├── Donation │ │ │ ├── Donation.cs │ │ │ ├── DonationSettings.Designer.cs │ │ │ ├── DonationSettings.cs │ │ │ └── DonationSettings.resx │ │ ├── FileSaveLocation │ │ │ ├── FileSaveLocation.cs │ │ │ ├── FileSaveLocationSettings.Designer.cs │ │ │ ├── FileSaveLocationSettings.cs │ │ │ └── FileSaveLocationSettings.resx │ │ ├── Logger │ │ │ ├── LoggerSettings.cs │ │ │ ├── LoggerSettingsUserControl.Designer.cs │ │ │ ├── LoggerSettingsUserControl.cs │ │ │ └── LoggerSettingsUserControl.resx │ │ ├── MapDataFinders │ │ │ └── NoData │ │ │ │ └── NoDataFinder.cs │ │ ├── MapDataParsers │ │ │ └── Parser1 │ │ │ │ ├── MapDataParser.cs │ │ │ │ ├── ParserSettings.Designer.cs │ │ │ │ ├── ParserSettings.cs │ │ │ │ ├── ParserSettings.resx │ │ │ │ ├── PatternEdit.Designer.cs │ │ │ │ ├── PatternEdit.cs │ │ │ │ ├── PatternEdit.resx │ │ │ │ ├── PatternList.Designer.cs │ │ │ │ ├── PatternList.cs │ │ │ │ └── PatternList.resx │ │ ├── MapDataReplacements │ │ │ └── Map │ │ │ │ └── MapReplacement.cs │ │ ├── TokensPreview │ │ │ ├── DrawingControl.cs │ │ │ ├── TokensPreview.cs │ │ │ ├── TokensPreviewSettings.Designer.cs │ │ │ ├── TokensPreviewSettings.cs │ │ │ └── TokensPreviewSettings.resx │ │ ├── Updater │ │ │ ├── UpdateContainer.cs │ │ │ ├── UpdateForm.Designer.cs │ │ │ ├── UpdateForm.cs │ │ │ ├── UpdateForm.resx │ │ │ └── Updater.cs │ │ ├── osuFallbackDetector │ │ │ └── OsuFallbackDetector.cs │ │ └── osuPathReslover │ │ │ ├── osuPathResolver.cs │ │ │ ├── osuPathResolverSettings.Designer.cs │ │ │ ├── osuPathResolverSettings.cs │ │ │ └── osuPathResolverSettings.resx │ └── Windows │ │ ├── ErrorFrm.cs │ │ ├── ErrorFrm.designer.cs │ │ ├── ErrorFrm.resx │ │ └── MainWindowEntities.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.settings │ └── app.manifest ├── Resources │ ├── btn_donate_92x26.png │ ├── compiled.ico │ └── logo_256x256.png └── osu!StreamCompanion.csproj ├── plugins ├── BackgroundImageProvider │ ├── BackgroundImageProvider.csproj │ ├── BackgroundImageProviderPlugin.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── BeatmapPpReplacements │ ├── BeatmapPpReplacements.csproj │ ├── PpReplacements.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── ClickCounter │ ├── ClickCounter.cs │ ├── ClickCounter.csproj │ ├── ClickCounter.sln │ ├── ClickCounterFileName.Designer.cs │ ├── ClickCounterFileName.cs │ ├── ClickCounterFileName.resx │ ├── ClickCounterSettings.Designer.cs │ ├── ClickCounterSettings.cs │ ├── ClickCounterSettings.resx │ ├── KeyClickFrm.Designer.cs │ ├── KeyClickFrm.cs │ ├── KeyClickFrm.resx │ ├── KeyboardCounterKeyClick.Designer.cs │ ├── KeyboardCounterKeyClick.cs │ ├── KeyboardCounterKeyClick.resx │ ├── KeyboardCounterMain.Designer.cs │ ├── KeyboardCounterMain.cs │ ├── KeyboardCounterMain.resx │ ├── KeyboardListener.cs │ ├── KeysPerX.Designer.cs │ ├── KeysPerX.cs │ ├── KeysPerX.resx │ ├── Models │ │ ├── Configuration.cs │ │ └── KeyEntry.cs │ ├── MouseListener.cs │ ├── MouseMessages.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── FileMapDataSender │ ├── FileMapDataSender.cs │ ├── FileMapDataSender.csproj │ ├── FileMapManager.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── Gamma │ ├── Gamma.cs │ ├── Gamma.csproj │ ├── GammaPlugin.cs │ ├── GammaSettings.Designer.cs │ ├── GammaSettings.cs │ ├── GammaSettings.resx │ └── Models │ │ ├── Configuration.cs │ │ └── GammaRange.cs ├── IngameOverlays │ ├── BrowserOverlay │ │ ├── BrowserIngameOverlay.csproj │ │ ├── BrowserOverlay.cs │ │ ├── BrowserOverlaySettings.Designer.cs │ │ ├── BrowserOverlaySettings.cs │ │ ├── BrowserOverlaySettings.resx │ │ ├── OverlayDownload.Designer.cs │ │ ├── OverlayDownload.cs │ │ └── OverlayDownload.resx │ ├── Overlay.Common │ │ ├── Dlls │ │ │ └── X32ProcessOverlayHelper.exe │ │ ├── Loader │ │ │ ├── DllInjectionResult.cs │ │ │ ├── DllInjector.cs │ │ │ ├── InjectionResult.cs │ │ │ ├── KnownOsuModules.cs │ │ │ ├── Loader.cs │ │ │ ├── LoaderWatchdog.cs │ │ │ └── ProcessExtensions.cs │ │ ├── Overlay.Common.csproj │ │ ├── OverlayReport.cs │ │ └── ReportType.cs │ └── TextOverlay │ │ ├── Dlls │ │ ├── freetype.dll │ │ └── textOverlay.dll │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── TextIngameOverlay.csproj │ │ ├── TextOverlay.cs │ │ ├── TextOverlaySettings.Designer.cs │ │ ├── TextOverlaySettings.cs │ │ ├── TextOverlaySettings.resx │ │ ├── osuOverlayPlugin.sln │ │ └── packages.config ├── LiveVisualizer │ ├── Chart.xaml │ ├── Chart.xaml.cs │ ├── ColorHelpers.cs │ ├── ColorPickerWithPreview.Designer.cs │ ├── ColorPickerWithPreview.cs │ ├── ColorPickerWithPreview.resx │ ├── ConfigEntrys.cs │ ├── FodyWeavers.xml │ ├── FodyWeavers.xsd │ ├── LiveVisualizer.csproj │ ├── LiveVisualizerPlugin.cs │ ├── LiveVisualizerPluginBase.cs │ ├── LiveVisualizerSettings.Designer.cs │ ├── LiveVisualizerSettings.cs │ ├── LiveVisualizerSettings.resx │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Models │ │ ├── DataPlotBinding.cs │ │ ├── Interfaces │ │ │ ├── IVisualizerConfiguration.cs │ │ │ ├── IVisualizerDisplayData.cs │ │ │ └── IWpfVisualizerData.cs │ │ ├── VisualizerConfiguration.cs │ │ ├── VisualizerDataModel.cs │ │ └── VisualizerDisplayData.cs │ ├── Properties │ │ ├── Annotations.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ └── packages.config ├── MSNEventSource │ ├── FirstRunMsn.Designer.cs │ ├── FirstRunMsn.cs │ ├── FirstRunMsn.resx │ ├── MSNEventSource.csproj │ ├── Msn.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── ModImageGenerator │ ├── API │ │ ├── ImageDeployer.cs │ │ └── ImageGenerator.cs │ ├── Images │ │ ├── DT.png │ │ ├── HD.png │ │ ├── HR.png │ │ ├── HT.png │ │ ├── K4.png │ │ ├── K5.png │ │ ├── K6.png │ │ ├── K7.png │ │ ├── K8.png │ │ ├── NC.png │ │ ├── NF.png │ │ ├── PF.png │ │ ├── RN.png │ │ ├── RX.png │ │ ├── RX2.png │ │ ├── SD.png │ │ ├── SO.png │ │ └── TP.png │ ├── ModImageGenerator.cs │ ├── ModImageGenerator.csproj │ ├── ModImageGeneratorSettings.Designer.cs │ ├── ModImageGeneratorSettings.cs │ ├── ModImageGeneratorSettings.resx │ ├── Properties │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ └── packages.config ├── ModsHandler │ ├── DifficultyCalculator.cs │ ├── ModParser.cs │ ├── ModParserSettings.Designer.cs │ ├── ModParserSettings.cs │ ├── ModParserSettings.resx │ ├── ModsHandler.cs │ ├── ModsHandler.csproj │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── ModsHandlerTests │ ├── DifficultyCalculatorTests.cs │ └── ModsHandlerTests.csproj ├── OBS │ ├── data │ │ └── obs-plugins │ │ │ └── obs-text-sc │ │ │ └── locale │ │ │ ├── ar-SA.ini │ │ │ ├── az-AZ.ini │ │ │ ├── ba-RU.ini │ │ │ ├── bg-BG.ini │ │ │ ├── bn-BD.ini │ │ │ ├── ca-ES.ini │ │ │ ├── cs-CZ.ini │ │ │ ├── da-DK.ini │ │ │ ├── de-DE.ini │ │ │ ├── el-GR.ini │ │ │ ├── en-GB.ini │ │ │ ├── en-US.ini │ │ │ ├── es-ES.ini │ │ │ ├── et-EE.ini │ │ │ ├── eu-ES.ini │ │ │ ├── fa-IR.ini │ │ │ ├── fi-FI.ini │ │ │ ├── fil-PH.ini │ │ │ ├── fr-FR.ini │ │ │ ├── gd-GB.ini │ │ │ ├── gl-ES.ini │ │ │ ├── he-IL.ini │ │ │ ├── hi-IN.ini │ │ │ ├── hr-HR.ini │ │ │ ├── hu-HU.ini │ │ │ ├── id-ID.ini │ │ │ ├── it-IT.ini │ │ │ ├── ja-JP.ini │ │ │ ├── ka-GE.ini │ │ │ ├── kab-KAB.ini │ │ │ ├── kmr-TR.ini │ │ │ ├── ko-KR.ini │ │ │ ├── lo-LA.ini │ │ │ ├── mn-MN.ini │ │ │ ├── ms-MY.ini │ │ │ ├── nb-NO.ini │ │ │ ├── nl-NL.ini │ │ │ ├── nn-NO.ini │ │ │ ├── pl-PL.ini │ │ │ ├── pt-BR.ini │ │ │ ├── pt-PT.ini │ │ │ ├── ro-RO.ini │ │ │ ├── ru-RU.ini │ │ │ ├── sk-SK.ini │ │ │ ├── sl-SI.ini │ │ │ ├── sr-CS.ini │ │ │ ├── sr-SP.ini │ │ │ ├── sv-SE.ini │ │ │ ├── ta-IN.ini │ │ │ ├── tl-PH.ini │ │ │ ├── tr-TR.ini │ │ │ ├── uk-UA.ini │ │ │ ├── vi-VN.ini │ │ │ ├── zh-CN.ini │ │ │ └── zh-TW.ini │ ├── obs-plugins │ │ ├── 32bit │ │ │ └── obs-text-sc.dll │ │ └── 64bit │ │ │ └── obs-text-sc.dll │ └── obs-text-sc.cpp ├── OsuMapLoader │ ├── BeatmapLoadFailedException.cs │ ├── LazerMapLoader.cs │ ├── LazerNullReferenceException.cs │ ├── OsuMapLoader.csproj │ ├── OsuMapLoaderPlugin.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── OsuMemoryEventSource │ ├── Extensions │ │ ├── PlayerScoreExtensions.cs │ │ └── ScPlayerScore.cs │ ├── FirstRunMemoryCalibration.Designer.cs │ ├── FirstRunMemoryCalibration.cs │ ├── FirstRunMemoryCalibration.resx │ ├── Helpers.cs │ ├── InterpolatedValue.cs │ ├── LivePerformanceCalculator.cs │ ├── LiveTokens │ │ ├── BaseLiveToken.cs │ │ ├── LazyLiveToken.cs │ │ └── LiveToken.cs │ ├── MemoryDataFinderSettings.Designer.cs │ ├── MemoryDataFinderSettings.cs │ ├── MemoryDataFinderSettings.resx │ ├── MemoryDataProcessor.cs │ ├── MemoryListener.cs │ ├── OsuMemoryEventSource.cs │ ├── OsuMemoryEventSource.csproj │ ├── OsuMemoryEventSourceBase.cs │ ├── PatternsDispatcher.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── PlaysReplacements │ ├── PlaysReplacements.cs │ ├── PlaysReplacements.csproj │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── ScGui │ ├── AboutForm.Designer.cs │ ├── AboutForm.cs │ ├── AboutForm.resx │ ├── AsyncBindingHelper.cs │ ├── Comfortaa.ttf │ ├── Helpers.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── MainWindowPlugin.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── Resources │ │ └── btn_donate_92x26.png │ ├── ScGui.csproj │ ├── ScGui.sln │ ├── ScGuiSettings.Designer.cs │ ├── ScGuiSettings.cs │ ├── ScGuiSettings.resx │ ├── SettingsForm.Designer.cs │ ├── SettingsForm.cs │ ├── SettingsForm.resx │ ├── WindowsTheme.cs │ ├── app.config │ ├── packages.config │ └── themes │ │ ├── dark.xaml │ │ └── light.xaml ├── TcpSocketDataSender │ ├── BinaryRetryBlocker.cs │ ├── BlockedTcpSocketManager.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── RetryBlocker.cs │ ├── TcpSocketDataGetter.cs │ ├── TcpSocketDataSender.csproj │ ├── TcpSocketManager.cs │ ├── TcpSocketSettings.Designer.cs │ ├── TcpSocketSettings.cs │ ├── TcpSocketSettings.resx │ └── packages.config ├── TestPlugin │ ├── GlobalUsings.cs │ ├── TestPlugin.cs │ └── TestPlugin.csproj ├── WebSocketDataSender │ ├── HttpServer.cs │ ├── ISCWebModule.cs │ ├── ImageExtensions.cs │ ├── LockingQueue.cs │ ├── MapStatsModule.cs │ ├── NetExtensions.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── WebOverlay │ │ ├── ColorHelpers.cs │ │ ├── ColorPickerWithPreview.Designer.cs │ │ ├── ColorPickerWithPreview.cs │ │ ├── ColorPickerWithPreview.resx │ │ ├── MathExtensions.cs │ │ ├── Models │ │ │ ├── IOverlayConfiguration.cs │ │ │ └── OverlayConfiguration.cs │ │ ├── WebOverlay.cs │ │ ├── WebOverlaySettings.Designer.cs │ │ ├── WebOverlaySettings.cs │ │ └── WebOverlaySettings.resx │ ├── WebSocketDataGetter.cs │ ├── WebSocketDataSender.csproj │ ├── WebSocketKeyValueEndpoint.cs │ ├── WebSocketOutputPatternsEndpoint.cs │ ├── WebSocketTokenEndpoint.cs │ └── packages.config ├── X32ProcessHelper │ ├── Directory.Packages.props │ ├── X32ProcessHelper.vcxproj │ ├── X32ProcessHelper.vcxproj.filters │ └── main.cpp └── osuPost │ ├── Properties │ └── AssemblyInfo.cs │ ├── osuPost.cs │ ├── osuPost.csproj │ ├── osuPost.sln │ ├── osuPostApi.cs │ ├── osuPostSettings.Designer.cs │ ├── osuPostSettings.cs │ ├── osuPostSettings.resx │ └── packages.config └── submodules └── Directory.Packages.props /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # CA1416: Validate platform compatibility 4 | dotnet_diagnostic.CA1416.severity = none 5 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: https://www.buymeacoffee.com/Piotrekol # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | paths: 8 | - "docs/**" 9 | - .github/workflows/docs.yml 10 | 11 | jobs: 12 | deploy: 13 | runs-on: ubuntu-20.04 14 | concurrency: 15 | group: ${{ github.workflow }}-${{ github.ref }} 16 | steps: 17 | - uses: actions/checkout@v2 18 | 19 | - name: Setup Node 20 | uses: actions/setup-node@v2 21 | with: 22 | node-version: '20' 23 | 24 | - name: Get yarn cache 25 | id: yarn-cache 26 | run: echo "::set-output name=dir::$(yarn cache dir)" 27 | 28 | - name: Cache dependencies 29 | uses: actions/cache@v2 30 | with: 31 | path: ${{ steps.yarn-cache.outputs.dir }} 32 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 33 | restore-keys: | 34 | ${{ runner.os }}-yarn- 35 | 36 | - run: cd docs && yarn install --frozen-lockfile 37 | - run: cd docs && yarn docs:build 38 | 39 | - name: Deploy 40 | uses: peaceiris/actions-gh-pages@v3 41 | if: ${{ github.ref == 'refs/heads/master' }} 42 | with: 43 | github_token: ${{ secrets.GITHUB_TOKEN }} 44 | publish_dir: ./docs/docs/.vuepress/dist 45 | commit_message: ${{ github.event.head_commit.message }} 46 | keep_files: true -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "submodules/osu"] 2 | path = submodules/osu 3 | url = https://github.com/Piotrekol/osu 4 | [submodule "webOverlay"] 5 | path = webOverlay 6 | url = https://github.com/Piotrekol/StreamCompanion-overlays -------------------------------------------------------------------------------- /Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2018 Piotr Partyka (Piotrekol) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /PpCalculator/PpCalculator.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0 4 | Library 5 | true 6 | 11.0 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /PpCalculatorTests/PpCalculatorTests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | enable 5 | enable 6 | 7 | false 8 | true 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | PreserveNewest 22 | 23 | 24 | -------------------------------------------------------------------------------- /PpCalculatorTypes/BreakPeriod.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace PpCalculatorTypes 4 | { 5 | public class BreakPeriod 6 | { 7 | [JsonProperty("startTime")] 8 | public double StartTime { get; } 9 | [JsonProperty("endTime")] 10 | public double EndTime { get; } 11 | [JsonProperty("hasEffect")] 12 | public bool HasEffect { get; } 13 | 14 | public BreakPeriod(double startTime, double endTime, bool hasEffect) 15 | { 16 | StartTime = startTime; 17 | EndTime = endTime; 18 | HasEffect = hasEffect; 19 | } 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/CatchDifficultyAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class CatchDifficultyAttributes : DifficultyAttributes 4 | { 5 | public int FruitCount; 6 | public int JuiceStreamCount; 7 | public int BananaShowerCount; 8 | 9 | public CatchDifficultyAttributes(double starRating, int maxCombo) : base(starRating, maxCombo) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/DifficultyAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class DifficultyAttributes 4 | { 5 | public double StarRating; 6 | public int MaxCombo; 7 | 8 | public DifficultyAttributes(double starRating, int maxCombo) 9 | { 10 | StarRating = starRating; 11 | MaxCombo = maxCombo; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/KiaiPoint.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace PpCalculatorTypes 4 | { 5 | public class KiaiPoint 6 | { 7 | public KiaiPoint(double startTime,double duration) 8 | { 9 | StartTime = startTime; 10 | Duration = duration; 11 | } 12 | 13 | [JsonProperty("startTime")] 14 | public double StartTime { get; } 15 | [JsonProperty("duration")] 16 | public double Duration { get; } 17 | } 18 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/ManiaDifficultyAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class ManiaDifficultyAttributes : DifficultyAttributes 4 | { 5 | public int NoteCount; 6 | public int HoldNoteCount; 7 | 8 | public ManiaDifficultyAttributes(double starRating, int maxCombo) : base(starRating, maxCombo) 9 | { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/OsuDifficultyAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class OsuDifficultyAttributes : DifficultyAttributes 4 | { 5 | public double AimStrain; 6 | public double SpeedStrain; 7 | public int HitCircleCount; 8 | public int SpinnerCount; 9 | public int SliderCount; 10 | 11 | public OsuDifficultyAttributes(double starRating, int maxCombo) : base(starRating, maxCombo) 12 | { 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/PerformanceAttributes/CatchPerformanceAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class CatchPerformanceAttributes : PerformanceAttributes 4 | { 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PpCalculatorTypes/PerformanceAttributes/ManiaPerformanceAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class ManiaPerformanceAttributes : PerformanceAttributes 4 | { 5 | public double Difficulty { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /PpCalculatorTypes/PerformanceAttributes/OsuPerformanceAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class OsuPerformanceAttributes : PerformanceAttributes 4 | { 5 | public double Aim { get; set; } 6 | 7 | public double Speed { get; set; } 8 | 9 | public double Accuracy { get; set; } 10 | 11 | public double Flashlight { get; set; } 12 | 13 | public double EffectiveMissCount { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /PpCalculatorTypes/PerformanceAttributes/PerformanceAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class PerformanceAttributes 4 | { 5 | public double Total { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /PpCalculatorTypes/PerformanceAttributes/TaikoPerformanceAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class TaikoPerformanceAttributes : PerformanceAttributes 4 | { 5 | public double Difficulty { get; set; } 6 | 7 | public double Accuracy { get; set; } 8 | 9 | public double EffectiveMissCount { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /PpCalculatorTypes/PpCalculatorTypes.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0 4 | 11.0 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /PpCalculatorTypes/TaikoDifficultyAttributes.cs: -------------------------------------------------------------------------------- 1 | namespace PpCalculatorTypes 2 | { 3 | public class TaikoDifficultyAttributes : DifficultyAttributes 4 | { 5 | public int HitCount; 6 | public int DrumRollCount; 7 | public int SwellCount; 8 | 9 | public TaikoDifficultyAttributes(double starRating, int maxCombo) : base(starRating, maxCombo) 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /PpCalculatorTypes/TimingPoint.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace PpCalculatorTypes 4 | { 5 | public class TimingPoint 6 | { 7 | public TimingPoint(double startTime, double bpm, double beatLength) 8 | { 9 | StartTime = startTime; 10 | BPM = bpm; 11 | BeatLength = beatLength; 12 | } 13 | 14 | [JsonProperty("startTime")] 15 | public double StartTime { get; } 16 | [JsonProperty("bpm")] 17 | public double BPM { get; } 18 | [JsonProperty("beatLength")] 19 | public double BeatLength { get; } 20 | } 21 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Consts.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace StreamCompanion.Common 3 | { 4 | public static class Consts 5 | { 6 | public const string SCPLUGIN_TYPENAME = "StreamCompanion"; 7 | public const string SCPLUGIN_AUTHOR = "StreamCompanion"; 8 | public const string SCPLUGIN_BASEURL = "https://github.com/Piotrekol/StreamCompanion/tree/master/plugins/"; 9 | public const string SCPLUGIN_NAME = "StreamCompanion"; 10 | public const string SC_BASE_REPO_URL = "https://github.com/Piotrekol/StreamCompanion"; 11 | 12 | public const string SCPLUGIN_GUIDE_INGAMEOVERLAYURL = "https://piotrekol.github.io/StreamCompanion/guide/in-game-overlays.html"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/CancellationTokenSourceExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Threading; 5 | 6 | namespace StreamCompanion.Common.Extensions 7 | { 8 | public static class CancellationTokenSourceExtensions 9 | { 10 | public static bool TryCancel(this CancellationTokenSource cancellationTokenSource) 11 | { 12 | try 13 | { 14 | cancellationTokenSource.Cancel(); 15 | return true; 16 | } 17 | catch (ObjectDisposedException) 18 | { 19 | return false; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/MapSearchResultsExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | using PpCalculatorTypes; 6 | using StreamCompanionTypes.DataTypes; 7 | 8 | namespace StreamCompanion.Common 9 | { 10 | public static class MapSearchResultsExtensions 11 | { 12 | public static async Task GetPpCalculator(this IMapSearchResult mapSearchResult, CancellationToken cancellationToken) 13 | { 14 | if (!(mapSearchResult.SharedObjects.FirstOrDefault(o => o is CancelableAsyncLazy) is CancelableAsyncLazy ppCalculatorLazy)) 15 | return null; 16 | 17 | var ppCalculator = await ppCalculatorLazy.GetValueAsync(cancellationToken); 18 | 19 | if (ppCalculator == null) 20 | return null; 21 | 22 | ppCalculator = (IPpCalculator)ppCalculator.Clone(); 23 | return ppCalculator; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/MathExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace StreamCompanion.Common 4 | { 5 | public static class MathExtensions 6 | { 7 | public static T Clamp(this T val, T min, T max) where T : IComparable 8 | { 9 | if (val.CompareTo(min) < 0) return min; 10 | else if (val.CompareTo(max) > 0) return max; 11 | else return val; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/PluginExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Concurrent; 3 | using System.Reflection; 4 | using StreamCompanionTypes.Attributes; 5 | using StreamCompanionTypes.Interfaces; 6 | 7 | namespace StreamCompanion.Common 8 | { 9 | public static class PluginExtensions 10 | { 11 | private static ConcurrentDictionary PluginMetadataCache = new(); 12 | public static IPluginMetadata GetPluginMetadata(this IPlugin plugin) 13 | => plugin.GetType().GetPluginMetadata(); 14 | 15 | public static IPluginMetadata GetPluginMetadata(this Type pluginType) 16 | => PluginMetadataCache.GetOrAdd(pluginType, type => type.GetCustomAttribute()); 17 | } 18 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/ProcessExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | 3 | namespace StreamCompanion.Common 4 | { 5 | public static class ProcessExt 6 | { 7 | public static Process OpenUrl(string url) 8 | { 9 | var psi = new ProcessStartInfo 10 | { 11 | FileName = url, 12 | UseShellExecute = true 13 | }; 14 | return Process.Start(psi); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/StringExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace StreamCompanion.Common 4 | { 5 | public static class StringExtensions 6 | { 7 | public static string RemoveWhitespace(this string str) 8 | { 9 | return string.Join("", str.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/TaskExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace StreamCompanion.Common 6 | { 7 | public static class TaskExtensions 8 | { 9 | public static Action GlobalExceptionHandler { get; set; } 10 | 11 | public static Task HandleExceptions(this Task task) 12 | { 13 | return task.ContinueWith((task, state) => 14 | { 15 | GlobalExceptionHandler(task.Exception); 16 | }, null, CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted,TaskScheduler.Default); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Extensions/TokensExtensions.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.DataTypes; 2 | using System; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | using StreamCompanionTypes.Enums; 6 | 7 | namespace StreamCompanion.Common 8 | { 9 | public static class TokensExtensions 10 | { 11 | public static Action> LiveTokenSetter { private get; set; } 12 | 13 | /// 14 | /// Adds token to existing live token update loop, which is synced with internal osu! memory data updates. 15 | /// 16 | /// Configured live token 17 | /// Value generator for the token 18 | public static async Task ConvertToLiveToken(this IToken token, Func valueUpdaterFunc, CancellationToken cancellationToken = default) 19 | { 20 | if (token == null) 21 | throw new ArgumentNullException("token"); 22 | 23 | if (valueUpdaterFunc == null) 24 | throw new ArgumentNullException("value"); 25 | 26 | if ((token.Type & TokenType.Live) == 0) 27 | throw new ArgumentException("Token has to be created with TokenType.Live"); 28 | 29 | while (LiveTokenSetter == null) 30 | { 31 | await Task.Delay(50, cancellationToken); 32 | } 33 | 34 | LiveTokenSetter(token, valueUpdaterFunc); 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Helpers/Retry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace StreamCompanion.Common.Helpers 4 | { 5 | public static class Retry 6 | { 7 | //We don't need Polly here..yet 8 | public static T RetryMe(Func func, Func isValid, int maxRetries) 9 | { 10 | for (int i = 0; i < maxRetries; i++) 11 | { 12 | var result = func(); 13 | 14 | if (isValid(result)) 15 | return result; 16 | } 17 | 18 | return default; 19 | } 20 | 21 | public static TV RetryMe(Func func, Func isValid, int maxRetries) 22 | { 23 | for (int i = 0; i < maxRetries; i++) 24 | { 25 | var result = func(); 26 | 27 | var validResult = isValid(result); 28 | if (validResult.Item1) 29 | return validResult.Item2; 30 | } 31 | 32 | return default; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /StreamCompanion.Common/Helpers/Tokens/BulkTokenUpdateContext.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace StreamCompanion.Common.Helpers.Tokens 4 | { 5 | public class BulkTokenUpdateContext : IDisposable 6 | { 7 | private readonly BulkTokenUpdateState _bulkTokenUpdateState; 8 | 9 | internal BulkTokenUpdateContext(BulkTokenUpdateState bulkTokenUpdateState) 10 | { 11 | _bulkTokenUpdateState = bulkTokenUpdateState; 12 | bulkTokenUpdateState.InProgress = true; 13 | } 14 | 15 | public void Dispose() 16 | { 17 | _bulkTokenUpdateState.InProgress = false; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Helpers/Tokens/BulkTokenUpdateState.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | 3 | namespace StreamCompanion.Common.Helpers.Tokens 4 | { 5 | public class BulkTokenUpdateState 6 | { 7 | internal BulkTokenUpdateState() { } 8 | public readonly ManualResetEventSlim UpdateFinished = new(); 9 | private bool _inProgress = false; 10 | public bool InProgress 11 | { 12 | get => _inProgress; 13 | internal set 14 | { 15 | _inProgress = value; 16 | if (value) 17 | UpdateFinished.Reset(); 18 | else 19 | UpdateFinished.Set(); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Helpers/Tokens/BulkTokenUpdateType.cs: -------------------------------------------------------------------------------- 1 | namespace StreamCompanion.Common.Helpers.Tokens 2 | { 3 | public enum BulkTokenUpdateType 4 | { 5 | MainPipeline, 6 | LiveTokens 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Helpers/Tokens/TokensBulkUpdate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | 5 | namespace StreamCompanion.Common.Helpers.Tokens 6 | { 7 | public static class TokensBulkUpdate 8 | { 9 | private static readonly Dictionary _BulkUpdateStates; 10 | public static readonly ReadOnlyDictionary States; 11 | 12 | static TokensBulkUpdate() 13 | { 14 | _BulkUpdateStates = new Dictionary(); 15 | foreach (BulkTokenUpdateType type in Enum.GetValues(typeof(BulkTokenUpdateType))) 16 | _BulkUpdateStates[type] = new(); 17 | 18 | States = new(_BulkUpdateStates); 19 | } 20 | 21 | public static BulkTokenUpdateContext StartBulkUpdate(BulkTokenUpdateType bulkTokenUpdateType) 22 | { 23 | if (_BulkUpdateStates[bulkTokenUpdateType].InProgress) 24 | throw new InvalidOperationException("Token bulk update is already in progress."); 25 | 26 | return new BulkTokenUpdateContext(_BulkUpdateStates[bulkTokenUpdateType]); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Models/WebOverlay.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.IO; 3 | 4 | namespace StreamCompanion.Common.Models 5 | { 6 | public class WebOverlay 7 | { 8 | public string RelativePath { get; set; } 9 | public string FullPath { get; set; } 10 | public string URL { get; set; } 11 | private WebOverlayRecommendedSettings _recommendedSettings; 12 | private bool _recommendedSettingsChecked = false; 13 | public WebOverlayRecommendedSettings RecommendedSettings 14 | { 15 | get 16 | { 17 | if (_recommendedSettingsChecked) 18 | return _recommendedSettings; 19 | 20 | _recommendedSettingsChecked = true; 21 | var settingsPath = Path.Combine(FullPath, "settings.json"); 22 | if (File.Exists(settingsPath)) 23 | _recommendedSettings = JsonConvert.DeserializeObject(File.ReadAllText(settingsPath)); 24 | 25 | return _recommendedSettings; 26 | } 27 | } 28 | 29 | public override string ToString() 30 | { 31 | return RelativePath; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /StreamCompanion.Common/Models/WebOverlayRecommendedSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace StreamCompanion.Common.Models 4 | { 5 | public class WebOverlayRecommendedSettings 6 | { 7 | public int Width { get; set; } 8 | public int Height { get; set; } 9 | 10 | public string ToUserReadableString() 11 | { 12 | var nl = Environment.NewLine; 13 | return $"Width: {Width}{nl}Height: {Height}"; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /StreamCompanion.Common/StreamCompanion.Common.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0 4 | Library 5 | false 6 | 11.0 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Updater/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Updater/Updater.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | WinExe 5 | StreamCompanion Updater 6 | false 7 | false 8 | false 9 | 10 | 11 | ..\build\Debug\ 12 | 13 | 14 | ..\build\Release\ 15 | 16 | 17 | compiled.ico 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Updater/compiled.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/Updater/compiled.ico -------------------------------------------------------------------------------- /VersionControler/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /VersionControler/VersionControler.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0 4 | Exe 5 | false 6 | false 7 | 0 8 | 9 | -------------------------------------------------------------------------------- /build/msbuild.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | for /f "usebackq tokens=*" %%i in (`%~dp0vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe`) do ( 5 | "%%i" %* 6 | exit /b !errorlevel! 7 | ) -------------------------------------------------------------------------------- /build/nuget.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/build/nuget.exe -------------------------------------------------------------------------------- /build/vswhere.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/build/vswhere.exe -------------------------------------------------------------------------------- /buildRelease-CI.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM initial cleanup 3 | REM rm ./build/Release/* -rf 4 | rm ./build/Output/* -rf 5 | 6 | REM build solution 7 | REM MSBuild osu!StreamCompanion.sln /p:Configuration=Release /p:Platform=x86 8 | 9 | cd ./build 10 | 11 | mkdir Output 12 | 13 | REM copy files to new folder 14 | cp -r ./Release/* ./Output/ 15 | REM copy web overlay 16 | robocopy ../webOverlay ./Output/Files/Web /E 17 | 18 | REM remove debug symbols 19 | rm ./Output/*.pdb 20 | rm ./Output/Plugins/*.pdb 21 | 22 | REM remove misc files 23 | rm ./Output/*.xml 24 | rm ./Output/StreamCompanion Updater.exe.config 25 | rm ./Output/Plugins/StreamCompanionTypes.dll 26 | rm ./Output/Plugins/CollectionManager.dll 27 | rm ./Output/Plugins/System.* 28 | 29 | cd .. 30 | REM clean installer folder 31 | rm ./innoSetup/Output/* 32 | REM create installer (Inno Setup 6) 33 | "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" ".\innoSetup\setupScript.iss" 34 | 7z a .\build\ingameOverlay.zip .\build\Release_unsafe\* 35 | "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" ".\innoSetup\osuOverlayScript.iss" 36 | "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" ".\innoSetup\browserOverlayScript.iss" 37 | 38 | type nul > .\build\Output\.portableMode 39 | 7z a .\build\StreamCompanion-portable.zip .\build\Output\* 40 | 7z a .\build\StreamCompanion-portable-browserOverlay.zip .\build\Release_browserOverlay\* 41 | 7z a .\build\StreamCompanion-portable-textOverlay.zip .\build\Release_unsafe\* 42 | -------------------------------------------------------------------------------- /buildRelease.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM initial cleanup 3 | rd .\build\Release /s /q 4 | rd .\build\Output /s /q 5 | mkdir .\build\Release 6 | mkdir .\build\Output 7 | 8 | build\nuget.exe restore 9 | REM build solution 10 | build\msbuild.bat . /p:Configuration=Release /p:Platform="Any CPU" 11 | 12 | REM copy web overlays 13 | robocopy .\webOverlay .\build\Release\Files\Web /E 14 | 15 | pause -------------------------------------------------------------------------------- /docs/docs/.vuepress/configs/index.ts: -------------------------------------------------------------------------------- 1 | export * as sidebar from './sidebar' -------------------------------------------------------------------------------- /docs/docs/.vuepress/configs/sidebar.ts: -------------------------------------------------------------------------------- 1 | import type { SidebarConfig } from '@vuepress/theme-default'; 2 | 3 | export const en: SidebarConfig = { 4 | '/guide/': [ 5 | { 6 | text: 'Guide', 7 | children: [ 8 | '/guide/README.md', 9 | '/guide/getting-started.md', 10 | '/guide/configuration.md', 11 | '/guide/in-game-overlays.md', 12 | '/guide/gamma.md', 13 | '/guide/tournament-mode.md', 14 | '/development/' 15 | ], 16 | }, 17 | ], 18 | '/development/': [ 19 | { 20 | text: 'Development', 21 | children: [ 22 | '/development/gettingSource.md', 23 | { 24 | text: 'Documentation', 25 | children: [ 26 | '/development/docs/', 27 | ], 28 | }, 29 | { 30 | text: 'StreamCompanion', 31 | children: [ 32 | '/development/SC/', 33 | '/development/SC/api.md', 34 | '/development/SC/creating-a-plugin.md', 35 | '/development/SC/event-flow.md', 36 | '/development/SC/types-rundown.md', 37 | '/development/SC/linuxSupport.md', 38 | ], 39 | }, 40 | ], 41 | }, 42 | ] 43 | }; 44 | -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #ffffff 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/favicon.ico -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/guide/netRuntimeDownload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/guide/netRuntimeDownload.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/favicon-16x16.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/favicon-32x32.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/mstile-144x144.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/mstile-150x150.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/mstile-310x150.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/mstile-310x310.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/images/icons/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/images/icons/mstile-70x70.png -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/manifest.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "StreamCompanion", 3 | "short_name": "StreamCompanion", 4 | "theme_color": "#3eaf7c", 5 | "background_color": "#fff", 6 | "display": "standalone", 7 | "icons": [ 8 | { 9 | "src": "/images/icons/android-chrome-192x192.png", 10 | "sizes": "192x192", 11 | "type": "image/png" 12 | }, 13 | { 14 | "src": "/images/icons/android-chrome-512x512.png", 15 | "sizes": "512x512", 16 | "type": "image/png" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /docs/docs/.vuepress/public/misc/PluginProject.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/.vuepress/public/misc/PluginProject.zip -------------------------------------------------------------------------------- /docs/docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | home: true 3 | title: Home 4 | heroImage: /images/logo.svg 5 | actions: 6 | - text: Get Started 7 | link: /guide/getting-started.html 8 | type: primary 9 | - text: Introduction 10 | link: /guide/ 11 | type: secondary 12 | - text: Development 13 | link: /development/ 14 | type: secondary 15 | features: 16 | - title: Web overlays 17 | details: Comes with minimal web server to serve your overlays! 18 | - title: In-game overlay 19 | details: Display any content inside osu! itself, be it simple text or full fledged web overlay. 20 | - title: Gamma 21 | details: Built in screen-gamma which adjusts with current map AR. 22 | - title: Plugins 23 | details: C# Plugin API, allowing plugins to provide lots of custom features. 24 | - title: HTTP/WS API 25 | details: Loosely integrate external applications using http or WebSocket endpoints. 26 | footer: MIT Licensed | Copyright © 2018-present Piotrekol 27 | --- 28 | 29 | ::: warning 30 | This guide is currently work in progress and may be missing entire pages. 31 | Check back later or contribute on github! 32 | ::: 33 | -------------------------------------------------------------------------------- /docs/docs/development/README.md: -------------------------------------------------------------------------------- 1 | # Development 2 | 3 | * [Getting full source code](./gettingSource.md) 4 | * [StreamCompanion developer docs](./SC/) 5 | * [building and contributing to this documentation](./docs/) -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/minimalWS.js: -------------------------------------------------------------------------------- 1 | let ws = new WebSocket('ws://localhost:20727/tokens'); 2 | ws.onopen = () => { 3 | //send token names with should be watched for value changes 4 | ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode'])); 5 | }; 6 | ws.onmessage = (wsEvent) => { 7 | //do things with data here 8 | console.log(wsEvent.data); 9 | }; 10 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/minimalWSpt2.js: -------------------------------------------------------------------------------- 1 | let ws = new WebSocket('ws://localhost:20727/tokens'); 2 | ws.onopen = () => { 3 | ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode'])); 4 | }; 5 | let cache = {}; 6 | ws.onmessage = (wsEvent) => { 7 | Object.assign(cache, JSON.parse(wsEvent.data)); 8 | //cache will always contain up to date token values 9 | console.log(cache); 10 | }; 11 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/minimalWSpt3.js: -------------------------------------------------------------------------------- 1 | let ws = new WebSocket('ws://localhost:20727/tokens?bulkUpdates=MainPipeline,LiveTokens'); 2 | ws.onopen = () => { 3 | ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode'])); 4 | }; 5 | let cache = {}; 6 | ws.onmessage = (wsEvent) => { 7 | Object.assign(cache, JSON.parse(wsEvent.data)); 8 | //cache will always contain up to date token values 9 | console.log(cache); 10 | }; 11 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/minimalWSpt4.js: -------------------------------------------------------------------------------- 1 | let ws = new WebSocket('ws://localhost:20727/tokens?bulkUpdates=MainPipeline,LiveTokens&updatesPerSecond=15'); 2 | ws.onopen = () => { 3 | ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode'])); 4 | }; 5 | let cache = {}; 6 | ws.onmessage = (wsEvent) => { 7 | Object.assign(cache, JSON.parse(wsEvent.data)); 8 | //cache will always contain up to date token values 9 | console.log(cache); 10 | }; 11 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/1.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.Interfaces; 2 | 3 | namespace newTestPlugin 4 | { 5 | public class MyPlugin : IPlugin 6 | { 7 | public string Description => "my plugin description"; 8 | public string Name => "my plugin name"; 9 | public string Author => "my name"; 10 | public string Url => "Plugin homepage url(github/site)"; 11 | } 12 | } -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/1.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netstandard2.1 4 | enable 5 | false 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/2.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.Interfaces; 2 | using StreamCompanionTypes.Enums; 3 | using StreamCompanionTypes.Interfaces.Services; 4 | 5 | namespace newTestPlugin 6 | { 7 | public class MyPlugin : IPlugin 8 | { 9 | public string Description => "my plugin description"; 10 | public string Name => "my plugin name"; 11 | public string Author => "my name"; 12 | public string Url => "Plugin homepage url(github/site)"; 13 | public MyPlugin(ILogger logger) 14 | { 15 | logger.Log($"Message from ${Name}!", LogLevel.Trace); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/2.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netstandard2.1 4 | enable 5 | false 6 | ..\SCInstall\Plugins\ 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/4.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.Interfaces; 2 | using StreamCompanionTypes.Enums; 3 | using StreamCompanionTypes.Interfaces.Services; 4 | using StreamCompanionTypes.Interfaces.Sources; 5 | 6 | namespace newTestPlugin 7 | { 8 | public class MyPlugin : IPlugin, ISettingsSource 9 | { 10 | public string Description => "my plugin description"; 11 | public string Name => "my plugin name"; 12 | public string Author => "my name"; 13 | public string Url => "Plugin homepage url(github/site)"; 14 | public string SettingGroup => "myGroupName"; 15 | private SettingsUserControl SettingsUserControl; 16 | public MyPlugin(ILogger logger) 17 | { 18 | logger.Log($"Message from {Name}!", LogLevel.Trace); 19 | } 20 | 21 | public void Free() 22 | { 23 | SettingsUserControl?.Dispose(); 24 | } 25 | 26 | public object GetUiSettings() 27 | { 28 | if(SettingsUserControl == null || SettingsUserControl.IsDisposed) 29 | SettingsUserControl = new SettingsUserControl(); 30 | 31 | return SettingsUserControl; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/4.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net5.0-windows 4 | enable 5 | false 6 | true 7 | ..\SCInstall\Plugins\ 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/docs/development/SC/apiExamples/plugin/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "newTestPlugin": { 4 | "commandName": "Executable", 5 | "executablePath": "..\\osu!StreamCompanion.exe" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /docs/docs/development/SC/event-flow.md: -------------------------------------------------------------------------------- 1 | # Event flow 2 | 3 | Graph below demonstrates how events are created and processed in StreamCompanion 4 | 5 | ![StreamCompanion event flow](./images/EventFlow.png) 6 | -------------------------------------------------------------------------------- /docs/docs/development/SC/images/EventFlow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/development/SC/images/EventFlow.png -------------------------------------------------------------------------------- /docs/docs/development/SC/images/VSCreateItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/docs/docs/development/SC/images/VSCreateItem.png -------------------------------------------------------------------------------- /docs/docs/development/SC/linuxSupport.md: -------------------------------------------------------------------------------- 1 | # State of Linux support 2 | 3 | Starting from version v210206.19, StreamCompanion started using .NET 5.0, which made it impossible to run it under any linux system. 4 | 5 | There are plans to change this, but no ETA. Support roadmap is as follows: 6 | 7 | * ✅ Fixes to allow running StreamCompanion as a x64/AnyCpu application. 8 | * ❌ Replacing any Windows-only components in base application and its plugins, mainly winForms and WPF. 9 | 10 | At that point it should be possible to run StreamCompanion as a native .NET5(6?) application under Linux. 11 | -------------------------------------------------------------------------------- /docs/docs/development/docs/README.md: -------------------------------------------------------------------------------- 1 | # Building and previewing docs 2 | 3 | ## Prerequisites 4 | 5 | * [Node.js v12+](https://nodejs.org/) 6 | 7 | ## Installation & running 8 | 9 | * **Step 1**: navigate to main docs directory in cmd / powershell 10 | 11 | * **Step 2**: fetch modules 12 | 13 | 14 | 15 | 16 | ```bash 17 | yarn 18 | ``` 19 | 20 | 21 | 22 | 23 | 24 | ```bash 25 | npm install 26 | ``` 27 | 28 | 29 | 30 | 31 | * **Step 3**: run docs in development mode 32 | 33 | 34 | 35 | 36 | ```bash 37 | yarn docs:dev 38 | ``` 39 | 40 | 41 | 42 | 43 | 44 | ```bash 45 | npm run docs:dev 46 | ``` 47 | 48 | 49 | 50 | 51 | * **Step 3**: While above command is running you can navigate to [http://localhost:8080/](http://localhost:8080/) (port may be different) to see local docs page. 52 | 53 | Any edits to local markdown files inside `/docs/docs` directory will be reflected on page within few seconds. 54 | Any configuration changes require docs restart to fully take effect. 55 | -------------------------------------------------------------------------------- /docs/docs/development/gettingSource.md: -------------------------------------------------------------------------------- 1 | # Getting full source code 2 | 3 | ## Why 4 | 5 | StreamCompanion repository makes use of git submodules which need to be fetched in order to be able to compile StreamCompanion itself. 6 | If you do not intend to compile StreamCompanion you can get source by simply downloading repository zip from github, otherwise continue. 7 | 8 | ## Prerequisites 9 | 10 | * [Git (any recent version)](https://git-scm.com/downloads) 11 | 12 | ## Downloading source 13 | 14 | * **Step 1:** Navigate to directory where you want StreamCompanion source to be downloaded in your shell (cmd / powershell) 15 | 16 | * **Step 2:** Execute this command in shell: 17 | 18 | ```bash 19 | git clone https://github.com/Piotrekol/StreamCompanion --recurse-submodules 20 | ``` 21 | 22 | * Wait for the command to end and you should see new `StreamCompanion` folder created along with all required files inside! 23 | -------------------------------------------------------------------------------- /docs/docs/guide/README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | StreamCompanion in its core is a live osu! data extractor. It processes all data it can get to a format where it can be utilized in a user friendly way. 4 | 5 | ## Current features 6 | 7 | * Reading of live osu! data from memory 8 | * Parsing of local osu difficulty files to get any data you could ever wish for 9 | * Live and static performance counters 10 | * Windows(keyboard/mouse) and memory(replays) based click counter 11 | * Minimal web server with osu!-specific api, for serving overlays 12 | * Several editable, ready-to-use web overlays 13 | * 2 in-game overlay plugins 14 | * Automatic screen gamma adjustment 15 | * Tournament client support 16 | -------------------------------------------------------------------------------- /docs/docs/guide/codeExample/tournamentTokens.js: -------------------------------------------------------------------------------- 1 | //Using SC template web overlay as a base: 2 | const getTourneyToken = (clientId, tokenName, decimalPlaces) => getToken(`client_${clientId}_${tokenName}`, decimalPlaces); 3 | -------------------------------------------------------------------------------- /docs/docs/guide/gamma.md: -------------------------------------------------------------------------------- 1 | # Gamma 2 | 3 | -------------------------------------------------------------------------------- /docs/docs/guide/getting-started.md: -------------------------------------------------------------------------------- 1 | # Getting started 2 | 3 | ## Prerequisites 4 | 5 | * [.NET 8.0.x __x64__ Desktop Runtime](https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x64.exe) 6 | 7 | ## Installation 8 | 9 | StreamCompanion can be either installed or used as a portable application. Currently auto-updates are supported only for installed versions, while portable one will only notify you about new updates. 10 | 11 | __Installer__: Grab latest setup exe from [github releases page][dlLink], and proceed with installation. Windows might complain about setup being unsigned - you can either bypass this window or compile it yourself using [these steps][compileSC]. 12 | __Portable__: Grab latest portable zip package from [github releases page][dlLink] and unpack it in any non-system folder where you have read&write permissions. 13 | 14 | ::: warning 15 | Do not run either osu! or StreamCompanion as administrator. Doing so will result in unexpected behavior (like SC not detecting any songs or ingame overlays not displaying anything) 16 | ::: 17 | 18 | [compileSC]: 19 | [dlLink]: 20 | -------------------------------------------------------------------------------- /docs/docs/guide/tournament-mode.md: -------------------------------------------------------------------------------- 1 | # Tournament mode 2 | 3 | While in tourney mode, StreamCompanion supports reading and processing data from multiple tournament clients. 4 | 5 | ## Enabling tournament mode 6 | 7 | * **Step 1:** In `settings.ini` located in StreamCompanion install directory set `TournamentMode` to true 8 | * **Step 2:** Start and stop StreamCompanion for it to create 2 additional settings in `settings.ini`: 9 | * `TournamentClientCount` - number of active player clients 10 | * `TournamentDataClientId` - 0-indexed id of the client used as source of truth for map events 11 | 12 | ## Usage 13 | 14 | Usage of StreamCompanion while in tourney mode doesn't differ from normal mode, with one exception being live token names. 15 | Because we are now using multiple clients, we need separate tokens to preserve all this data. 16 | **Live** tokens name format while in tourney mode are as follows: `client__`. 17 | for example: `client_0_combo`, `client_2_ppIfMapEndsNow`, `client_3_unstableRate` 18 | 19 | In tournament specific web overlays this can be easily handled by using helper method for retrieving tokens: 20 | 21 | @[code js](./codeExample/tournamentTokens.js) 22 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "StreamCompanion_docs", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "docs:dev": "vuepress dev docs", 8 | "docs:build": "vuepress build docs" 9 | }, 10 | "devDependencies": { 11 | "vuepress": "2.0.0-beta.67" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/images/logo.png -------------------------------------------------------------------------------- /images/webOverlay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/images/webOverlay.jpg -------------------------------------------------------------------------------- /innoSetup/license.txt: -------------------------------------------------------------------------------- 1 | Copyright 2018 Piotr Partyka (Piotrekol) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /msbuild.rsp: -------------------------------------------------------------------------------- 1 | #Appveyor msbuild response file 2 | 3 | /p:DefineConstants="WITHSENTRY" -------------------------------------------------------------------------------- /nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /osu!StreamCompanion.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True 3 | True -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Core/Loggers/EmptyLogger.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.Enums; 2 | using StreamCompanionTypes.Interfaces.Services; 3 | 4 | namespace osu_StreamCompanion.Code.Core.Loggers 5 | { 6 | class EmptyLogger : ILogger 7 | { 8 | public void Log(object logMessage, LogLevel loglvevel, params string[] vals) 9 | { 10 | 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Core/Loggers/PluginLogger.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.Enums; 2 | using StreamCompanionTypes.Interfaces.Services; 3 | 4 | namespace osu_StreamCompanion.Code.Core.Loggers 5 | { 6 | internal class PluginLogger : IContextAwareLogger 7 | { 8 | private readonly MainLogger mainLogger; 9 | private readonly string pluginName; 10 | 11 | public PluginLogger(MainLogger mainLogger,string pluginName) 12 | { 13 | this.mainLogger = mainLogger; 14 | this.pluginName = pluginName; 15 | } 16 | 17 | public void Log(object logMessage, LogLevel loglvevel, params string[] vals) 18 | => mainLogger.Log(logMessage, loglvevel, pluginName, vals); 19 | 20 | public void SetContextData(string key, string value) 21 | => mainLogger.SetContextData(key, value); 22 | } 23 | } -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Core/Plugins/LocalPluginComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace osu_StreamCompanion.Code.Core.Plugins 4 | { 5 | public class LocalPluginComparer : IComparer 6 | { 7 | public int Compare(LocalPluginEntry x, LocalPluginEntry y) 8 | { 9 | if (x.EnabledForcefully && !y.EnabledForcefully) 10 | return 1; 11 | 12 | if (!x.EnabledForcefully && y.EnabledForcefully) 13 | return -1; 14 | 15 | return x.Name.CompareTo(y.Name); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Core/Plugins/PluginManagerConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace osu_StreamCompanion.Code.Core.Plugins 5 | { 6 | public class PluginManagerConfiguration 7 | { 8 | public BindingList Plugins { get; set; } = new(); 9 | public string IndexFileUrl { get; set; } = "TODO"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Core/Savers/MainSaver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StreamCompanionTypes.Enums; 3 | using StreamCompanionTypes.Interfaces.Services; 4 | 5 | namespace osu_StreamCompanion.Code.Core.Savers 6 | { 7 | public class MainSaver : ISaver 8 | { 9 | private ISaver _saver; 10 | private ILogger _logger; 11 | 12 | public string SaveDirectory => _saver.SaveDirectory; 13 | 14 | public MainSaver(ILogger logger, TextSaver saver) 15 | { 16 | _logger = logger; 17 | _saver = saver; 18 | } 19 | public void ChangeSaver(ISaver saver) 20 | { 21 | if (_saver is IDisposable) 22 | ((IDisposable)_saver).Dispose(); 23 | _saver = null; 24 | _saver = saver; 25 | } 26 | 27 | public void Save(string directory, string content) 28 | { 29 | try 30 | { 31 | _saver.Save(directory, content); 32 | } 33 | catch (System.IO.IOException e) 34 | { 35 | _logger.Log("EXCEPTION: {0}" + Environment.NewLine + "{1}", LogLevel.Information, e.Message, e.StackTrace); 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Helpers/Exceptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace osu_StreamCompanion.Code.Helpers 4 | { 5 | public class NonLoggableException : Exception 6 | { 7 | public Exception Exception { get; } 8 | public string CustomMessage { get; set; } 9 | public NonLoggableException(Exception ex, string message) 10 | { 11 | this.Exception = ex; 12 | this.CustomMessage = message; 13 | } 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Helpers/ListExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace osu_StreamCompanion.Code.Helpers 4 | { 5 | public static class ListExtensions 6 | { 7 | 8 | public static bool StartsAnywhereWith(this List list,string val) 9 | { 10 | foreach (var variable in list) 11 | { 12 | if (variable.StartsWith(val)) 13 | return true; 14 | } 15 | return false; 16 | } 17 | public static int AnyStartsWith(this IReadOnlyList list, string val) 18 | { 19 | for (int i = 0; i < list.Count; i++) 20 | { 21 | if (list[i].StartsWith(val)) 22 | return i; 23 | } 24 | return -1; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Helpers/StringExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace osu_StreamCompanion.Code.Helpers 5 | { 6 | public static class StringExtensions 7 | { 8 | public static bool TryFormat(this string str, out string result, params string[] args) 9 | { 10 | try 11 | { 12 | result = string.Format(str, args); 13 | return true; 14 | } 15 | catch (Exception) 16 | { 17 | result = null; 18 | return false; 19 | } 20 | } 21 | 22 | public static string RemoveInvalidFileNameChars(this string fileName) 23 | { 24 | foreach (var c in Path.GetInvalidFileNameChars()) 25 | { 26 | if (fileName.Contains(c)) 27 | fileName = fileName.Replace(c.ToString(), ""); 28 | } 29 | 30 | return fileName; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Misc/FileChecker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Windows.Forms; 4 | 5 | namespace osu_StreamCompanion.Code.Misc 6 | { 7 | class FileChecker 8 | { 9 | private string[] _requiredFiles = new string[0]; 10 | private string caption = "StreamCompanion Error"; 11 | private string errorMessage = 12 | "It seems that you are missing one or more of the files that are required to run this software." + Environment.NewLine + 13 | "Place all downloaded files in a single folder then try running it again." + Environment.NewLine + 14 | "Couldn't find: \"{0}\"" + Environment.NewLine + 15 | "StreamCompanion will now exit."; 16 | 17 | public FileChecker() 18 | { 19 | foreach (var requiredFile in _requiredFiles) 20 | { 21 | if (!File.Exists(requiredFile)) 22 | { 23 | MessageBox.Show(string.Format(errorMessage, requiredFile), caption, MessageBoxButtons.OK, 24 | MessageBoxIcon.Error); 25 | Program.SafeQuit(); 26 | } 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Misc/IModule.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.Interfaces.Services; 2 | 3 | namespace osu_StreamCompanion.Code.Misc 4 | { 5 | internal interface IModule 6 | { 7 | bool Started { get; set; } 8 | void Start(ILogger logger); 9 | } 10 | } -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Misc/ImpatientWebClient.cs: -------------------------------------------------------------------------------- 1 | #pragma warning disable SYSLIB0014 // WebClient is deprecated, use HttpClient instead 2 | using System; 3 | using System.Net; 4 | 5 | namespace osu_StreamCompanion.Code.Misc 6 | { 7 | public class ImpatientWebClient : WebClient 8 | { 9 | private readonly int _timeout; 10 | /// 11 | /// 12 | /// 13 | /// After how many miliseconds stalled request should raise exception 14 | public ImpatientWebClient(int timeout = 5000) : base() 15 | { 16 | _timeout = timeout; 17 | } 18 | protected override WebRequest GetWebRequest(Uri uri) 19 | { 20 | WebRequest w = base.GetWebRequest(uri); 21 | w.Timeout = _timeout;//Default time is 100s ... 22 | return w; 23 | } 24 | } 25 | } 26 | #pragma warning restore SYSLIB0014 // WebClient is deprecated, use HttpClient instead -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Misc/NativeMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace osu_StreamCompanion.Code.Misc 5 | { 6 | internal static class NativeMethods 7 | { 8 | [DllImport("kernel32")] 9 | public static extern bool AllocConsole(); 10 | 11 | [DllImport("Kernel32")] 12 | public static extern void FreeConsole(); 13 | 14 | [DllImport("user32.dll")] 15 | public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam); 16 | 17 | public const int WM_SETREDRAW = 11; 18 | } 19 | } -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Modules/Donation/Donation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using osu_StreamCompanion.Code.Misc; 3 | using StreamCompanionTypes.Interfaces.Services; 4 | using StreamCompanionTypes.Interfaces.Sources; 5 | 6 | namespace osu_StreamCompanion.Code.Modules.Donation 7 | { 8 | class Donation : IModule, ISettingsSource, IDisposable 9 | { 10 | public bool Started { get; set; } 11 | 12 | public Donation(ILogger logger) 13 | { 14 | Start(logger); 15 | } 16 | 17 | public void Start(ILogger logger) 18 | { 19 | Started = true; 20 | } 21 | 22 | public string SettingGroup { get; } = "General"; 23 | 24 | public void Free() 25 | { 26 | donationSettings.Dispose(); 27 | } 28 | 29 | private DonationSettings donationSettings; 30 | public object GetUiSettings() 31 | { 32 | if (donationSettings == null || donationSettings.IsDisposed) 33 | { 34 | donationSettings = new DonationSettings(); 35 | } 36 | return donationSettings; 37 | } 38 | 39 | public void Dispose() 40 | { 41 | donationSettings?.Dispose(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Modules/Donation/DonationSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Forms; 4 | using StreamCompanion.Common; 5 | 6 | namespace osu_StreamCompanion.Code.Modules.Donation 7 | { 8 | public partial class DonationSettings : UserControl 9 | { 10 | public DonationSettings() 11 | { 12 | InitializeComponent(); 13 | 14 | } 15 | 16 | private void pictureBox1_Click(object sender, EventArgs e) 17 | { 18 | ProcessExt.OpenUrl(@"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=CX2ZC3JKVAK74"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Modules/FileSaveLocation/FileSaveLocationSettings.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.IO; 3 | using System.Windows.Forms; 4 | using StreamCompanionTypes.Interfaces.Services; 5 | 6 | namespace osu_StreamCompanion.Code.Modules.FileSaveLocation 7 | { 8 | public partial class FileSaveLocationSettings : UserControl 9 | { 10 | private ISaver _saver; 11 | 12 | public FileSaveLocationSettings() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | private void button_OpenFilesFolder_Click(object sender, System.EventArgs e) 18 | { 19 | string dir = Path.Combine(_saver.SaveDirectory); 20 | Process.Start("explorer.exe", dir); 21 | } 22 | 23 | public void SetSaveHandle(ISaver saver) 24 | { 25 | _saver = saver; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Modules/MapDataFinders/NoData/NoDataFinder.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | using osu_StreamCompanion.Code.Misc; 4 | using StreamCompanionTypes.DataTypes; 5 | using StreamCompanionTypes.Enums; 6 | using StreamCompanionTypes.Interfaces; 7 | using StreamCompanionTypes.Interfaces.Services; 8 | 9 | namespace osu_StreamCompanion.Code.Modules.MapDataFinders.NoData 10 | { 11 | public class NoDataFinder : IModule, IMapDataFinder 12 | { 13 | private ILogger _logger; 14 | public bool Started { get; set; } 15 | public int Priority { get; set; } = -10; 16 | public NoDataFinder(ILogger logger) 17 | { 18 | Start(logger); 19 | } 20 | 21 | public void Start(ILogger logger) 22 | { 23 | Started = true; 24 | _logger = logger; 25 | } 26 | 27 | public Task FindBeatmap(IMapSearchArgs searchArgs, CancellationToken cancellationToken) 28 | => Task.FromResult(new MapSearchResult(searchArgs)); 29 | 30 | public OsuStatus SearchModes { get; } = OsuStatus.Playing | OsuStatus.Watching | OsuStatus.FalsePlaying | OsuStatus.Listening | OsuStatus.Null; 31 | public string SearcherName { get; } = "~NO DATA~"; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Modules/TokensPreview/DrawingControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | using System.Windows.Forms; 4 | using osu_StreamCompanion.Code.Misc; 5 | 6 | namespace osu_StreamCompanion.Code.Modules.TokensPreview 7 | { 8 | class DrawingControl 9 | { 10 | public static void SuspendDrawing(Control parent) 11 | { 12 | NativeMethods.SendMessage(parent.Handle, NativeMethods.WM_SETREDRAW, false, 0); 13 | } 14 | 15 | public static void ResumeDrawing(Control parent) 16 | { 17 | NativeMethods.SendMessage(parent.Handle, NativeMethods.WM_SETREDRAW, true, 0); 18 | parent.Refresh(); 19 | } 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /osu!StreamCompanion/Code/Modules/osuPathReslover/osuPathResolverSettings.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace osu_StreamCompanion.Code.Modules.osuPathReslover 4 | { 5 | public partial class OsuPathResolverSettings : UserControl 6 | { 7 | public OsuPathResolverSettings() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace osu_StreamCompanion.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /osu!StreamCompanion/Resources/btn_donate_92x26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/osu!StreamCompanion/Resources/btn_donate_92x26.png -------------------------------------------------------------------------------- /osu!StreamCompanion/Resources/compiled.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/osu!StreamCompanion/Resources/compiled.ico -------------------------------------------------------------------------------- /osu!StreamCompanion/Resources/logo_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/osu!StreamCompanion/Resources/logo_256x256.png -------------------------------------------------------------------------------- /plugins/ClickCounter/ClickCounter.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2035 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickCounter", "ClickCounter.csproj", "{DBB78CD2-7515-4920-BA93-28860EFD54B6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {DBB78CD2-7515-4920-BA93-28860EFD54B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {DBB78CD2-7515-4920-BA93-28860EFD54B6}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {DBB78CD2-7515-4920-BA93-28860EFD54B6}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {DBB78CD2-7515-4920-BA93-28860EFD54B6}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {32BCE662-B84B-4D43-BD1E-DED2FC170205} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /plugins/ClickCounter/ClickCounterFileName.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace ClickCounter 5 | { 6 | public partial class ClickCounterFileName : Form 7 | { 8 | private const int CP_NOCLOSE_BUTTON = 0x200; 9 | protected override CreateParams CreateParams 10 | { 11 | get 12 | { 13 | CreateParams myCp = base.CreateParams; 14 | myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; 15 | return myCp; 16 | } 17 | } 18 | public ClickCounterFileName() 19 | { 20 | InitializeComponent(); 21 | this.AcceptButton = button1; 22 | } 23 | 24 | private void button1_Click(object sender, EventArgs e) 25 | { 26 | if (!FilenameIsValid(this.textBox_FileName.Text)) 27 | this.textBox_FileName.Text = ""; 28 | this.Close(); 29 | } 30 | 31 | private bool FilenameIsValid(string fileName) 32 | { 33 | System.IO.FileInfo fi = null; 34 | try 35 | { 36 | fi = new System.IO.FileInfo(fileName); 37 | } 38 | catch (ArgumentException) { } 39 | catch (System.IO.PathTooLongException) { } 40 | catch (NotSupportedException) { } 41 | 42 | return !ReferenceEquals(fi, null); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /plugins/ClickCounter/KeyClickFrm.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace ClickCounter 4 | { 5 | public partial class KeyClickFrm : Form 6 | { 7 | private const int CP_NOCLOSE_BUTTON = 0x200; 8 | protected override CreateParams CreateParams 9 | { 10 | get 11 | { 12 | CreateParams myCp = base.CreateParams; 13 | myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; 14 | return myCp; 15 | } 16 | } 17 | public KeyClickFrm() 18 | { 19 | InitializeComponent(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /plugins/ClickCounter/KeyboardCounterKeyClick.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace ClickCounter 4 | { 5 | public partial class KeyboardCounterKeyClick : Form 6 | { 7 | private const int CP_NOCLOSE_BUTTON = 0x200; 8 | protected override CreateParams CreateParams 9 | { 10 | get 11 | { 12 | CreateParams myCp = base.CreateParams; 13 | myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; 14 | return myCp; 15 | } 16 | } 17 | public KeyboardCounterKeyClick() 18 | { 19 | InitializeComponent(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /plugins/ClickCounter/KeyboardCounterMain.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace ClickCounter 4 | { 5 | public partial class KeyboardCounterMain : UserControl 6 | { 7 | public KeyboardCounterMain() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /plugins/ClickCounter/Models/Configuration.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace ClickCounter 4 | { 5 | public class Configuration 6 | { 7 | public bool KeyboardEnabled { get; set; } = false; 8 | public bool MouseEnabled { get; set; } = false; 9 | public bool KPXEnabled { get; set; } = false; 10 | public bool ResetKeysOnStartup { get; set; } = false; 11 | public bool ResetKeyCountsOnEachPlay { get; set; } = false; 12 | public BindingList KeyEntries = new BindingList(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /plugins/ClickCounter/Models/KeyEntry.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanion.Common; 2 | using System.ComponentModel; 3 | using System.Runtime.Serialization; 4 | 5 | namespace ClickCounter 6 | { 7 | public class KeyEntry 8 | { 9 | [Browsable(false)] 10 | public int Code { get; set; } 11 | public string Name { get; set; } 12 | public long Count { get; set; } 13 | private string _tokenName; 14 | [IgnoreDataMember] 15 | public string TokenName => _tokenName ??= $"key-{Name}".ToLowerInvariant().RemoveWhitespace(); 16 | [IgnoreDataMember] 17 | [Browsable(false)] 18 | public bool Pressed; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /plugins/ClickCounter/MouseMessages.cs: -------------------------------------------------------------------------------- 1 | namespace ClickCounter 2 | { 3 | public enum MouseMessages 4 | { 5 | WM_LBUTTONDOWN = 0x0201, 6 | //WM_LBUTTONUP = 0x0202, 7 | //WM_MOUSEMOVE = 0x0200, 8 | //WM_MOUSEWHEEL = 0x020A, 9 | WM_RBUTTONDOWN = 0x0204, 10 | //WM_RBUTTONUP = 0x0205 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /plugins/FileMapDataSender/FileMapDataSender.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | Library 5 | false 6 | false 7 | false 8 | true 9 | x86;AnyCPU 10 | 11 | 12 | ..\..\build\Debug\Plugins\ 13 | 14 | 15 | ..\..\build\Release\Plugins\ 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /plugins/FileMapDataSender/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/Gamma/Models/Configuration.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Runtime.CompilerServices; 3 | 4 | namespace Gamma.Models 5 | { 6 | public class Configuration 7 | { 8 | public List GammaRanges { get; set; } = new List 9 | { 10 | new GammaRange{MinAr = 10.01, MaxAr = 14, Gamma = 0.7f} 11 | }; 12 | public bool Enabled { get; set; } = false; 13 | public string ScreenDeviceName { get; set; } = string.Empty; 14 | 15 | public void SortGammaRanges() 16 | => GammaRanges.Sort((r1, r2) => r1.MinAr.CompareTo(r2.MinAr)); 17 | } 18 | } -------------------------------------------------------------------------------- /plugins/Gamma/Models/GammaRange.cs: -------------------------------------------------------------------------------- 1 | namespace Gamma.Models 2 | { 3 | public class GammaRange 4 | { 5 | public double MinAr { get; set; } = 10.01; 6 | public double MaxAr { get; set; } = 10.33; 7 | public float? Gamma { get; set; } 8 | public int UserGamma { get; set; } = 90; 9 | 10 | public override string ToString() => $"AR: {MinAr:00.00}-{MaxAr:00.00} Gamma: {UserGamma}"; 11 | } 12 | } -------------------------------------------------------------------------------- /plugins/IngameOverlays/BrowserOverlay/OverlayDownload.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace BrowserOverlay 12 | { 13 | public partial class OverlayDownload : Form 14 | { 15 | public OverlayDownload() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | public void SetStatus(string status) 21 | { 22 | label_status.Text = status; 23 | } 24 | 25 | public void SetProgress(int progress) 26 | { 27 | progressBar_downloadProgress.Value = progress; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /plugins/IngameOverlays/Overlay.Common/Dlls/X32ProcessOverlayHelper.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/IngameOverlays/Overlay.Common/Dlls/X32ProcessOverlayHelper.exe -------------------------------------------------------------------------------- /plugins/IngameOverlays/Overlay.Common/Loader/DllInjectionResult.cs: -------------------------------------------------------------------------------- 1 | namespace Overlay.Common.Loader 2 | { 3 | public enum DllInjectionResult 4 | { 5 | Success = 0, 6 | DllNotFound = 10, 7 | GameProcessNotFound = 11, 8 | InjectionFailed = 12, 9 | Timeout = 13, 10 | Cancelled = 14, 11 | HelperProcessFailed = 15, 12 | } 13 | } -------------------------------------------------------------------------------- /plugins/IngameOverlays/Overlay.Common/Loader/InjectionResult.cs: -------------------------------------------------------------------------------- 1 | namespace Overlay.Common.Loader 2 | { 3 | public class InjectionResult 4 | { 5 | public DllInjectionResult ResultCode { get; } 6 | public int ErrorCode { get; } 7 | public int Win32ErrorCode { get; } 8 | public string Result { get; } 9 | 10 | public InjectionResult(DllInjectionResult resultCode, int ErrorCode, int Win32ErrorCode, string Result) 11 | { 12 | ResultCode = resultCode; 13 | this.ErrorCode = ErrorCode; 14 | this.Win32ErrorCode = Win32ErrorCode; 15 | this.Result = Result; 16 | } 17 | 18 | public override string ToString() => $"{ResultCode},{ErrorCode},{Win32ErrorCode},{Result}"; 19 | } 20 | } -------------------------------------------------------------------------------- /plugins/IngameOverlays/Overlay.Common/Overlay.Common.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | enable 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /plugins/IngameOverlays/Overlay.Common/OverlayReport.cs: -------------------------------------------------------------------------------- 1 | namespace Overlay.Common 2 | { 3 | public class OverlayReport 4 | { 5 | public ReportType ReportType; 6 | public string Message; 7 | 8 | public OverlayReport(ReportType reportType, string message) 9 | { 10 | ReportType = reportType; 11 | Message = message; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /plugins/IngameOverlays/Overlay.Common/ReportType.cs: -------------------------------------------------------------------------------- 1 | namespace Overlay.Common 2 | { 3 | public enum ReportType 4 | { 5 | Log, 6 | Information, 7 | Error 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /plugins/IngameOverlays/TextOverlay/Dlls/freetype.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/IngameOverlays/TextOverlay/Dlls/freetype.dll -------------------------------------------------------------------------------- /plugins/IngameOverlays/TextOverlay/Dlls/textOverlay.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/IngameOverlays/TextOverlay/Dlls/textOverlay.dll -------------------------------------------------------------------------------- /plugins/IngameOverlays/TextOverlay/osuOverlayPlugin.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2035 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osuOverlayPlugin", "osuOverlayPlugin.csproj", "{E79D7BC8-AAD4-4BC1-9578-3FABB851B997}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {E79D7BC8-AAD4-4BC1-9578-3FABB851B997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {E79D7BC8-AAD4-4BC1-9578-3FABB851B997}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {E79D7BC8-AAD4-4BC1-9578-3FABB851B997}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {E79D7BC8-AAD4-4BC1-9578-3FABB851B997}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {74FD308E-4C99-4E1F-B370-35913032A9FA} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /plugins/IngameOverlays/TextOverlay/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Chart.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Chart.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Versioning; 2 | using System.Windows.Controls; 3 | using System.Windows.Data; 4 | using System.Windows.Media; 5 | 6 | namespace LiveVisualizer 7 | { 8 | 9 | /// 10 | /// Interaction logic for Chart.xaml 11 | /// 12 | [SupportedOSPlatform("windows7.0")] 13 | public partial class Chart : UserControl 14 | { 15 | public Chart(DataPlotBinding data) 16 | { 17 | InitializeComponent(); 18 | 19 | DataContext = data; 20 | } 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /plugins/LiveVisualizer/ConfigEntrys.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanionTypes.DataTypes; 2 | 3 | namespace LiveVisualizer 4 | { 5 | internal static class ConfigEntrys 6 | { 7 | public const string Prefix = "LiveVisualizer_"; 8 | 9 | public static readonly ConfigEntry LiveVisualizerConfig = new ConfigEntry($"{Prefix}Config", null); 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /plugins/LiveVisualizer/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Models/DataPlotBinding.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using ScottPlot; 3 | 4 | namespace LiveVisualizer 5 | { 6 | public class DataPlotBinding : INotifyPropertyChanged 7 | { 8 | #pragma warning disable 0067 9 | public event PropertyChangedEventHandler PropertyChanged; 10 | #pragma warning restore 0067 11 | public WpfPlot WpfPlot { get; set; } 12 | public IWpfVisualizerData Data { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Models/Interfaces/IVisualizerDisplayData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | 4 | namespace LiveVisualizer 5 | { 6 | public interface IVisualizerDisplayData : INotifyPropertyChanged 7 | { 8 | List Strains { get; set; } 9 | ScottPlot.WpfPlot MainDataPlot { get; } 10 | ScottPlot.WpfPlot BackgroundDataPlot { get; } 11 | 12 | string Title { get; set; } 13 | string Artist { get; set; } 14 | string ImageLocation { get; set; } 15 | 16 | int Hit300 { get; set; } 17 | int Hit100 { get; set; } 18 | int Hit50 { get; set; } 19 | int HitMiss { get; set; } 20 | double Pp { get; set; } 21 | double Acc { get; set; } 22 | 23 | double CurrentTime { get; set; } 24 | double TotalTime { get; set; } 25 | double PixelMapProgress { get; set; } 26 | bool DisableChartAnimations { get; set; } 27 | } 28 | } -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Models/Interfaces/IWpfVisualizerData.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace LiveVisualizer 4 | { 5 | public interface IWpfVisualizerData : INotifyPropertyChanged 6 | { 7 | IVisualizerDisplayData Display { get; set; } 8 | IVisualizerConfiguration Configuration { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Models/VisualizerDataModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Runtime.Versioning; 3 | 4 | namespace LiveVisualizer 5 | { 6 | [SupportedOSPlatform("windows7.0")] 7 | public class VisualizerDataModel : IWpfVisualizerData 8 | { 9 | public IVisualizerDisplayData Display { get; set; } = new VisualizerDisplayData(); 10 | public IVisualizerConfiguration Configuration { get; set; } = new VisualizerConfiguration(); 11 | 12 | #pragma warning disable 0067 13 | public event PropertyChangedEventHandler PropertyChanged; 14 | #pragma warning restore 0067 15 | 16 | } 17 | } -------------------------------------------------------------------------------- /plugins/LiveVisualizer/Models/VisualizerDisplayData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | using System.Runtime.Versioning; 4 | 5 | namespace LiveVisualizer 6 | { 7 | [SupportedOSPlatform("windows7.0")] 8 | public class VisualizerDisplayData : IVisualizerDisplayData 9 | { 10 | #pragma warning disable 0067 11 | public event PropertyChangedEventHandler PropertyChanged; 12 | #pragma warning restore 0067 13 | public List Strains { get; set; } 14 | public ScottPlot.WpfPlot MainDataPlot { get; } = new ScottPlot.WpfPlot(); 15 | public ScottPlot.WpfPlot BackgroundDataPlot { get; } = new ScottPlot.WpfPlot(); 16 | 17 | public string Title { get; set; } 18 | public string Artist { get; set; } 19 | public string ImageLocation { get; set; } 20 | public double Pp { get; set; } 21 | public int Hit300 { get; set; } 22 | public int Hit100 { get; set; } 23 | public int Hit50 { get; set; } 24 | public int HitMiss { get; set; } 25 | 26 | public double Acc { get; set; } 27 | 28 | public double CurrentTime { get; set; } 29 | 30 | public double TotalTime { get; set; } 31 | public double PixelMapProgress { get; set; } 32 | public bool DisableChartAnimations { get; set; } = false; 33 | } 34 | } -------------------------------------------------------------------------------- /plugins/LiveVisualizer/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /plugins/MSNEventSource/FirstRunMsn.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using StreamCompanionTypes.DataTypes; 4 | using StreamCompanionTypes.Enums; 5 | using StreamCompanionTypes.Interfaces; 6 | 7 | namespace MSNEventSource 8 | { 9 | public partial class FirstRunMsn : UserControl, IFirstRunControl 10 | { 11 | public FirstRunMsn() 12 | { 13 | InitializeComponent(); 14 | this.pictureBox1.Image = StreamCompanionHelper.StreamCompanionLogo(); 15 | } 16 | 17 | public void GotMsn(string msnString) 18 | { 19 | Completed?.Invoke(this, new FirstRunCompletedEventArgs { ControlCompletionStatus = FirstRunStatus.Ok }); 20 | } 21 | 22 | public event EventHandler Completed; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /plugins/MSNEventSource/MSNEventSource.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | Library 5 | false 6 | true 7 | false 8 | false 9 | true 10 | 11 | 12 | ..\..\build\Debug\Plugins\ 13 | 14 | 15 | ..\..\build\Release\Plugins\ 16 | 17 | 18 | 19 | UserControl 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /plugins/MSNEventSource/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/DT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/DT.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/HD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/HD.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/HR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/HR.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/HT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/HT.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/K4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/K4.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/K5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/K5.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/K6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/K6.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/K7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/K7.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/K8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/K8.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/NC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/NC.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/NF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/NF.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/PF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/PF.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/RN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/RN.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/RX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/RX.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/RX2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/RX2.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/SD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/SD.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/SO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/SO.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/Images/TP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ModImageGenerator/Images/TP.png -------------------------------------------------------------------------------- /plugins/ModImageGenerator/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/ModsHandler/ModsHandler.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | Library 5 | false 6 | true 7 | false 8 | false 9 | true 10 | 11 | 12 | ..\..\build\Debug\Plugins\ 13 | 14 | 15 | ..\..\build\Release\Plugins\ 16 | 17 | 18 | 19 | UserControl 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /plugins/ModsHandler/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/ModsHandlerTests/ModsHandlerTests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0-windows 5 | enable 6 | enable 7 | 8 | false 9 | true 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ar-SA.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="نص (GDI+)" 2 | Font="الخط" 3 | Text="النص" 4 | ReadFromFile="قراءة من ملف" 5 | TextFile="ملف نصي (UTF-8)" 6 | Filter.TextFiles="ملفات نصية" 7 | Filter.AllFiles="جميع أنواع الملفات" 8 | Color="اللون" 9 | Opacity="الشفافيّة" 10 | Gradient="تدرج" 11 | Gradient.Color="لون التدرج" 12 | Gradient.Opacity="شفافية التدرج" 13 | Gradient.Direction="إتجاه التدرج" 14 | BkColor="لون الخلفية" 15 | BkOpacity="شفافية الخلفية" 16 | Alignment="المحاذاة" 17 | Alignment.Left="يسار" 18 | Alignment.Center="وسط" 19 | Alignment.Right="يمين" 20 | Vertical="عمودياً/رأسياً" 21 | VerticalAlignment="المحاذاة العمودية" 22 | VerticalAlignment.Top="إلى أعلى" 23 | VerticalAlignment.Bottom="إلى أسفل" 24 | Outline="حد خارجي" 25 | Outline.Size="حجم الحد الخارجي" 26 | Outline.Color="لون الحد الخارجي" 27 | Outline.Opacity="شفافية الحد الخارجي" 28 | ChatlogMode="وضعية الدردشة" 29 | ChatlogMode.Lines="الحد الأقصى لعدد الاسطر" 30 | UseCustomExtents="استخدام أبعاد مخصصة لصندوق النص" 31 | UseCustomExtents.Wrap="التفاف النص" 32 | Width="العرض" 33 | Height="الارتفاع" 34 | Transform="تحويل النص" 35 | Transform.None="بلا" 36 | Transform.Uppercase="أحرف كبيرة" 37 | Transform.Lowercase="أحرف صغيرة" 38 | Transform.Startcase="أول حرف كبير دائماََ" 39 | Antialiasing="تمكين التنعيم" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/az-AZ.ini: -------------------------------------------------------------------------------- 1 | Transform.None="Heç biri" 2 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ba-RU.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Текст (GDI+)" 2 | Font="Хәреф" 3 | Text="Текст" 4 | TextFile="Текст файлы (UTF-8)" 5 | Filter.TextFiles="Текст файлдары" 6 | Filter.AllFiles="Барлыҡ файлдар" 7 | Color="Төҫ" 8 | Opacity="Тоноҡһыҙлыҡ" 9 | Gradient="Градиент" 10 | Gradient.Opacity="Градиент тоноҡһыҙлығы" 11 | Alignment.Left="Һулда" 12 | Alignment.Right="Уңда" 13 | VerticalAlignment.Top="Өҫтә" 14 | VerticalAlignment.Bottom="Аҫта" 15 | Width="Киңлек" 16 | Height="Бейеклек" 17 | Transform.None="Юҡ" 18 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/bg-BG.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Текст (GDI+)" 2 | Font="Шрифт" 3 | Text="Текст" 4 | ReadFromFile="Четене от файл" 5 | TextFile="Текстов файл (UTF-8)" 6 | Filter.TextFiles="Текстови файлове" 7 | Filter.AllFiles="Всички файлове" 8 | Color="Цвят" 9 | Opacity="Прозиране" 10 | Gradient="Преливка (градиент)" 11 | Gradient.Color="Цвят на преливката" 12 | Gradient.Opacity="Непрозрачност на преливката" 13 | Gradient.Direction="Посока на преливката" 14 | BkColor="Цвят на фона" 15 | BkOpacity="Непрозрачност на фона" 16 | Alignment="Подравняване" 17 | Alignment.Left="Вляво" 18 | Alignment.Center="Центриране" 19 | Alignment.Right="Вдясно" 20 | Vertical="Отвесно" 21 | VerticalAlignment="Вертикално подравняване" 22 | VerticalAlignment.Top="От горе" 23 | VerticalAlignment.Bottom="От долу" 24 | Outline="Контур" 25 | Outline.Size="Големина на контура" 26 | Outline.Color="Цвят на контура" 27 | Outline.Opacity="Прозрачност на контура" 28 | UseCustomExtents.Wrap="Сбиване в опаковката" 29 | Width="Ширина" 30 | Height="Височина" 31 | Transform="Преобразуване на текста" 32 | Transform.None="Няма" 33 | Transform.Uppercase="Главни букви" 34 | Transform.Lowercase="Малки букви" 35 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/bn-BD.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="টেক্সট (জিডিআই+)" 2 | Font="হরফ" 3 | Text="পাঠ্য" 4 | ReadFromFile="ফাইল থেকে পড়া" 5 | TextFile="টেক্সট ফাইল (UTF-8)" 6 | Filter.TextFiles="পাঠ্য ফাইল" 7 | Filter.AllFiles="সকল ফাইল" 8 | Color="রং" 9 | Opacity="অস্বচ্ছতা" 10 | Gradient="গ্রেডিয়েন্ট" 11 | Gradient.Color="গ্রেডিয়েন্ট রং" 12 | Gradient.Opacity="গ্রেডিয়েন্ট অস্বচ্ছতা" 13 | Gradient.Direction="গ্রেডিয়েন্ট দিকনির্দেশ" 14 | BkColor="পেছনের রঙ" 15 | BkOpacity="ব্যাকগ্রাউন্ডের স্বচ্ছতা" 16 | Alignment="সারিবদ্ধতা" 17 | Alignment.Left="বামদিকে" 18 | Alignment.Center="কেন্দ্রে" 19 | Alignment.Right="ডানদিকে" 20 | Vertical="খাড়া" 21 | VerticalAlignment="লম্ব প্রান্তিককরণ" 22 | VerticalAlignment.Top="শীর্ষ" 23 | VerticalAlignment.Bottom="নিচে" 24 | Outline="রূপরেখা" 25 | Outline.Size="বাহ্যরেখার আকার" 26 | Outline.Color="বাহ্যরেখার রং" 27 | Outline.Opacity="বাহ্যরেখার অস্বচ্ছতা" 28 | ChatlogMode="চ্যাটলগের ধরণ" 29 | ChatlogMode.Lines="চ্যাটলগ লাইন সীমা" 30 | UseCustomExtents="কৃত্রিম পাঠ্য এক্সটেন্টস" 31 | UseCustomExtents.Wrap="গুটানো" 32 | Width="প্রস্থ" 33 | Height="উচ্চতা" 34 | Transform="পাঠ্য রূপান্তর" 35 | Transform.None="কোনটিই নয়" 36 | Transform.Uppercase="বড় হাতের" 37 | Transform.Lowercase="ছোট হাতের" 38 | Transform.Startcase="শুরু হাতের" 39 | Antialiasing="অ্যান্টিয়ালাইজিং" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ca-ES.ini: -------------------------------------------------------------------------------- 1 | ReadFromFile="Llegeix del fitxer" 2 | TextFile="Fitxer de text (UTF-8)" 3 | Filter.TextFiles="Arxius de text" 4 | Filter.AllFiles="Tots els fitxers" 5 | Opacity="Opacitat" 6 | Gradient.Color="Color del gradient" 7 | Gradient.Opacity="Opacitat del gradient" 8 | Gradient.Direction="Direcció del gradient" 9 | BkColor="Color de fons" 10 | BkOpacity="Opacitat del fons" 11 | Alignment="Alineació" 12 | Alignment.Left="Esquerra" 13 | Alignment.Center="Centre" 14 | Alignment.Right="Dreta" 15 | VerticalAlignment="Alineació vertical" 16 | VerticalAlignment.Top="Superior" 17 | VerticalAlignment.Bottom="Inferior" 18 | Outline="Contorn" 19 | Outline.Size="Mida del contorn" 20 | Outline.Color="Color del contorn" 21 | Outline.Opacity="Opacitat del contorn" 22 | ChatlogMode="Mode xat" 23 | ChatlogMode.Lines="Límit de la línia de xat" 24 | UseCustomExtents="Utilitza extensions de text personalitzat" 25 | UseCustomExtents.Wrap="Ajusta" 26 | Width="Amplada" 27 | Height="Alçada" 28 | Transform="Transformació de text" 29 | Transform.None="Cap" 30 | Transform.Uppercase="Majúscula" 31 | Transform.Lowercase="Minúscula" 32 | Transform.Startcase="Primera lletra en majúscula" 33 | Antialiasing="Activa l'antialiàsing" 34 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/cs-CZ.ini: -------------------------------------------------------------------------------- 1 | Font="Písmo" 2 | ReadFromFile="Ze souboru" 3 | TextFile="Textový soubor (UTF-8)" 4 | Filter.TextFiles="Textové soubory" 5 | Filter.AllFiles="Všechny soubory" 6 | Color="Barva" 7 | Opacity="Krytí" 8 | Gradient="Přechod barvy" 9 | Gradient.Color="Barva přechodu" 10 | Gradient.Opacity="Průhlednost přechodu" 11 | Gradient.Direction="Směr přechodu" 12 | BkColor="Barva pozadí" 13 | BkOpacity="Průhlednost pozadí" 14 | Alignment="Zarovnání" 15 | Alignment.Left="Vlevo" 16 | Alignment.Center="Uprostřed" 17 | Alignment.Right="Vpravo" 18 | Vertical="Vertikálně" 19 | VerticalAlignment="Vertikální zarovnání" 20 | VerticalAlignment.Top="Nahoře" 21 | VerticalAlignment.Bottom="Dole" 22 | Outline="Obtáhnout" 23 | Outline.Size="Síla obtažení" 24 | Outline.Color="Barva obtažení" 25 | Outline.Opacity="Krytí obtažení" 26 | ChatlogMode="Režim chatu" 27 | ChatlogMode.Lines="Limit řádků režimu chatu" 28 | UseCustomExtents="Použít vlastní rozsah textu" 29 | UseCustomExtents.Wrap="Zalomit" 30 | Width="Šířka" 31 | Height="Výška" 32 | Transform="Transformace textu" 33 | Transform.None="Žádná" 34 | Transform.Uppercase="VELKÝMI PÍSMENY" 35 | Transform.Lowercase="malými písmeny" 36 | Transform.Startcase="Počáteční velikost" 37 | Antialiasing="Povolit Antialiasing" 38 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/da-DK.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI+)" 2 | Font="Skrifttype" 3 | Text="Tekst" 4 | ReadFromFile="Indlæs fra fil" 5 | TextFile="Tekstfil (UTF-8)" 6 | Filter.TextFiles="Tekstfiler" 7 | Filter.AllFiles="Alle filer" 8 | Color="Farve" 9 | Opacity="Gennemsigtighed" 10 | Gradient.Color="Gradientfarve" 11 | Gradient.Opacity="Gradientgennemsigtighed" 12 | Gradient.Direction="Gradientretning" 13 | BkColor="Baggrundsfarve" 14 | BkOpacity="Baggrundsgennemsigtighed" 15 | Alignment="Justering" 16 | Alignment.Left="Venstre" 17 | Alignment.Center="Centreret" 18 | Alignment.Right="Højre" 19 | Vertical="Vertikal" 20 | VerticalAlignment="Vertikal justering" 21 | VerticalAlignment.Bottom="Bund" 22 | Outline="Kontur" 23 | Outline.Size="Konturstørrelse" 24 | Outline.Color="Konturfarve" 25 | Outline.Opacity="Konturgennemsigtighed" 26 | ChatlogMode="Chatlog-tilstand" 27 | ChatlogMode.Lines="Chatlog-linebegrænsning" 28 | UseCustomExtents="Benyt tilpasset tekstomfang" 29 | UseCustomExtents.Wrap="Ombryd" 30 | Width="Bredde" 31 | Height="Højde" 32 | Transform="Teksttransformation" 33 | Transform.None="Ingen" 34 | Transform.Uppercase="Versaler" 35 | Transform.Lowercase="Minuskler" 36 | Transform.Startcase="Hvert ords startbogstav med versal" 37 | Antialiasing="Aktivér udjævning (antialiasing)" 38 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/de-DE.ini: -------------------------------------------------------------------------------- 1 | Font="Schriftart" 2 | ReadFromFile="Aus Datei lesen" 3 | TextFile="Textdatei (UTF-8)" 4 | Filter.TextFiles="Textdateien" 5 | Filter.AllFiles="Alle Dateien" 6 | Color="Farbe" 7 | Opacity="Deckkraft" 8 | Gradient="Farbverlauf" 9 | Gradient.Color="Verlaufsfarbe" 10 | Gradient.Opacity="Verlaufsdeckkraft" 11 | Gradient.Direction="Verlaufsrichtung" 12 | BkColor="Hintergrundfarbe" 13 | BkOpacity="Hintergrunddeckkraft" 14 | Alignment="Ausrichtung" 15 | Alignment.Left="Linksbündig" 16 | Alignment.Center="Zentriert" 17 | Alignment.Right="Rechtsbündig" 18 | Vertical="Vertikal" 19 | VerticalAlignment="Vertikale Ausrichtung" 20 | VerticalAlignment.Top="Oben" 21 | VerticalAlignment.Bottom="Unten" 22 | Outline="Kontur" 23 | Outline.Size="Konturgröße" 24 | Outline.Color="Konturfarbe" 25 | Outline.Opacity="Konturdeckkraft" 26 | ChatlogMode="Chatlogmodus" 27 | ChatlogMode.Lines="Chatlogzeilenlimit" 28 | UseCustomExtents="Benutzerdefinierten Textbereich benutzen" 29 | UseCustomExtents.Wrap="Umbruch" 30 | Width="Breite" 31 | Height="Höhe" 32 | Transform="Texttransformation" 33 | Transform.None="Keine" 34 | Transform.Uppercase="Großbuchstaben" 35 | Transform.Lowercase="Kleinbuchstaben" 36 | Transform.Startcase="Erster Buchstabe großgeschrieben" 37 | Antialiasing="Antialiasing aktivieren" 38 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/el-GR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Κείμενο (GDI+)" 2 | Font="Γραμματοσειρά" 3 | Text="Κείμενο" 4 | ReadFromFile="Ανάγνωση από αρχείο" 5 | TextFile="Αρχείο Κειμένου (UTF-8)" 6 | Filter.TextFiles="Αρχεία κειμένου" 7 | Filter.AllFiles="Όλα τα αρχεία" 8 | Color="Χρώμα" 9 | Opacity="Αδιαφάνεια" 10 | Gradient="Κλίση" 11 | Gradient.Color="Χρώμα κλίσης" 12 | Gradient.Opacity="Αδιαφάνεια κλίσης" 13 | Gradient.Direction="Κατεύθυνση διαβάθμισης" 14 | BkColor="Χρώμα Φόντου" 15 | BkOpacity="Αδιαφάνεια Φόντου" 16 | Alignment="Στοίχιση" 17 | Alignment.Left="Αριστερά" 18 | Alignment.Center="Κέντρο" 19 | Alignment.Right="Δεξιά" 20 | Vertical="Κάθετα" 21 | VerticalAlignment="Κατακόρυφη Στοίχιση" 22 | VerticalAlignment.Top="Πάνω" 23 | VerticalAlignment.Bottom="Κάτω" 24 | Outline="Περίγραμμα" 25 | Outline.Size="Μέγεθος περιγράμματος" 26 | Outline.Color="Χρώμα Περιγράμματος" 27 | Outline.Opacity="Αδιαφάνεια περιγράμματος" 28 | ChatlogMode="Λειτουργία αρχείοz καταγραφής συνομιλίας" 29 | ChatlogMode.Lines="Όριο καταγραφής συνομιλίας" 30 | UseCustomExtents="Χρήση Προσαρμοσμένων Επεκτάσεων Κειμένου" 31 | UseCustomExtents.Wrap="Αναδίπλωση" 32 | Width="Πλάτος" 33 | Height="Ύψος" 34 | Transform="Μετασχηματισμός Κειμένου" 35 | Transform.None="Κανένας" 36 | Transform.Uppercase="Κεφαλαία" 37 | Transform.Lowercase="Πεζά" 38 | Transform.Startcase="Το πρώτο γράμμα Κεφαλαίο" 39 | Antialiasing="Ενεργοποίηση Εξομάλυνσης" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/en-GB.ini: -------------------------------------------------------------------------------- 1 | Color="Colour" 2 | Gradient.Color="Gradient Colour" 3 | BkColor="Background Colour" 4 | Alignment.Center="Centre" 5 | Outline.Color="Outline Colour" 6 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/en-US.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Text (GDI+)" 2 | Font="Font" 3 | Text="Text" 4 | ReadFromFile="Read from file" 5 | TextFile="Text File (UTF-8)" 6 | Filter.TextFiles="Text Files" 7 | Filter.AllFiles="All Files" 8 | Color="Color" 9 | Opacity="Opacity" 10 | Gradient="Gradient" 11 | Gradient.Color="Gradient Color" 12 | Gradient.Opacity="Gradient Opacity" 13 | Gradient.Direction="Gradient Direction" 14 | BkColor="Background Color" 15 | BkOpacity="Background Opacity" 16 | Alignment="Alignment" 17 | Alignment.Left="Left" 18 | Alignment.Center="Center" 19 | Alignment.Right="Right" 20 | Vertical="Vertical" 21 | VerticalAlignment="Vertical Alignment" 22 | VerticalAlignment.Top="Top" 23 | VerticalAlignment.Bottom="Bottom" 24 | Outline="Outline" 25 | Outline.Size="Outline Size" 26 | Outline.Color="Outline Color" 27 | Outline.Opacity="Outline Opacity" 28 | ChatlogMode="Chatlog Mode" 29 | ChatlogMode.Lines="Chatlog Line Limit" 30 | UseCustomExtents="Use Custom Text Extents" 31 | UseCustomExtents.Wrap="Wrap" 32 | Width="Width" 33 | Height="Height" 34 | Transform="Text Transform" 35 | Transform.None="None" 36 | Transform.Uppercase="Uppercase" 37 | Transform.Lowercase="Lowercase" 38 | Transform.Startcase="Start Case" 39 | Antialiasing="Enable Antialiasing" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/es-ES.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Texto (GDI+)" 2 | Font="Fuente" 3 | Text="Texto" 4 | ReadFromFile="Leer desde archivo" 5 | TextFile="Archivo de texto (UTF-8)" 6 | Filter.TextFiles="Archivos de texto" 7 | Filter.AllFiles="Todos los archivos" 8 | Opacity="Opacidad" 9 | Gradient="Degradado" 10 | Gradient.Color="Color del degradado" 11 | Gradient.Opacity="Opacidad del degradado" 12 | Gradient.Direction="Dirección del degradado" 13 | BkColor="Color del fondo" 14 | BkOpacity="Opacidad del fondo" 15 | Alignment="Alineamiento" 16 | Alignment.Left="Izquierda" 17 | Alignment.Center="Centrado" 18 | Alignment.Right="Derecha" 19 | VerticalAlignment="Alineación vertical" 20 | VerticalAlignment.Top="Arriba" 21 | VerticalAlignment.Bottom="Abajo" 22 | Outline="Contorno" 23 | Outline.Size="Tamaño del borde" 24 | Outline.Color="Color del borde" 25 | Outline.Opacity="Opacidad del borde" 26 | ChatlogMode="Modo chat" 27 | ChatlogMode.Lines="Límite de la línea de chat" 28 | UseCustomExtents="Usar extensiones de texto personalizado" 29 | UseCustomExtents.Wrap="Ajustar" 30 | Width="Ancho" 31 | Height="Alto" 32 | Transform="Transformación de Texto" 33 | Transform.None="Ninguno" 34 | Transform.Uppercase="Mayúscula" 35 | Transform.Lowercase="Minúscula" 36 | Transform.Startcase="Primera letra en mayúscula" 37 | Antialiasing="Habilitar Antialiasing" 38 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/et-EE.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI +)" 2 | Text="Tekst" 3 | ReadFromFile="Loe failist" 4 | TextFile="Tekstifail (UTF-8)" 5 | Filter.TextFiles="Tekstifailid" 6 | Filter.AllFiles="Kõik failid" 7 | Color="Värv" 8 | Opacity="Läbipaistvus" 9 | BkOpacity="Tausta läbipaistvus" 10 | Alignment="Joondus" 11 | Alignment.Left="Vasakule" 12 | Alignment.Center="Keskele" 13 | Alignment.Right="Paremale" 14 | Vertical="Vertikaalne" 15 | VerticalAlignment="Vertikaaljoondus" 16 | VerticalAlignment.Top="Ülevalt" 17 | VerticalAlignment.Bottom="Alt" 18 | Outline="Kontuur" 19 | Outline.Size="Kontuuri suurus" 20 | Outline.Color="Kontuuri värv" 21 | Outline.Opacity="Kontuuri läbipaistvus" 22 | UseCustomExtents.Wrap="Ümbris" 23 | Width="Laius" 24 | Height="Kõrgus" 25 | Transform.None="Puudub" 26 | Transform.Uppercase="Suurtähed" 27 | Transform.Lowercase="Väiketähed" 28 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/eu-ES.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Testua (GDI+)" 2 | Font="Letra-tipoa" 3 | Text="Testua" 4 | ReadFromFile="Irakurri fitxategitik" 5 | TextFile="Testu fitxategia (UTF-8)" 6 | Filter.TextFiles="Testu fitxategiak" 7 | Filter.AllFiles="Fitxategi guztiak" 8 | Color="Kolorea" 9 | Opacity="Opakutasuna" 10 | Gradient="Gradientea" 11 | Gradient.Color="Gradientearen kolorea" 12 | Gradient.Opacity="Gradientearen opakutasuna" 13 | Gradient.Direction="Gradientearen norabidea" 14 | BkColor="Atzeko planoaren kolorea" 15 | BkOpacity="Atzeko planoaren opakutasuna" 16 | Alignment="Lerrokatzea" 17 | Alignment.Left="Ezkerrean" 18 | Alignment.Center="Erdian" 19 | Alignment.Right="Eskuinean" 20 | Vertical="Bertikala" 21 | VerticalAlignment="Lerrokatze bertikala" 22 | VerticalAlignment.Top="Goian" 23 | VerticalAlignment.Bottom="Behean" 24 | Outline="Ertza" 25 | Outline.Size="Ertzaren zabalera" 26 | Outline.Color="Ertzaren kolorea" 27 | Outline.Opacity="Ertzaren opakutasuna" 28 | ChatlogMode="Berriketa modua" 29 | ChatlogMode.Lines="Berriketa lerroaren limitea" 30 | UseCustomExtents="Erabili testu hedapen pertsonalak" 31 | UseCustomExtents.Wrap="Egokitu" 32 | Width="Zabalera" 33 | Height="Altuera" 34 | Transform="Testu-eraldaketa" 35 | Transform.None="Gabe" 36 | Transform.Uppercase="Hizki-larriak" 37 | Transform.Lowercase="Hizki-xeheak" 38 | Transform.Startcase="Hitz guztien lehenengo letra maiuskulaz" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/fa-IR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="متن (GDI+)" 2 | Font="فونت" 3 | Text="متن" 4 | ReadFromFile="از فایل بخوان" 5 | TextFile="فایل متن (UTF-8)" 6 | Filter.TextFiles="پرونده های متنی" 7 | Filter.AllFiles="همه فایل ها" 8 | Color="رنگ" 9 | Opacity="شفافیت" 10 | Gradient="شیب" 11 | Gradient.Color="رنگ شیب" 12 | Gradient.Opacity="شفافیت شیب" 13 | Gradient.Direction="جهت شیب" 14 | BkColor="رنگ پس زمینه" 15 | BkOpacity="شفافیت پس زمینه" 16 | Alignment="تراز چینش" 17 | Alignment.Left="چپ" 18 | Alignment.Center="مرکز" 19 | Alignment.Right="راست" 20 | Vertical="عمودی" 21 | VerticalAlignment="تراز عمودی" 22 | VerticalAlignment.Top="بالا" 23 | VerticalAlignment.Bottom="پایین" 24 | Outline="برون نما" 25 | Outline.Size="اندازه طرح کلی" 26 | Outline.Color="رنگ طرح کلی" 27 | Outline.Opacity="تاری دید" 28 | ChatlogMode="حالت Chatlog" 29 | ChatlogMode.Lines="محدودیت Chatlog Line" 30 | UseCustomExtents="استفاده از متن سفارشی" 31 | UseCustomExtents.Wrap="پیچ وتاب" 32 | Width="عرض" 33 | Height="ارتفاع" 34 | Transform="تبدیل متن" 35 | Transform.None="هیچ‌کدام" 36 | Transform.Uppercase="حروف بزرگ" 37 | Transform.Lowercase="حروف کوچک" 38 | Transform.Startcase="شروع مورد" 39 | Antialiasing="فعال کردن ضد لبه" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/fi-FI.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Teksti (GDI+)" 2 | Font="Fontti" 3 | Text="Teksti" 4 | ReadFromFile="Lue tiedostosta" 5 | TextFile="Tekstitiedosto (UTF-8)" 6 | Filter.TextFiles="Tekstitiedostot" 7 | Filter.AllFiles="Kaikki tiedostot" 8 | Color="Väri" 9 | Opacity="Läpinäkyvyys" 10 | Gradient="Liuku" 11 | Gradient.Color="Liukuväri" 12 | Gradient.Opacity="Liukuva läpinäkyvyys" 13 | Gradient.Direction="Liu'un suunta" 14 | BkColor="Taustaväri" 15 | BkOpacity="Taustan läpinäkyvyys" 16 | Alignment="Sijoittelu" 17 | Alignment.Left="Vasen" 18 | Alignment.Center="Keskitetty" 19 | Alignment.Right="Oikea" 20 | Vertical="Pystysuunnassa" 21 | VerticalAlignment="Pystysijoittelu" 22 | VerticalAlignment.Top="Ylös" 23 | VerticalAlignment.Bottom="Alas" 24 | Outline="Reunaviiva" 25 | Outline.Size="Reunaviivan koko" 26 | Outline.Color="Reunaviivan väri" 27 | Outline.Opacity="Reunaviivan läpinäkyvyys" 28 | ChatlogMode="Chatlog-tila" 29 | ChatlogMode.Lines="Chatlog riviraja" 30 | UseCustomExtents="Käytä valinnaisia fonttilaajennuksia" 31 | UseCustomExtents.Wrap="Sido" 32 | Width="Leveys" 33 | Height="Korkeus" 34 | Transform="Tekstin muunnos" 35 | Transform.None="Ei mitään" 36 | Transform.Uppercase="Isot kirjaimet" 37 | Transform.Lowercase="Pienet kirjaimet" 38 | Transform.Startcase="Sanan alkukirjain" 39 | Antialiasing="Ota reunanpehmennys käyttöön" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/fil-PH.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Teksto (GDI+)" 2 | Font="Benditahan" 3 | Text="Teksto" 4 | ReadFromFile="Basahin galing sa file" 5 | TextFile="Tekstong file (UTF-8)" 6 | Filter.TextFiles="Teksto ng mga file" 7 | Filter.AllFiles="Ang lahat ng mga file" 8 | Color="Kulay" 9 | Opacity="Kalabuan" 10 | Gradient="Mapagmahal" 11 | Gradient.Color="Mapagmahal na Kulay" 12 | Gradient.Opacity="Mapagmahal na kalabuan" 13 | Gradient.Direction="Mapagmahal na Direksyon" 14 | BkColor="Panglikuran na Kulay" 15 | BkOpacity="Panglikuran na Kalabuan" 16 | Alignment="Pagkakahanay" 17 | Alignment.Left="Kaliwa" 18 | Alignment.Center="Gitna" 19 | Alignment.Right="Kanan" 20 | Vertical="Patayo" 21 | VerticalAlignment="Patayong Pagkakahanay" 22 | VerticalAlignment.Top="Nangunguna" 23 | VerticalAlignment.Bottom="Pinakailalim" 24 | Outline="Balangkas" 25 | Outline.Size="Balangkas na Sukat" 26 | Outline.Color="Balangkas na kulay" 27 | Outline.Opacity="Balangkas ng kalabuan" 28 | ChatlogMode="Chatlag Mowd" 29 | ChatlogMode.Lines="Linya ng limitasyon sa Chatlog" 30 | UseCustomExtents="Gamitin ang Pasadyang Nakakalawak na Teksto" 31 | UseCustomExtents.Wrap="Ibalot" 32 | Width="Lapad" 33 | Height="Taas" 34 | Transform="Paghuhulma ng Text" 35 | Transform.None="Wala" 36 | Transform.Startcase="Umpisahan ang Case" 37 | Antialiasing="Paganahin ang Antialiasing" 38 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/fr-FR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Texte (GDI+)" 2 | Font="Police" 3 | Text="Texte" 4 | ReadFromFile="Lire à partir d'un fichier" 5 | TextFile="Fichier texte (UTF-8)" 6 | Filter.TextFiles="Fichiers texte" 7 | Filter.AllFiles="Tous les fichiers" 8 | Color="Couleur" 9 | Opacity="Opacité" 10 | Gradient="Dégradé" 11 | Gradient.Color="Couleur du dégradé" 12 | Gradient.Opacity="Opacité du dégradé" 13 | Gradient.Direction="Direction du dégradé" 14 | BkColor="Couleur de l'arrière-plan" 15 | BkOpacity="Transparence de l'arrière-plan" 16 | Alignment="Alignement" 17 | Alignment.Left="À gauche" 18 | Alignment.Center="Centré" 19 | Alignment.Right="À droite" 20 | VerticalAlignment="Alignement vertical" 21 | VerticalAlignment.Top="En haut" 22 | VerticalAlignment.Bottom="En bas" 23 | Outline="Contour" 24 | Outline.Size="Épaisseur du contour" 25 | Outline.Color="Couleur du contour" 26 | Outline.Opacity="Opacité du contour" 27 | ChatlogMode="Mode discussion" 28 | ChatlogMode.Lines="Lignes de discussion" 29 | UseCustomExtents="Utiliser une taille personnalisée" 30 | UseCustomExtents.Wrap="Retour à la ligne automatique" 31 | Width="Largeur" 32 | Height="Hauteur" 33 | Transform="Transformer le texte" 34 | Transform.None="Aucune" 35 | Transform.Uppercase="Majuscules" 36 | Transform.Lowercase="Minuscules" 37 | Transform.Startcase="Capitalisation des mots" 38 | Antialiasing="Activer le lissage de la police" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/gl-ES.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Texto (GDI+)" 2 | Font="Tipo de letra" 3 | Text="Texto" 4 | ReadFromFile="Ler a partir dun ficheiro" 5 | TextFile="Ficheiro de texto (UTF-8)" 6 | Filter.TextFiles="Ficheiros de texto" 7 | Filter.AllFiles="Todos os ficheiros" 8 | Color="Cor" 9 | Opacity="Opacidade" 10 | Gradient="Degradado" 11 | Gradient.Color="Cor do degradado" 12 | Gradient.Opacity="Opacidade do degradado" 13 | Gradient.Direction="Dirección do degradado" 14 | BkColor="Cor de fondo" 15 | BkOpacity="Opacidade do fondo" 16 | Alignment="Aliñamento" 17 | Alignment.Left="Esquerda" 18 | Alignment.Center="Centro" 19 | Alignment.Right="Dereita" 20 | VerticalAlignment="Aliñamento vertical" 21 | VerticalAlignment.Top="Arriba" 22 | VerticalAlignment.Bottom="Abaixo" 23 | Outline="Contorno" 24 | Outline.Size="Tamaño do contorno" 25 | Outline.Color="Cor de contorno" 26 | Outline.Opacity="Opacidade do contorno" 27 | ChatlogMode="Modo de rexistro da conversa" 28 | ChatlogMode.Lines="Límite das liñas de rexistro da conversa" 29 | UseCustomExtents="Usar extensións de texto personalizadas" 30 | UseCustomExtents.Wrap="Axustar" 31 | Width="Largo" 32 | Height="Alto" 33 | Transform="Transformación do texto" 34 | Transform.None="Ningunha" 35 | Transform.Uppercase="Maiúsculas" 36 | Transform.Lowercase="Minúsculas" 37 | Transform.Startcase="Primeira letra en maiúscula" 38 | Antialiasing="Activar o suavizado" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/he-IL.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="טקסט (GDI+)" 2 | Font="גופן" 3 | Text="טקסט" 4 | ReadFromFile="קרא מתוך קובץ" 5 | TextFile="קובץ טקסט (UTF-8)" 6 | Filter.TextFiles="קובצי טקסט" 7 | Filter.AllFiles="כל הקבצים" 8 | Color="צבע" 9 | Opacity="אטימות" 10 | Gradient="גרדיאנט" 11 | Gradient.Color="צבע גרדיאנט" 12 | Gradient.Opacity="שקיפות גרדיאנט" 13 | Gradient.Direction="כיוון גרדיאנט" 14 | BkColor="צבע רקע" 15 | BkOpacity="אטימות רקע" 16 | Alignment="יישור" 17 | Alignment.Left="שמאל" 18 | Alignment.Center="מרכז" 19 | Alignment.Right="ימין" 20 | Vertical="אנכי" 21 | VerticalAlignment="יישור אנכי" 22 | VerticalAlignment.Top="עליון" 23 | VerticalAlignment.Bottom="תחתון" 24 | Outline="קו מתאר" 25 | Outline.Size="גודל קו מתאר" 26 | Outline.Color="צבע קו מתאר" 27 | Outline.Opacity="אטימות קו מתאר" 28 | ChatlogMode="מצב צ׳אט" 29 | ChatlogMode.Lines="הגבלת זמן צ׳אט" 30 | UseCustomExtents="השתמש בגבולות המותאמים אישית" 31 | UseCustomExtents.Wrap="עטוף" 32 | Width="רוחב" 33 | Height="גובה" 34 | Transform="אותיות גדולות/קטנות" 35 | Transform.None="ללא" 36 | Transform.Uppercase="אותיות גדולות" 37 | Transform.Lowercase="אותיות קטנות" 38 | Transform.Startcase="אות גדולה ראשונה בכל מילה" 39 | Antialiasing="הפעל החלקת קצוות" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/hi-IN.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="टेक्स्ट (GDI+)" 2 | Font="फ़ॉन्ट" 3 | Text="टेक्स्ट" 4 | ReadFromFile="फ़ाइल से पढ़ें" 5 | TextFile="टेक्स्ट फ़ाइल (UTF-8)" 6 | Filter.TextFiles="टेक्स्ट फ़ाईलें" 7 | Filter.AllFiles="सभी फ़ाइलें" 8 | Color="रंग" 9 | Opacity="अपारदर्शिता" 10 | Gradient="अवतरण" 11 | Gradient.Color="ग्रेडिएंट रंग" 12 | Gradient.Opacity="ढलानयुक्त पारदर्शिता" 13 | Gradient.Direction="ढलान दिशा" 14 | BkColor="पृष्ठभूमि रंग" 15 | BkOpacity="पृष्ठभूमि अपारदर्शिता" 16 | Alignment="संरेखण" 17 | Alignment.Left="बाएँ" 18 | Alignment.Center="केंद्र" 19 | Alignment.Right="दाएँ" 20 | Vertical="लम्बवत" 21 | VerticalAlignment="लंबवत संरेखण" 22 | VerticalAlignment.Top="शीर्ष" 23 | VerticalAlignment.Bottom="तल" 24 | Outline="खाका" 25 | Outline.Size="खाका मोटाई" 26 | Outline.Color="खाका रंग" 27 | Outline.Opacity="खाका अपारदर्शिता" 28 | ChatlogMode="बातचीत लॉग मोड" 29 | ChatlogMode.Lines="बातचीत लॉग लाइन सीमा" 30 | UseCustomExtents="निर्मित टेक्स्ट परिसीमा का उपयोग करें" 31 | UseCustomExtents.Wrap="मोड़े" 32 | Width="चौड़ाई" 33 | Height="ऊँचाई" 34 | Transform="टेक्स्ट रूपांतर करें" 35 | Transform.None="कुछ नहीं" 36 | Transform.Uppercase="बड़े अक्षर" 37 | Transform.Lowercase="छोटा अक्षर" 38 | Transform.Startcase="बड़े प्रथम अक्षर" 39 | Antialiasing="एंटीएलियासिंग सक्षम करें" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/hr-HR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI+)" 2 | Text="Tekst" 3 | ReadFromFile="Učitaj iz datoteke" 4 | TextFile="Tekstualne datoteka (UTF-8)" 5 | Filter.TextFiles="Tekstualne datoteke" 6 | Filter.AllFiles="Sve datoteke" 7 | Color="Boja" 8 | Opacity="Prozirnost" 9 | Gradient="Nijansa" 10 | Gradient.Color="Boja nijanse" 11 | Gradient.Opacity="Nijansa prozirnosti" 12 | Gradient.Direction="Pravac nijansi" 13 | BkColor="Pozadinska boja" 14 | BkOpacity="Prozirnost pozadine" 15 | Alignment="Poravnanje" 16 | Alignment.Left="Levo" 17 | Alignment.Center="Centrirano" 18 | Alignment.Right="Desno" 19 | Vertical="Uspravno" 20 | VerticalAlignment="Uspravno poravnanje" 21 | VerticalAlignment.Top="Vrh" 22 | VerticalAlignment.Bottom="Dno" 23 | Outline="Okvir" 24 | Outline.Size="Debljina okvira" 25 | Outline.Color="Boja okvira" 26 | Outline.Opacity="Prozirnost okvira" 27 | ChatlogMode="Režim zapisnika ćaskanja" 28 | ChatlogMode.Lines="Broj linija u zapisniku" 29 | UseCustomExtents="Koristi posebne dimenzije teksta" 30 | UseCustomExtents.Wrap="Prelom" 31 | Width="Širina" 32 | Height="Visina" 33 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/hu-HU.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Szöveg (GDI+)" 2 | Font="Betűtípus" 3 | Text="Szöveg" 4 | ReadFromFile="Fájlból olvasás" 5 | TextFile="Szövegfájl (UTF-8)" 6 | Filter.TextFiles="Szöveges fájlok" 7 | Filter.AllFiles="Minden fájl" 8 | Color="Szín" 9 | Opacity="Áttetszőség" 10 | Gradient="Színátmenet" 11 | Gradient.Color="Színátmenet színe" 12 | Gradient.Opacity="Színátmenet áttetszősége" 13 | Gradient.Direction="Színátmenet iránya" 14 | BkColor="Háttérszín" 15 | BkOpacity="Háttér áttetszőség" 16 | Alignment="Pozíció" 17 | Alignment.Left="Balra" 18 | Alignment.Center="Középre" 19 | Alignment.Right="Jobbra" 20 | Vertical="Függőleges" 21 | VerticalAlignment="Függőleges igazítás" 22 | VerticalAlignment.Top="Fent" 23 | VerticalAlignment.Bottom="Lent" 24 | Outline="Körvonal" 25 | Outline.Size="Körvonal mérete" 26 | Outline.Color="Körvonal színe" 27 | Outline.Opacity="Körvonal áttetszőség" 28 | ChatlogMode="Csevegőnapló mód" 29 | ChatlogMode.Lines="Csevegőnapló sorlimit" 30 | UseCustomExtents="Egyedi szövegdoboz használata" 31 | UseCustomExtents.Wrap="Sortörés" 32 | Width="Szélesség" 33 | Height="Magasság" 34 | Transform="Szöveg alakítása" 35 | Transform.None="Egyik sem" 36 | Transform.Uppercase="Nagybetűs" 37 | Transform.Lowercase="Kisbetűs" 38 | Transform.Startcase="Nagy kezdőbetű" 39 | Antialiasing="Élsimítás bekapcsolása" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/id-ID.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Teks (GDI+)" 2 | Font="Fon" 3 | Text="Teks" 4 | ReadFromFile="Baca dari file" 5 | TextFile="File Teks (UTF-8)" 6 | Filter.TextFiles="File Teks" 7 | Filter.AllFiles="Semua File" 8 | Color="Warna" 9 | Opacity="Opasitas" 10 | Gradient="Gradien" 11 | Gradient.Color="Warna Gradien" 12 | Gradient.Opacity="Opasitas Gradien" 13 | Gradient.Direction="Arah Gradien" 14 | BkColor="Warna Latar Belakang" 15 | BkOpacity="Opasitas Latar Belakang" 16 | Alignment="Penjajaran" 17 | Alignment.Left="Kiri" 18 | Alignment.Center="Tengah" 19 | Alignment.Right="Kanan" 20 | Vertical="Vertikal" 21 | VerticalAlignment="Penjajaran Vertikal" 22 | VerticalAlignment.Top="Atas" 23 | VerticalAlignment.Bottom="Bawah" 24 | Outline="Garis Luar" 25 | Outline.Size="Ukuran Garis Luar" 26 | Outline.Color="Warna Garis Luar" 27 | Outline.Opacity="Opasitas Garis Luar" 28 | ChatlogMode="Mode Log Chat" 29 | ChatlogMode.Lines="Batas Baris Log Chat" 30 | UseCustomExtents="Gunakan Luas Teks Khusus" 31 | UseCustomExtents.Wrap="Atur Teks" 32 | Width="Lebar" 33 | Height="Tinggi" 34 | Transform="Transformasi Teks" 35 | Transform.None="Tidak ada" 36 | Transform.Uppercase="Huruf kapital" 37 | Transform.Lowercase="Huruf kecil" 38 | Transform.Startcase="Huruf Depan Kapital" 39 | Antialiasing="Aktifkan Antialiasing" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/it-IT.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Testo (GDI+)" 2 | Font="Carattere" 3 | Text="Testo" 4 | ReadFromFile="Leggi da file" 5 | TextFile="File di testo (UTF-8)" 6 | Filter.TextFiles="File di testo" 7 | Filter.AllFiles="Tutti i file" 8 | Color="Colore" 9 | Opacity="Opacità" 10 | Gradient="Sfumato" 11 | Gradient.Color="Colore della sfumatura" 12 | Gradient.Opacity="Opacità della sfumatura" 13 | Gradient.Direction="Direzione della sfumatura" 14 | BkColor="Colore dello sfondo" 15 | BkOpacity="Opacità dello sfondo" 16 | Alignment="Allineamento" 17 | Alignment.Left="A sinistra" 18 | Alignment.Center="Al centro" 19 | Alignment.Right="A destra" 20 | Vertical="Verticale" 21 | VerticalAlignment="Allineamento verticale" 22 | VerticalAlignment.Top="In alto" 23 | VerticalAlignment.Bottom="In basso" 24 | Outline="Contorno del testo" 25 | Outline.Size="Dimensione del contorno" 26 | Outline.Color="Colore del contorno" 27 | Outline.Opacity="Opacità del contorno" 28 | ChatlogMode="Modalità chat" 29 | ChatlogMode.Lines="Righe da visualizzare in modalità chat" 30 | UseCustomExtents="Utilizza un formato del testo personalizzato" 31 | UseCustomExtents.Wrap="A capo automatico" 32 | Width="Larghezza" 33 | Height="Altezza" 34 | Transform="Trasformazione del testo" 35 | Transform.None="Nessuna" 36 | Transform.Uppercase="In lettere maiuscole" 37 | Transform.Lowercase="In lettere minuscole" 38 | Transform.Startcase="Avvia Caso" 39 | Antialiasing="Abilita Antialiasing" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ja-JP.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="テキスト (GDI+)" 2 | Font="フォント" 3 | Text="テキスト" 4 | ReadFromFile="ファイルからの読み取り" 5 | TextFile="テキストファイル (UTF-8)" 6 | Filter.TextFiles="テキストファイル" 7 | Filter.AllFiles="すべてのファイル" 8 | Color="色" 9 | Opacity="不透明度" 10 | Gradient="グラデーション" 11 | Gradient.Color="グラデーションカラー" 12 | Gradient.Opacity="グラデーションの不透明度" 13 | Gradient.Direction="グラデーションの方向" 14 | BkColor="背景色" 15 | BkOpacity="背景の不透明度" 16 | Alignment="位置揃え" 17 | Alignment.Left="左" 18 | Alignment.Center="中央" 19 | Alignment.Right="右" 20 | Vertical="垂直方向" 21 | VerticalAlignment="垂直位置揃え" 22 | VerticalAlignment.Top="上" 23 | VerticalAlignment.Bottom="下" 24 | Outline="輪郭" 25 | Outline.Size="輪郭のサイズ" 26 | Outline.Color="輪郭の色" 27 | Outline.Opacity="輪郭の不透明度" 28 | ChatlogMode="チャットログモード" 29 | ChatlogMode.Lines="チャットログ行の制限" 30 | UseCustomExtents="テキスト領域の範囲を指定する" 31 | UseCustomExtents.Wrap="折り返す" 32 | Width="幅" 33 | Height="高さ" 34 | Transform="テキスト変換" 35 | Transform.None="未設定" 36 | Transform.Uppercase="大文字" 37 | Transform.Lowercase="小文字" 38 | Transform.Startcase="各単語の最初の一文字を大文字にする" 39 | Antialiasing="アンチエイリアスを有効にする" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ka-GE.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="ტექსტი (GDI+)" 2 | Font="შრიფტი" 3 | Text="ტექსტი" 4 | ReadFromFile="ფაილიდან წაკითხვა" 5 | TextFile="ტექსტური ფაილი (UTF-8)" 6 | Filter.TextFiles="ტექსტური ფაილები" 7 | Filter.AllFiles="ყველა ფაილი" 8 | Color="ფერი" 9 | Opacity="გაუმჭვირვალობა" 10 | Gradient="გარდამავალი" 11 | Gradient.Color="გარდამავალი ფერი" 12 | Gradient.Opacity="გარდამავლობის გაუმჭვირვალობა" 13 | Gradient.Direction="გარდამავლობის მიმართულება" 14 | BkColor="ფონის ფერი" 15 | BkOpacity="ფონის გამჭვირვალობა" 16 | Alignment="განლაგება" 17 | Alignment.Left="მარცხნივ" 18 | Alignment.Center="შუაში" 19 | Alignment.Right="მარჯვნივ" 20 | Vertical="შვეულად" 21 | VerticalAlignment="შვეული განლაგება" 22 | VerticalAlignment.Top="ზემოთ" 23 | VerticalAlignment.Bottom="ქვემოთ" 24 | Outline="გარემოხაზულობა" 25 | Outline.Size="გარემოხაზულობის ზომა" 26 | Outline.Color="გარემოხაზულობის ფერი" 27 | Outline.Opacity="გარემოხაზულობის გაუმჭვირვალობა" 28 | ChatlogMode="სასაუბროს (Chatlog) რეჟიმი" 29 | ChatlogMode.Lines="სასაუბროს ხაზების შეზღუდვა" 30 | UseCustomExtents="ტექსტის ველის მითითებული ზომის გამოყენება" 31 | UseCustomExtents.Wrap="ხაზზე გადატანა" 32 | Width="სიგანე" 33 | Height="სიმაღლე" 34 | Transform="ტექსტის გარდაქმნა" 35 | Transform.None="არცერთი" 36 | Transform.Uppercase="მთავრული" 37 | Transform.Lowercase="ნუსხური" 38 | Transform.Startcase="პირველი ასოს გამთავრულება" 39 | Antialiasing="დაკბილვის არიდება" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/kab-KAB.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Aḍris (GDI+)" 2 | Font="Tasefsit" 3 | Text="Aḍris" 4 | ReadFromFile="Ɣer-d seg ufaylu" 5 | TextFile="Afaylu aḍris (UTF-8)" 6 | Filter.TextFiles="Ifuyla iḍrisen" 7 | Filter.AllFiles="Akk ifuyla" 8 | Color="Ini" 9 | Opacity="Tiḍullest" 10 | Gradient="Afesnaw" 11 | Gradient.Color="Ini n ufesnaw" 12 | Gradient.Opacity="Tiḍullest n ufesnaw" 13 | Gradient.Direction="Tanila n ufesnaw" 14 | BkColor="Ini n ugilal" 15 | BkOpacity="Tiḍullest n ugilal" 16 | Alignment.Left="Azelmaḍ" 17 | Alignment.Center="Alemmas" 18 | Alignment.Right="Ayfus" 19 | Vertical="Ubdid" 20 | VerticalAlignment.Top="Ukessawen" 21 | VerticalAlignment.Bottom="Ukessar" 22 | Outline="Azizdew" 23 | Outline.Size="Tiddi n uzizdew" 24 | Outline.Color="Ini n uzizdew" 25 | Outline.Opacity="Tiḍullet n uzizdew" 26 | ChatlogMode="Askar n umeslay" 27 | Width="Tehri" 28 | Height="Tattayt" 29 | Transform="Aselket n uḍris" 30 | Transform.None="Ulac" 31 | Transform.Uppercase="Asekkil ameqran" 32 | Transform.Lowercase="Asekkil ameẓyan" 33 | Antialiasing="Sermed amzay" 34 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/kmr-TR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Nivîs (GDI+)" 2 | Font="Cûrenivîs" 3 | Text="Nivîs" 4 | ReadFromFile="Ji pelê bixwîne" 5 | TextFile="Pelê nivîsê (UTF-8)" 6 | Filter.TextFiles="Pelên nivîsê" 7 | Filter.AllFiles="Hemû pel" 8 | Color="Reng" 9 | Opacity="Zelalî" 10 | Gradient="Xarbûn" 11 | Gradient.Color="Rengê xarbûnê" 12 | Gradient.Opacity="Zelaliya xarbûnê" 13 | Gradient.Direction="Aliyê xarbûnê" 14 | BkColor="Rengê paşrûyê" 15 | BkOpacity="Zelaliya paşrûyê" 16 | Alignment="Bicîkirin" 17 | Alignment.Left="Çep" 18 | Alignment.Center="Navend" 19 | Alignment.Right="Rast" 20 | Vertical="Stûnî" 21 | VerticalAlignment="Bicîkirina stûnî" 22 | VerticalAlignment.Top="Jor" 23 | VerticalAlignment.Bottom="Jêr" 24 | Outline="Dor nivîs" 25 | Outline.Size="Mezinahiya dor nivîsê" 26 | Outline.Color="Rengê dor nivîsê" 27 | Outline.Opacity="Zelaliya dor nivîsê" 28 | ChatlogMode="Moda têketina axaftinê" 29 | ChatlogMode.Lines="Sînora têketina axaftinê" 30 | UseCustomExtents="Pîvanên kesanekirî yên kodika nivîsê bi kar bîne" 31 | UseCustomExtents.Wrap="Pêçandin" 32 | Width="Firehî" 33 | Height="Bilindî" 34 | Transform="Derbasbûna nivîsê" 35 | Transform.None="Ne yek" 36 | Transform.Uppercase="Tîpên mezin" 37 | Transform.Lowercase="Tîpên piçuk" 38 | Transform.Startcase="Yekem tîp her dem mezin e" 39 | Antialiasing="Qerax nermkirinê çalak bike" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ko-KR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="텍스트 (GDI+)" 2 | Font="글꼴" 3 | Text="텍스트" 4 | ReadFromFile="파일에서 불러들이기" 5 | TextFile="텍스트 파일 (UTF-8)" 6 | Filter.TextFiles="텍스트 파일" 7 | Filter.AllFiles="모든 파일" 8 | Color="색" 9 | Opacity="투명도" 10 | Gradient="바림" 11 | Gradient.Color="바림 색" 12 | Gradient.Opacity="발미 불투명도" 13 | Gradient.Direction="바림 방향" 14 | BkColor="배경 색상" 15 | BkOpacity="배경 불투명도" 16 | Alignment="정렬" 17 | Alignment.Left="왼쪽" 18 | Alignment.Center="가운데" 19 | Alignment.Right="오른쪽" 20 | Vertical="수직" 21 | VerticalAlignment="수직 정렬" 22 | VerticalAlignment.Top="위" 23 | VerticalAlignment.Bottom="아래" 24 | Outline="외곽선" 25 | Outline.Size="외곽선 크기" 26 | Outline.Color="외곽선 색" 27 | Outline.Opacity="외곽선 투명도" 28 | ChatlogMode="대화 기록 기능" 29 | ChatlogMode.Lines="채팅기록 줄 제한" 30 | UseCustomExtents="사용자 정의 텍스트 설정" 31 | UseCustomExtents.Wrap="자동 줄 바꿈" 32 | Width="너비" 33 | Height="높이" 34 | Transform="글자 변환" 35 | Transform.None="없음" 36 | Transform.Uppercase="대문자" 37 | Transform.Lowercase="소문자" 38 | Transform.Startcase="첫 글자를 대문자로" 39 | Antialiasing="Antialiasing 사용" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/lo-LA.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="ເພີ່ມຕົວອັກສອນ" 2 | Font="ຮູບແບບຕົວອັກສອນ (ຟ໊ອນ)" 3 | Text="ບ່ອນຂຽນຕົວໜັງສື" 4 | ReadFromFile="ເອົາຕົວໜັງສືຈາກຟາຍເອກະສານທາງນອກ" 5 | TextFile="ຟາຍປະເພດ Text (UTF-8 ເທົ່ານັ້ນ)" 6 | Filter.TextFiles="ຟາຍປະເພດ text" 7 | Filter.AllFiles="ຟາຍທັງໝົດ" 8 | Color="ສີ" 9 | Opacity="ທຶບແສງ" 10 | BkColor="ສີພື້ນຫຼັງຕົວໜັງສື" 11 | BkOpacity="ຄວາມໃສ ສີພື້ນຫຼັງ" 12 | Alignment="ການຈັດວາງ" 13 | Alignment.Left="ຊ້າຍ" 14 | Alignment.Center="ກາງ" 15 | Alignment.Right="ຂວາ" 16 | Vertical="ລວງຕັ້ງ" 17 | VerticalAlignment="ຈັດລຽງລວງຕັ້ງແບບ" 18 | VerticalAlignment.Top="ເທິງ" 19 | VerticalAlignment.Bottom="ລຸ່ມ" 20 | Outline="ຂອບຕົວອັກສອນ" 21 | Outline.Size="ຂະໜາດຂອບ" 22 | Outline.Color="ຂອບສີ" 23 | Outline.Opacity="ຄວາມໃສຂອງຂອບ" 24 | Width="ລວງກວ້າງ" 25 | Height="ລວງສູງ" 26 | Transform="ປັບຕົວອັກສອນ" 27 | Transform.None="ປົກກະຕິ" 28 | Transform.Uppercase="ຕົວພິມໃຫຍ່" 29 | Transform.Lowercase="ຕົວພິມນ້ອຍ" 30 | Transform.Startcase="ຕົວອັກສອນໃຫຍ່ສະເພາະຕົວທຳອິດ" 31 | Antialiasing="ເປີດໂໝດເຮັດໃຫ້ຂອບງາມ" 32 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/mn-MN.ini: -------------------------------------------------------------------------------- 1 | Font="Фонт" 2 | Text="Текст" 3 | ReadFromFile="Файлаас уншуулах" 4 | TextFile="Текст Файл (UTF-8)" 5 | Filter.TextFiles="Текст файлууд" 6 | Filter.AllFiles="Бүх файлууд" 7 | Color="Өнгө" 8 | Opacity="Харанхуйлах" 9 | Gradient="Уусгалтай" 10 | Gradient.Color="Уусгалтай Өнгө" 11 | Gradient.Opacity="Уусгалтай Харанхуйлах" 12 | BkColor="Дэвсгэрийн Өнгө" 13 | Alignment.Left="Зүүн" 14 | Alignment.Center="Төв" 15 | Alignment.Right="Баруун" 16 | Vertical="Босоо" 17 | VerticalAlignment.Top="Дээд хэсэг" 18 | VerticalAlignment.Bottom="Доод хэсэг" 19 | Outline="Гадуурх зураас" 20 | Outline.Size="Гадуурх Зураасны Хэмжээ" 21 | Outline.Color="Гадуурх Зураасны Өнгө" 22 | UseCustomExtents.Wrap="Доош Эгнээх" 23 | Width="Өргөн" 24 | Height="Өндөр" 25 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ms-MY.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Teks (GDI+)" 2 | Font="Fon" 3 | Text="Teks" 4 | ReadFromFile="Baca melalui fail" 5 | TextFile="Fail Teks (UTF-8)" 6 | Filter.TextFiles="Fail-fail Teks" 7 | Filter.AllFiles="Semua Fail" 8 | Color="Warna" 9 | Opacity="Kelegapan" 10 | Gradient="Gradien" 11 | Gradient.Color="Warna Gradien" 12 | Gradient.Opacity="Kelegapan Gradien" 13 | Gradient.Direction="Arah Gradien" 14 | BkColor="Warna Latar Belakang" 15 | BkOpacity="Kelegapan Latar Belakang" 16 | Alignment="Jajaran" 17 | Alignment.Left="Kiri" 18 | Alignment.Center="Tengah" 19 | Alignment.Right="Kanan" 20 | Vertical="Menegak" 21 | VerticalAlignment="Jajaran Menegak" 22 | VerticalAlignment.Top="Atas" 23 | VerticalAlignment.Bottom="Bawah" 24 | Outline="Garis Luar" 25 | Outline.Size="Saiz Garis Luar" 26 | Outline.Color="Warna Garis Luar" 27 | Outline.Opacity="Kelegapan Garis Luar" 28 | ChatlogMode="Mod Log Sembang" 29 | ChatlogMode.Lines="Had Baris Log Sembang" 30 | UseCustomExtents="Guna Lanjutan Teks Suai" 31 | UseCustomExtents.Wrap="Balut" 32 | Width="Lebar" 33 | Height="Tinggi" 34 | Transform="Jelmaan Teks" 35 | Transform.None="Tiada" 36 | Transform.Uppercase="Huruf Besar" 37 | Transform.Lowercase="Huruf Kecil" 38 | Transform.Startcase="Mula Huruf Besar" 39 | Antialiasing="Benarkan Antialias" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/nb-NO.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI +)" 2 | Font="Skrifttype" 3 | Text="Tekst" 4 | ReadFromFile="Lese fra fil" 5 | TextFile="Tekstfil (UTF-8)" 6 | Filter.TextFiles="Tekstfiler" 7 | Filter.AllFiles="Alle filer" 8 | Color="Farge" 9 | Opacity="Gjennomsiktighet" 10 | Gradient.Color="Gradientfarge" 11 | Gradient.Opacity="Gradientfasthet" 12 | Gradient.Direction="Gradientens retning" 13 | BkColor="Bakgrunnsfarge" 14 | BkOpacity="Gjennomsiktighet bakgrunn" 15 | Alignment="Justering" 16 | Alignment.Left="Venstre" 17 | Alignment.Center="I midten" 18 | Alignment.Right="Høyre" 19 | Vertical="Vertikal" 20 | VerticalAlignment="Loddrett justering" 21 | VerticalAlignment.Top="Topp" 22 | VerticalAlignment.Bottom="Bunn" 23 | Outline="Omriss" 24 | Outline.Size="Omrissets størrelse" 25 | Outline.Color="Omrissets farge" 26 | Outline.Opacity="Omrissets fasthet" 27 | ChatlogMode="Chatlog modus" 28 | ChatlogMode.Lines="Chathistorikkens linjegrense" 29 | UseCustomExtents="Bruk egendefinerte tekst-utvidelser" 30 | UseCustomExtents.Wrap="Ordbrytning" 31 | Width="Bredde" 32 | Height="Høyde" 33 | Transform="Tekst transformering" 34 | Transform.None="Ingen" 35 | Transform.Uppercase="Store bokstaver" 36 | Transform.Lowercase="Små bokstaver" 37 | Transform.Startcase="Stor forbokstav i alle ord" 38 | Antialiasing="Aktiver antialiasing" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/nl-NL.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI+)" 2 | Font="Lettertype" 3 | Text="Tekst" 4 | ReadFromFile="Lees uit bestand" 5 | TextFile="Tekstbestand (UTF-8)" 6 | Filter.TextFiles="Tekstbestanden" 7 | Filter.AllFiles="Alle bestanden" 8 | Color="Kleur" 9 | Opacity="Dekking" 10 | Gradient="Kleurovergang" 11 | Gradient.Color="Overgangskleur" 12 | Gradient.Opacity="Kleurovergang Dekking" 13 | Gradient.Direction="Kleurovergang Richting" 14 | BkColor="Achtergrondkleur" 15 | BkOpacity="Achtergronddekking" 16 | Alignment="Uitlijning" 17 | Alignment.Left="Links" 18 | Alignment.Center="Midden" 19 | Alignment.Right="Rechts" 20 | Vertical="Verticaal" 21 | VerticalAlignment="Verticale uitlijning" 22 | VerticalAlignment.Top="Boven" 23 | VerticalAlignment.Bottom="Onder" 24 | Outline="Contour" 25 | Outline.Size="Contourgrootte" 26 | Outline.Color="Contourkleur" 27 | Outline.Opacity="Contourdekking" 28 | ChatlogMode="Chatlogmodus" 29 | ChatlogMode.Lines="Chatlog regel-limiet" 30 | UseCustomExtents="Aangepaste tekst-extents gebruiken" 31 | UseCustomExtents.Wrap="Terugloop" 32 | Width="Breedte" 33 | Height="Hoogte" 34 | Transform="Tekst transformatie" 35 | Transform.None="Geen" 36 | Transform.Uppercase="Hoofdletters" 37 | Transform.Lowercase="Kleine letters" 38 | Transform.Startcase="Beginletters hoofdletter" 39 | Antialiasing="Anti-aliasing inschakelen" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/nn-NO.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI+)" 2 | Font="Skrift" 3 | Text="Tekst" 4 | ReadFromFile="Les frå fil" 5 | TextFile="Tekstfil (UTF-8)" 6 | Filter.TextFiles="Tekstfiler" 7 | Filter.AllFiles="Alle filer" 8 | Color="Farge" 9 | Alignment.Left="Venstre" 10 | Alignment.Center="Midtstill" 11 | Alignment.Right="Høgre" 12 | Vertical="Vertikal" 13 | VerticalAlignment="Vertikal justering" 14 | VerticalAlignment.Top="Topp" 15 | VerticalAlignment.Bottom="Botn" 16 | Outline="Omriss" 17 | UseCustomExtents.Wrap="Bryt" 18 | Width="Breidde" 19 | Height="Høgde" 20 | Transform.None="Ingen" 21 | Transform.Uppercase="Store bokstavar" 22 | Transform.Lowercase="Små bokstavar" 23 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/pl-PL.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI +)" 2 | Font="Czcionka" 3 | Text="Tekst" 4 | ReadFromFile="Czytaj z pliku" 5 | TextFile="Plik tekstowy (UTF-8)" 6 | Filter.TextFiles="Pliki tekstowe" 7 | Filter.AllFiles="Wszystkie pliki" 8 | Color="Kolor" 9 | Opacity="Przezroczystość" 10 | Gradient.Color="Kolor gradientu" 11 | Gradient.Opacity="Przezroczystość gradientu" 12 | Gradient.Direction="Kierunek gradientu" 13 | BkColor="Kolor tła" 14 | BkOpacity="Przezroczystość tła" 15 | Alignment="Wyrównanie" 16 | Alignment.Left="Do lewej" 17 | Alignment.Center="Wyśrodkuj" 18 | Alignment.Right="Do prawej" 19 | Vertical="Pionowo" 20 | VerticalAlignment="Wyrównanie w pionie" 21 | VerticalAlignment.Top="Do góry" 22 | VerticalAlignment.Bottom="Do dołu" 23 | Outline="Kontur" 24 | Outline.Size="Rozmiar konturu" 25 | Outline.Color="Kolor konturu" 26 | Outline.Opacity="Przezroczystość konturu" 27 | ChatlogMode="Tryb podglądu czatu" 28 | ChatlogMode.Lines="Limit linii czatu" 29 | UseCustomExtents="Użyj niestandardowego zakresu tekstu" 30 | UseCustomExtents.Wrap="Zawiń" 31 | Width="Szerokość" 32 | Height="Wysokość" 33 | Transform="Przekształcanie tekstu" 34 | Transform.None="Brak" 35 | Transform.Uppercase="Wielkie litery" 36 | Transform.Lowercase="Małe litery" 37 | Transform.Startcase="Wielkie Pierwsze Litery" 38 | Antialiasing="Włącz antyaliasing" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/pt-BR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Texto (GDI+)" 2 | Font="Fonte" 3 | Text="Texto" 4 | ReadFromFile="Carregar do arquivo" 5 | TextFile="Arquivo de texto (UTF-8)" 6 | Filter.TextFiles="Arquivos de texto" 7 | Filter.AllFiles="Todos os arquivos" 8 | Color="Cor" 9 | Opacity="Opacidade" 10 | Gradient="Gradiente" 11 | Gradient.Color="Cor do gradiente" 12 | Gradient.Opacity="Opacidade do gradiente" 13 | Gradient.Direction="Direção do gradiente" 14 | BkColor="Cor do fundo" 15 | BkOpacity="Opacidade do fundo" 16 | Alignment="Alinhamento" 17 | Alignment.Left="Esquerda" 18 | Alignment.Center="Centralizado" 19 | Alignment.Right="Direita" 20 | VerticalAlignment="Alinhamento vertical" 21 | VerticalAlignment.Top="Em cima" 22 | VerticalAlignment.Bottom="Em baixo" 23 | Outline="Contorno" 24 | Outline.Size="Tamanho do contorno" 25 | Outline.Color="Cor do contorno" 26 | Outline.Opacity="Opacidade do contorno" 27 | ChatlogMode="Modo de chat" 28 | ChatlogMode.Lines="Limite de linhas do chat" 29 | UseCustomExtents="Usar extensões de texto personalizadas" 30 | UseCustomExtents.Wrap="Ajustar" 31 | Width="Largura" 32 | Height="Altura" 33 | Transform="Transformação" 34 | Transform.None="Nenhuma" 35 | Transform.Uppercase="Letras maiúsculas" 36 | Transform.Lowercase="Letras minúsculas" 37 | Transform.Startcase="Capitalizar" 38 | Antialiasing="Ativar anti-aliasing" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/pt-PT.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Texto (GDI+)" 2 | Font="Letra" 3 | Text="Texto" 4 | ReadFromFile="Ler de um ficheiro" 5 | TextFile="Ficheiro de texto (UTF-8)" 6 | Filter.TextFiles="Ficheiros de texto" 7 | Filter.AllFiles="Todos os ficheiros" 8 | Color="Cor" 9 | Opacity="Opacidade" 10 | Gradient="Gradação" 11 | Gradient.Color="Cor da gradação" 12 | Gradient.Opacity="Opacidade da gradação" 13 | Gradient.Direction="Direcção da gradação" 14 | BkColor="Cor de fundo" 15 | BkOpacity="Opacidade do fundo" 16 | Alignment="Alinhamento" 17 | Alignment.Left="Esquerda" 18 | Alignment.Center="Centro" 19 | Alignment.Right="Direita" 20 | VerticalAlignment="Alinhamento vertical" 21 | VerticalAlignment.Top="Topo" 22 | VerticalAlignment.Bottom="Fundo" 23 | Outline="Contorno" 24 | Outline.Size="Espessura do contorno" 25 | Outline.Color="Cor do contorno" 26 | Outline.Opacity="Opacidade do contorno" 27 | ChatlogMode="Activar diário do chat" 28 | ChatlogMode.Lines="Limite de linhas do diário" 29 | UseCustomExtents="Usar extensões de texto personalizado" 30 | UseCustomExtents.Wrap="Quebra" 31 | Width="Largura" 32 | Height="Altura" 33 | Transform="Transformação de texto" 34 | Transform.None="Nenhuma" 35 | Transform.Uppercase="Maiúsculas" 36 | Transform.Lowercase="Minúsculas" 37 | Transform.Startcase="Maiúsculas iniciais" 38 | Antialiasing="Activar suavização" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ro-RO.ini: -------------------------------------------------------------------------------- 1 | ReadFromFile="Citește din fișier" 2 | TextFile="Fișier text (UTF-8)" 3 | Filter.TextFiles="Fișiere text" 4 | Filter.AllFiles="Toate fișierele" 5 | Color="Culoare" 6 | Opacity="Opacitate" 7 | Gradient.Color="Culoarea gradientului" 8 | Gradient.Opacity="Opacitatea gradientului" 9 | Gradient.Direction="Direcția gradientului" 10 | BkColor="Culoarea fundalului" 11 | BkOpacity="Opacitatea fundalului" 12 | Alignment="Aliniere" 13 | Alignment.Left="Stânga" 14 | Alignment.Center="Centru" 15 | Alignment.Right="Dreapta" 16 | VerticalAlignment="Aliniere verticală" 17 | VerticalAlignment.Top="Sus" 18 | VerticalAlignment.Bottom="Jos" 19 | Outline="Contur" 20 | Outline.Size="Dimensiunea conturului" 21 | Outline.Color="Culoarea conturului" 22 | Outline.Opacity="Opacitatea conturului" 23 | ChatlogMode="Mod pentru jurnal de chat" 24 | ChatlogMode.Lines="Limită pentru liniile jurnalului de chat" 25 | UseCustomExtents="Folosește extinderi personalizate ale textului" 26 | UseCustomExtents.Wrap="Încadrează textul" 27 | Width="Lățime" 28 | Height="Înălțime" 29 | Transform="Transformare de text" 30 | Transform.None="Niciuna" 31 | Transform.Uppercase="Litere mari" 32 | Transform.Lowercase="Litere mici" 33 | Transform.Startcase="Majuscule numai la prima literă a fiecărui cuvânt" 34 | Antialiasing="Activează antialiasingul" 35 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ru-RU.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Текст (GDI+)" 2 | Font="Шрифт" 3 | Text="Текст" 4 | ReadFromFile="Чтение из файла" 5 | TextFile="Текстовый файл (UTF-8)" 6 | Filter.TextFiles="Текстовые файлы" 7 | Filter.AllFiles="Все файлы" 8 | Color="Цвет" 9 | Opacity="Непрозрачность" 10 | Gradient="Градиент" 11 | Gradient.Color="Цвет градиента" 12 | Gradient.Opacity="Непрозрачность градиента" 13 | Gradient.Direction="Направление градиента" 14 | BkColor="Цвет фона" 15 | BkOpacity="Непрозрачность фона" 16 | Alignment="Выравнивание" 17 | Alignment.Left="По левому краю" 18 | Alignment.Center="По центру" 19 | Alignment.Right="По правому краю" 20 | Vertical="Вертикальный" 21 | VerticalAlignment="Вертикальное выравнивание" 22 | VerticalAlignment.Top="Сверху" 23 | VerticalAlignment.Bottom="Снизу" 24 | Outline="Обводка" 25 | Outline.Size="Размер обводки" 26 | Outline.Color="Цвет обводки" 27 | Outline.Opacity="Непрозрачность контура" 28 | ChatlogMode="Режим чат-лога" 29 | ChatlogMode.Lines="Лимит кол-ва строк чата" 30 | UseCustomExtents="Свои размеры текстового поля" 31 | UseCustomExtents.Wrap="Перенос строк" 32 | Width="Ширина" 33 | Height="Высота" 34 | Transform="Преобразование текста" 35 | Transform.None="Нет" 36 | Transform.Uppercase="Заглавные буквы" 37 | Transform.Lowercase="Строчные буквы" 38 | Transform.Startcase="Каждое слово с заглавной" 39 | Antialiasing="Включить сглаживание" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/sk-SK.ini: -------------------------------------------------------------------------------- 1 | Font="Písmo" 2 | ReadFromFile="Čítať zo súboru" 3 | TextFile="Textový súbor (UTF-8)" 4 | Filter.TextFiles="Textové súbory" 5 | Filter.AllFiles="Všetky súbory" 6 | Color="Farba" 7 | Opacity="Nepriehľadnosť" 8 | Gradient="Farebný Prechod" 9 | Gradient.Color="Farba prechodu" 10 | Gradient.Opacity="Nepriehľadnosť prechodu" 11 | Gradient.Direction="Smer prechodu" 12 | BkColor="Farba pozadia" 13 | BkOpacity="Nepriehľadnosť pozadia" 14 | Alignment="Zarovnanie" 15 | Alignment.Left="Vľavo" 16 | Alignment.Center="Na stred" 17 | Alignment.Right="Vpravo" 18 | Vertical="Vertikálne" 19 | VerticalAlignment="Zvislé zarovnanie" 20 | VerticalAlignment.Top="Hore" 21 | VerticalAlignment.Bottom="Dole" 22 | Outline="Obrys" 23 | Outline.Size="Veľkosť obrysu" 24 | Outline.Color="Farba obrysu" 25 | Outline.Opacity="Nepriehľadnosť obrysu" 26 | ChatlogMode="Režim chatu" 27 | ChatlogMode.Lines="Limit riadkov režimu chatu" 28 | UseCustomExtents="Použiť vlastné rozsahy textu" 29 | UseCustomExtents.Wrap="Zalomiť" 30 | Width="Šírka" 31 | Height="Výška" 32 | Transform="Transformácia textu" 33 | Transform.None="Žiadna" 34 | Transform.Uppercase="Veľké písmená" 35 | Transform.Lowercase="Malé písmená" 36 | Transform.Startcase="Veľkosť Začiatočných Písmen" 37 | Antialiasing="Povoliť vyhladenie hrán" 38 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/sl-SI.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Besedilo (GDI+)" 2 | Font="Pisava" 3 | Text="Besedilo" 4 | ReadFromFile="Preberi iz datoteke" 5 | TextFile="Besedilna datoteka (UTF-8)" 6 | Filter.TextFiles="Besedilne datoteke" 7 | Filter.AllFiles="Vse datoteke" 8 | Color="Barva" 9 | Opacity="Motnost" 10 | Gradient="Preliv" 11 | Gradient.Color="Barva preliva" 12 | Gradient.Opacity="Motnost preliva" 13 | Gradient.Direction="Smer preliva" 14 | BkColor="Barva ozadja" 15 | BkOpacity="Motnost ozadja" 16 | Alignment="Poravnava" 17 | Alignment.Left="Levo" 18 | Alignment.Center="Sredina" 19 | Alignment.Right="Desno" 20 | Vertical="Navpično" 21 | VerticalAlignment="Navpična poravnava" 22 | VerticalAlignment.Top="Zgoraj" 23 | VerticalAlignment.Bottom="Spodaj" 24 | Outline="Oris" 25 | Outline.Size="Velikost orisa" 26 | Outline.Color="Barva orisa" 27 | Outline.Opacity="Motnost orisa" 28 | ChatlogMode="Način dnevnika klepeta" 29 | ChatlogMode.Lines="Omejitev vrstic dnevnika klepeta" 30 | UseCustomExtents="Uporabi polje besedila po meri" 31 | UseCustomExtents.Wrap="Prelomi" 32 | Width="Širina" 33 | Height="Višina" 34 | Transform="Preoblika besedila" 35 | Transform.None="Brez" 36 | Transform.Uppercase="Velike črke" 37 | Transform.Lowercase="Male črke" 38 | Transform.Startcase="Velika začetnica" 39 | Antialiasing="Omogoči glajenje robov" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/sr-CS.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Tekst (GDI+)" 2 | Text="Tekst" 3 | ReadFromFile="Učitaj iz datoteke" 4 | TextFile="Tekstualne datoteka (UTF-8)" 5 | Filter.TextFiles="Tekstualne datoteke" 6 | Filter.AllFiles="Sve datoteke" 7 | Color="Boja" 8 | Opacity="Prozirnost" 9 | Gradient="Nijansa" 10 | Gradient.Color="Boja nijanse" 11 | Gradient.Opacity="Nijansa prozirnosti" 12 | Gradient.Direction="Pravac nijansi" 13 | BkColor="Pozadinska boja" 14 | BkOpacity="Prozirnost pozadine" 15 | Alignment="Poravnanje" 16 | Alignment.Left="Levo" 17 | Alignment.Center="Centrirano" 18 | Alignment.Right="Desno" 19 | Vertical="Uspravno" 20 | VerticalAlignment="Uspravno poravnanje" 21 | VerticalAlignment.Top="Vrh" 22 | VerticalAlignment.Bottom="Dno" 23 | Outline="Okvir" 24 | Outline.Size="Debljina okvira" 25 | Outline.Color="Boja okvira" 26 | Outline.Opacity="Prozirnost okvira" 27 | ChatlogMode="Režim zapisnika ćaskanja" 28 | ChatlogMode.Lines="Broj linija u zapisniku" 29 | UseCustomExtents="Koristi posebne dimenzije teksta" 30 | UseCustomExtents.Wrap="Prelom" 31 | Width="Širina" 32 | Height="Visina" 33 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/sr-SP.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Текст (GDI+)" 2 | Font="Фонт" 3 | Text="Текст" 4 | ReadFromFile="Учитај из датотеке" 5 | TextFile="Текстуалне датотеке (UTF-8)" 6 | Filter.TextFiles="Текстуалне датотеке" 7 | Filter.AllFiles="Све датотеке" 8 | Color="Боја" 9 | Opacity="Прозирност" 10 | Gradient="Нијанса" 11 | Gradient.Color="Боја нијансе" 12 | Gradient.Opacity="Нијанса прозирности" 13 | Gradient.Direction="Правац нијанси" 14 | BkColor="Позадинска боја" 15 | BkOpacity="Прозирност позадине" 16 | Alignment="Поравнање" 17 | Alignment.Left="Лево" 18 | Alignment.Center="Центрирано" 19 | Alignment.Right="Десно" 20 | Vertical="Усправно" 21 | VerticalAlignment="Усправно поравнање" 22 | VerticalAlignment.Top="Врх" 23 | VerticalAlignment.Bottom="Дно" 24 | Outline="Оквир" 25 | Outline.Size="Дебљина оквира" 26 | Outline.Color="Боја оквира" 27 | Outline.Opacity="Прозирност оквира" 28 | ChatlogMode="Режим записника ћаскања" 29 | ChatlogMode.Lines="Број линија у записнику" 30 | UseCustomExtents="Користи посебне димензије текста" 31 | UseCustomExtents.Wrap="Прелом" 32 | Width="Ширина" 33 | Height="Висина" 34 | Transform="Трансформација текста" 35 | Transform.None="Без" 36 | Transform.Uppercase="Велика слова" 37 | Transform.Lowercase="Мала слова" 38 | Transform.Startcase="Велика почетна слова" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/sv-SE.ini: -------------------------------------------------------------------------------- 1 | Font="Typsnitt" 2 | ReadFromFile="Läs från fil" 3 | TextFile="Textfil (UTF-8)" 4 | Filter.TextFiles="Textfiler" 5 | Filter.AllFiles="Alla filer" 6 | Color="Färg" 7 | Opacity="Opacitet" 8 | Gradient.Color="Gradientfärg" 9 | Gradient.Opacity="Gradientopacitet" 10 | Gradient.Direction="Gradientriktning" 11 | BkColor="Bakgrundsfärg" 12 | BkOpacity="Bakgrundsopacitet" 13 | Alignment="Justering" 14 | Alignment.Left="Vänster" 15 | Alignment.Center="Centrerad" 16 | Alignment.Right="Höger" 17 | Vertical="Vertikal" 18 | VerticalAlignment="Vertikal justering" 19 | VerticalAlignment.Top="Överkant" 20 | VerticalAlignment.Bottom="Nederkant" 21 | Outline="Kontur" 22 | Outline.Size="Konturstorlek" 23 | Outline.Color="Konturfärg" 24 | Outline.Opacity="Konturopacitet" 25 | ChatlogMode="Chattloggsläge" 26 | ChatlogMode.Lines="Radgräns för chattlogg" 27 | UseCustomExtents="Använd anpassade textmått" 28 | UseCustomExtents.Wrap="Radbryt" 29 | Width="Bredd" 30 | Height="Höjd" 31 | Transform="Textomvandling" 32 | Transform.None="Ingen" 33 | Transform.Uppercase="Versaler" 34 | Transform.Lowercase="Gemener" 35 | Transform.Startcase="Första bokstavens skiftläge" 36 | Antialiasing="Aktivera kantutjämning" 37 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/ta-IN.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="உரை (GDI+)" 2 | Font="எழுத்துரு" 3 | Text="உரை" 4 | ReadFromFile="கோப்பிலிருந்துப் படி" 5 | TextFile="உரை கோப்பு (UTF-8)" 6 | Filter.TextFiles="உரை கோப்புகள்" 7 | Filter.AllFiles="அனைத்து கோப்புகள்" 8 | Color="வண்ணம்" 9 | BkColor="பின்னணி வண்ணம்" 10 | Alignment.Left="இடது" 11 | Alignment.Center="மையம்" 12 | Alignment.Right="வலது" 13 | VerticalAlignment.Top="மேல்" 14 | VerticalAlignment.Bottom="கீழ்" 15 | Width="அகலம்" 16 | Height="உயரம்" 17 | Transform.None="எதுவுமில்லை" 18 | Transform.Uppercase="தலைப்பெழுத்து" 19 | Transform.Lowercase="சிற்றெழுத்து" 20 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/tl-PH.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Teksto (GDI+)" 2 | Font="AngFont" 3 | Text="Teksto" 4 | ReadFromFile="Magbasa mula sa file" 5 | TextFile="Teksto File (UTF-8)" 6 | Filter.TextFiles="Teksto ng mgaFiles" 7 | Filter.AllFiles="Lahat ng mga Files" 8 | Color="Kulay" 9 | Gradient.Color="Gradient na Kulay" 10 | Gradient.Opacity="Gradient na Opacity" 11 | Gradient.Direction="Gradient na Direksyon" 12 | BkColor="Kulay sa Background" 13 | BkOpacity="Backround na Opacity" 14 | Alignment="Amgpagka-align" 15 | Alignment.Left="Kaliwa" 16 | Alignment.Center="Gitna" 17 | Alignment.Right="Kanan" 18 | Vertical="Patayo" 19 | VerticalAlignment="Patayo ang Pagka-align" 20 | VerticalAlignment.Top="Taas" 21 | VerticalAlignment.Bottom="Baba" 22 | Outline="Ang Outline" 23 | Outline.Size="Ang laki ng Outline" 24 | Outline.Color="Ang Kulay ng Outline" 25 | Outline.Opacity="Ang Outline Opacity" 26 | ChatlogMode="Modo ng Chatlog" 27 | ChatlogMode.Lines="Limitasyon ng linya sa Chatlog" 28 | UseCustomExtents="Gumamit ng Custom na Teksto sa Extents" 29 | Width="Ang lapad" 30 | Height="Ang Taas" 31 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/tr-TR.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Metin (GDI+)" 2 | Font="Yazı Tipi" 3 | Text="Metin" 4 | ReadFromFile="Dosyadan oku" 5 | TextFile="Metin Dosyası (UTF-8)" 6 | Filter.TextFiles="Metin Dosyaları" 7 | Filter.AllFiles="Tüm Dosyalar" 8 | Color="Renk" 9 | Opacity="Opaklık" 10 | Gradient="Eğim" 11 | Gradient.Color="Eğim Rengi" 12 | Gradient.Opacity="Eğim Saydamlığı" 13 | Gradient.Direction="Eğim Yönü" 14 | BkColor="Arka Plan Rengi" 15 | BkOpacity="Arkaplan Saydamlığı" 16 | Alignment="Hizalama" 17 | Alignment.Left="Sol" 18 | Alignment.Center="Ortala" 19 | Alignment.Right="Sağ" 20 | Vertical="Dikey" 21 | VerticalAlignment="Dikey Hizalama" 22 | VerticalAlignment.Top="Üst" 23 | VerticalAlignment.Bottom="Alt" 24 | Outline="Anahat" 25 | Outline.Size="Anahat Boyutu" 26 | Outline.Color="Anahat Rengi" 27 | Outline.Opacity="Anahat Saydamlığı" 28 | ChatlogMode="Sohbet Günlük Modu" 29 | ChatlogMode.Lines="Sohbet Günlük Satır Sınırı" 30 | UseCustomExtents="İsteğe Bağlı Metin Boyutu Kullan" 31 | UseCustomExtents.Wrap="Metni Kaydır" 32 | Width="Genişlik" 33 | Height="Yükseklik" 34 | Transform="Metin Dönüşümü" 35 | Transform.None="Yok" 36 | Transform.Uppercase="Büyük harf" 37 | Transform.Lowercase="Küçük harf" 38 | Transform.Startcase="Davayı Başlat" 39 | Antialiasing="Yumuşatmayı Etkinleştir" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/uk-UA.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Текст (GDI+)" 2 | Font="Шрифт" 3 | Text="Текст" 4 | ReadFromFile="Читати з файлу" 5 | TextFile="Текстовий файл (UTF-8)" 6 | Filter.TextFiles="Текстові файли" 7 | Filter.AllFiles="Усі файли" 8 | Color="Колір" 9 | Opacity="Непрозорість" 10 | Gradient="Градієнтна заливка" 11 | Gradient.Color="Колір градієнта" 12 | Gradient.Opacity="Непрозорость градієнта" 13 | Gradient.Direction="Напрямок градієнта (кут)" 14 | BkColor="Колір фону" 15 | BkOpacity="Непрозорість фону" 16 | Alignment="Вирівнювання" 17 | Alignment.Left="Ліворуч" 18 | Alignment.Center="Центр" 19 | Alignment.Right="Праворуч" 20 | Vertical="Вертикально" 21 | VerticalAlignment="Вертикальне вирівнювання" 22 | VerticalAlignment.Top="Вверху" 23 | VerticalAlignment.Bottom="Внизу" 24 | Outline="Контур" 25 | Outline.Size="Розмір контуру" 26 | Outline.Color="Колір контуру" 27 | Outline.Opacity="Непрозорість контуру" 28 | ChatlogMode="Режим чат-журналу" 29 | ChatlogMode.Lines="Кількість рядків чат-журналу" 30 | UseCustomExtents="Використовувати власні розміри текстового блоку" 31 | UseCustomExtents.Wrap="Перенесення тексту" 32 | Width="Ширина" 33 | Height="Висота" 34 | Transform="Перетворення тексту" 35 | Transform.None="Немає" 36 | Transform.Uppercase="До верхнього регістру" 37 | Transform.Lowercase="До нижнього регістру" 38 | Transform.Startcase="Почати звернення" 39 | Antialiasing="Увімкнути згладжування" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/vi-VN.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="Văn bản (GDI+)" 2 | Font="Phông chữ" 3 | Text="Văn bản" 4 | ReadFromFile="Đọc từ tệp" 5 | TextFile="Tập tin văn bản (UTF-8)" 6 | Filter.TextFiles="Tập tin văn bản" 7 | Filter.AllFiles="Tất cả tập tin" 8 | Color="Màu" 9 | Opacity="Độ trong suốt" 10 | Gradient="Chuyển sắc" 11 | Gradient.Color="chao ae" 12 | Gradient.Opacity="Độ mờ đục chuyển sắc" 13 | Gradient.Direction="Hướng chuyển sắc" 14 | BkColor="Màu nền" 15 | BkOpacity="Độ mờ hình nền" 16 | Alignment="Căn chỉnh" 17 | Alignment.Left="Trái" 18 | Alignment.Center="Giữa" 19 | Alignment.Right="Phải" 20 | Vertical="Dọc" 21 | VerticalAlignment="Canh lề theo chiều dọc" 22 | VerticalAlignment.Top="Trên" 23 | VerticalAlignment.Bottom="Dưới" 24 | Outline="Đường viền" 25 | Outline.Size="Cỡ đường viền" 26 | Outline.Color="Màu đường viền" 27 | Outline.Opacity="Độ mờ đường viền" 28 | ChatlogMode="Chế độ nhật ký trò chuyện" 29 | ChatlogMode.Lines="Giới hạn dòng nhật ký trò chuyện" 30 | UseCustomExtents.Wrap="Bọc" 31 | Width="Chiều rộng" 32 | Height="Chiều cao" 33 | Transform="Phép biến đổi văn bản" 34 | Transform.None="Không có" 35 | Transform.Uppercase="Chữ hoa" 36 | Transform.Lowercase="Chữ thường" 37 | Transform.Startcase="Viết hoa chữ đầu" 38 | Antialiasing="Bật khử răng cưa" 39 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/zh-CN.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="文本 (GDI+)" 2 | Font="字体" 3 | Text="文本" 4 | ReadFromFile="从文件读取" 5 | TextFile="文本文件 (UTF-8)" 6 | Filter.TextFiles="文本文件" 7 | Filter.AllFiles="所有文件" 8 | Color="色彩" 9 | Opacity="不透明度" 10 | Gradient="渐变" 11 | Gradient.Color="渐变颜色" 12 | Gradient.Opacity="渐变不透明度" 13 | Gradient.Direction="渐变方向" 14 | BkColor="背景颜色" 15 | BkOpacity="背景不透明度" 16 | Alignment="对齐" 17 | Alignment.Left="靠左对齐" 18 | Alignment.Center="居中" 19 | Alignment.Right="靠右对齐" 20 | Vertical="垂直移动" 21 | VerticalAlignment="垂直对齐" 22 | VerticalAlignment.Top="顶部" 23 | VerticalAlignment.Bottom="底部" 24 | Outline="轮廓" 25 | Outline.Size="轮廓大小" 26 | Outline.Color="轮廓颜色" 27 | Outline.Opacity="轮廓不透明度" 28 | ChatlogMode="聊天模式" 29 | ChatlogMode.Lines="聊天行限制" 30 | UseCustomExtents="使用自定义文本区" 31 | UseCustomExtents.Wrap="自动换行" 32 | Width="宽度" 33 | Height="高度" 34 | Transform="文本转换" 35 | Transform.None="无" 36 | Transform.Uppercase="大写" 37 | Transform.Lowercase="小写" 38 | Transform.Startcase="每词首字母大写" 39 | Antialiasing="启用抗锯齿" 40 | -------------------------------------------------------------------------------- /plugins/OBS/data/obs-plugins/obs-text-sc/locale/zh-TW.ini: -------------------------------------------------------------------------------- 1 | TextGDIPlus="文字 (GDI+)" 2 | Font="字型" 3 | Text="文字" 4 | ReadFromFile="從檔案讀取" 5 | TextFile="文字檔 (UTF-8)" 6 | Filter.TextFiles="文字檔案" 7 | Filter.AllFiles="所有檔案" 8 | Color="顏色" 9 | Opacity="不透明度" 10 | Gradient="漸層" 11 | Gradient.Color="漸層色彩" 12 | Gradient.Opacity="漸層不透明度" 13 | Gradient.Direction="漸層方向" 14 | BkColor="背景顏色" 15 | BkOpacity="背景不透明度" 16 | Alignment="對齊方式" 17 | Alignment.Left="靠左對齊" 18 | Alignment.Center="置中" 19 | Alignment.Right="靠右對齊" 20 | Vertical="垂直" 21 | VerticalAlignment="垂直對齊" 22 | VerticalAlignment.Top="向上對齊" 23 | VerticalAlignment.Bottom="向下對齊" 24 | Outline="外框" 25 | Outline.Size="外框大小" 26 | Outline.Color="外框颜色" 27 | Outline.Opacity="外框不透明度" 28 | ChatlogMode="聊天紀錄模式" 29 | ChatlogMode.Lines="聊天紀錄行數" 30 | UseCustomExtents="使用自動文字區塊大小" 31 | UseCustomExtents.Wrap="自動換行" 32 | Width="寬度" 33 | Height="高度" 34 | Transform="文字變型" 35 | Transform.None="無" 36 | Transform.Uppercase="大寫" 37 | Transform.Lowercase="小寫" 38 | Transform.Startcase="起始大小寫" 39 | Antialiasing="啟用反鋸齒" 40 | -------------------------------------------------------------------------------- /plugins/OBS/obs-plugins/32bit/obs-text-sc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/OBS/obs-plugins/32bit/obs-text-sc.dll -------------------------------------------------------------------------------- /plugins/OBS/obs-plugins/64bit/obs-text-sc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/OBS/obs-plugins/64bit/obs-text-sc.dll -------------------------------------------------------------------------------- /plugins/OsuMapLoader/BeatmapLoadFailedException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OsuSongsFolderWatcher 4 | { 5 | internal class BeatmapLoadFailedException : Exception { } 6 | } -------------------------------------------------------------------------------- /plugins/OsuMapLoader/LazerNullReferenceException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OsuSongsFolderWatcher 4 | { 5 | public class LazerNullReferenceException : NullReferenceException 6 | { 7 | public LazerNullReferenceException(string message) : base(message) 8 | { 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /plugins/OsuMapLoader/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/OsuMemoryEventSource/Extensions/ScPlayerScore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using CollectionManager.Enums; 3 | using OsuMemoryDataProvider.OsuMemoryModels.Abstract; 4 | 5 | namespace OsuMemoryEventSource.Extensions 6 | { 7 | public class ScPlayerScore 8 | { 9 | private readonly PlayerScore _playerScore; 10 | public string Username => _playerScore.Username; 11 | public int ModsEnum => _playerScore.Mods.Value; 12 | public int Mode => _playerScore.Mode; 13 | public ushort MaxCombo => _playerScore.MaxCombo; 14 | public virtual int Score => _playerScore.Score; 15 | public ushort Hit100 => _playerScore.Hit100; 16 | public ushort Hit300 => _playerScore.Hit300; 17 | public ushort Hit50 => _playerScore.Hit50; 18 | public ushort HitGeki => _playerScore.HitGeki; 19 | public ushort HitKatu => _playerScore.HitKatu; 20 | public ushort HitMiss => _playerScore.HitMiss; 21 | public DateTime Date => _playerScore.Date; 22 | public int? UserId => _playerScore.UserId; 23 | 24 | public double Accuracy { get; set; } 25 | public string Mods { get; set; } 26 | public OsuGrade Grade { get; set; } 27 | 28 | public ScPlayerScore(PlayerScore playerScore) 29 | { 30 | _playerScore = playerScore; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /plugins/OsuMemoryEventSource/LiveTokens/BaseLiveToken.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StreamCompanionTypes.DataTypes; 3 | using StreamCompanionTypes.Enums; 4 | 5 | namespace OsuMemoryEventSource.LiveTokens 6 | { 7 | public abstract class BaseLiveToken 8 | { 9 | public IToken Token { get; set; } 10 | public Func Updater; 11 | public BaseLiveToken(IToken token, Func updater) 12 | { 13 | Token = token; 14 | Updater = updater; 15 | } 16 | 17 | protected bool CanUpdate(OsuStatus status) => Token.CanSave(status) && Updater != null; 18 | public abstract void Update(OsuStatus status = OsuStatus.All); 19 | } 20 | } -------------------------------------------------------------------------------- /plugins/OsuMemoryEventSource/LiveTokens/LazyLiveToken.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StreamCompanionTypes.DataTypes; 3 | using StreamCompanionTypes.Enums; 4 | 5 | namespace OsuMemoryEventSource.LiveTokens 6 | { 7 | public class LazyLiveToken : BaseLiveToken 8 | { 9 | private readonly LazyToken lazyToken; 10 | 11 | public LazyLiveToken(IToken token, Func updater) : base(token, updater) 12 | { 13 | lazyToken = (LazyToken) token; 14 | } 15 | 16 | public override void Update(OsuStatus status = OsuStatus.All) 17 | { 18 | if (!Token.CanSave(status) || Updater == null) 19 | { 20 | lazyToken.Reset(); 21 | return; 22 | } 23 | 24 | if (lazyToken.IsValueCreated) 25 | Token.Value = new Lazy(Updater); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /plugins/OsuMemoryEventSource/LiveTokens/LiveToken.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using StreamCompanionTypes.DataTypes; 3 | using StreamCompanionTypes.Enums; 4 | 5 | namespace OsuMemoryEventSource.LiveTokens 6 | { 7 | public class LiveToken : BaseLiveToken 8 | { 9 | public LiveToken(IToken token, Func updater) : base(token, updater) 10 | { 11 | } 12 | 13 | public override void Update(OsuStatus status = OsuStatus.All) 14 | { 15 | if (!CanUpdate(status)) 16 | { 17 | Token.Reset(); 18 | return; 19 | } 20 | 21 | Token.Value = Updater(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /plugins/OsuMemoryEventSource/MemoryDataFinderSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using StreamCompanionTypes; 4 | using StreamCompanionTypes.Interfaces.Services; 5 | 6 | namespace OsuMemoryEventSource 7 | { 8 | public partial class MemoryDataFinderSettings : UserControl 9 | { 10 | private readonly SettingNames _names = SettingNames.Instance; 11 | 12 | private readonly ISettings _settings; 13 | private bool init = true; 14 | public MemoryDataFinderSettings(ISettings settings) 15 | { 16 | InitializeComponent(); 17 | 18 | _settings = settings; 19 | 20 | checkBox_enableSmoothPp.Checked = _settings.Get(Helpers.EnablePpSmoothing); 21 | checkBox_saveLiveTokensToDisk.Checked = _settings.Get(OsuMemoryEventSourceBase.SaveLiveTokensOnDisk); 22 | 23 | init = false; 24 | } 25 | 26 | private void checkBox_enableSmoothPp_CheckedChanged(object sender, EventArgs e) 27 | { 28 | if (init) return; 29 | _settings.Add(Helpers.EnablePpSmoothing.Name, checkBox_enableSmoothPp.Checked, true); 30 | } 31 | 32 | private void checkBox_saveLiveTokensToDisk_CheckedChanged(object sender, EventArgs e) 33 | { 34 | if (init) return; 35 | _settings.Add(OsuMemoryEventSourceBase.SaveLiveTokensOnDisk.Name, checkBox_saveLiveTokensToDisk.Checked, true); 36 | } 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /plugins/OsuMemoryEventSource/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /plugins/PlaysReplacements/PlaysReplacements.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0 4 | Library 5 | false 6 | false 7 | false 8 | true 9 | 10 | 11 | ..\..\build\Debug\Plugins\ 12 | 13 | 14 | ..\..\build\Release\Plugins\ 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /plugins/PlaysReplacements/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/ScGui/AboutForm.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using StreamCompanion.Common; 3 | 4 | namespace ScGui 5 | { 6 | public partial class AboutForm : Form 7 | { 8 | public AboutForm() 9 | { 10 | InitializeComponent(); 11 | this.pictureBox1.Image = Helpers.GetStreamCompanionLogo(); 12 | richTextBox1.Text = @"This software is licensed under MIT. You can find the full text of the license inside this link: 13 | https://github.com/Piotrekol/StreamCompanion/blob/master/LICENSE 14 | StreamCompanion is written by Piotrekol 15 | https://github.com/Piotrekol 16 | https://osu.ppy.sh/u/Piotrekol 17 | https://twitch.tv/Piotrekol 18 | Libraries used: 19 | CollectionManager by Piotrekol 20 | SQLite 21 | Newtonsoft.Json by JamesNK 22 | 23 | FreeType by David Turner, Robert Wilhelm, and Werner Lemberg 24 | FreeType license is avaliable at http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT"; 25 | richTextBox1.ReadOnly = true; 26 | } 27 | 28 | private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e) 29 | { 30 | ProcessExt.OpenUrl(e.LinkText); 31 | } 32 | 33 | private void pictureBox2_Click(object sender, System.EventArgs e) 34 | { 35 | ProcessExt.OpenUrl(@"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=CX2ZC3JKVAK74"); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /plugins/ScGui/Comfortaa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ScGui/Comfortaa.ttf -------------------------------------------------------------------------------- /plugins/ScGui/Helpers.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | 4 | namespace ScGui 5 | { 6 | public static class Helpers 7 | { 8 | public static Bitmap GetStreamCompanionLogo() 9 | { 10 | if (!OperatingSystem.IsWindows()) 11 | return null; 12 | 13 | return new Bitmap( 14 | System.Reflection.Assembly.GetEntryAssembly(). 15 | GetManifestResourceStream("osu_StreamCompanion.Resources.logo_256x256.png")); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /plugins/ScGui/Resources/btn_donate_92x26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Piotrekol/StreamCompanion/9f7a907ba66dfbbf3e045ae0e5e9ec3db32e01a8/plugins/ScGui/Resources/btn_donate_92x26.png -------------------------------------------------------------------------------- /plugins/ScGui/ScGui.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2035 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScGui", "ScGui.csproj", "{4FAB5F27-FF28-4A41-BDD7-1BFF4D0DC71E}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {4FAB5F27-FF28-4A41-BDD7-1BFF4D0DC71E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {4FAB5F27-FF28-4A41-BDD7-1BFF4D0DC71E}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {4FAB5F27-FF28-4A41-BDD7-1BFF4D0DC71E}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {4FAB5F27-FF28-4A41-BDD7-1BFF4D0DC71E}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {C1A27042-C9C1-42D5-B152-9D7854247D73} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /plugins/ScGui/ScGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Data; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using StreamCompanionTypes.Interfaces.Services; 11 | 12 | namespace ScGui 13 | { 14 | public partial class ScGuiSettings : UserControl 15 | { 16 | private readonly ISettings _settings; 17 | 18 | public ScGuiSettings(ISettings settings) 19 | { 20 | InitializeComponent(); 21 | _settings = settings; 22 | 23 | this.comboBox_Theme.DataSource = new[] { "System default", "Light", "Dark"}; 24 | this.comboBox_Theme.SelectedItem = _settings.Get(MainWindowPlugin.Theme); 25 | this.comboBox_Theme.SelectedValueChanged += (_, __) => 26 | _settings.Add(MainWindowPlugin.Theme.Name, comboBox_Theme.SelectedItem.ToString(), true); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /plugins/ScGui/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /plugins/ScGui/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/ScGui/themes/dark.xaml: -------------------------------------------------------------------------------- 1 |  5 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/ScGui/themes/light.xaml: -------------------------------------------------------------------------------- 1 |  5 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/TcpSocketDataSender/BinaryRetryBlocker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace TcpSocketDataSender 4 | { 5 | public class BinaryRetryBlocker : RetryBlocker 6 | { 7 | private readonly int _slotTime; 8 | public int MaxBlockTimeInSeconds { get; private set; } 9 | 10 | public BinaryRetryBlocker(int maxBlockTimeInSeconds = 2 * 60, int slotTime = 1) 11 | { 12 | _slotTime = slotTime; 13 | MaxBlockTimeInSeconds = maxBlockTimeInSeconds; 14 | } 15 | 16 | protected override int BackOffAlgorithm(int failedAttemptsInARow) 17 | { 18 | var slots = Math.Pow(2, failedAttemptsInARow) - 1; 19 | 20 | var blockTime = (int)(slots * _slotTime); 21 | 22 | return blockTime > MaxBlockTimeInSeconds 23 | ? MaxBlockTimeInSeconds 24 | : blockTime; 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /plugins/TcpSocketDataSender/BlockedTcpSocketManager.cs: -------------------------------------------------------------------------------- 1 | namespace TcpSocketDataSender 2 | { 3 | public class BlockedTcpSocketManager : TcpSocketManager 4 | { 5 | BinaryRetryBlocker _blocker = new BinaryRetryBlocker(); 6 | 7 | 8 | public override bool Connect() 9 | { 10 | return _blocker.Execute(base.Connect); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /plugins/TcpSocketDataSender/RetryBlocker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace TcpSocketDataSender 4 | { 5 | public abstract class RetryBlocker 6 | { 7 | public int FailedAttempts { get; private set; } = 0; 8 | private DateTime NextAllowedAttempt { get; set; } = DateTime.UtcNow; 9 | 10 | public bool CanRetry => DateTime.UtcNow >= NextAllowedAttempt; 11 | 12 | public void AddFailedAttempt() 13 | { 14 | if (!CanRetry) 15 | return; 16 | 17 | var blockTime = BackOffAlgorithm(FailedAttempts++); 18 | 19 | FailedAttempts = FailedAttempts < 25 ? FailedAttempts : 25; 20 | 21 | NextAllowedAttempt = DateTime.UtcNow.AddSeconds(blockTime); 22 | } 23 | 24 | public void CompletedSuccessfully() 25 | { 26 | FailedAttempts = 0; 27 | NextAllowedAttempt = DateTime.UtcNow; 28 | } 29 | 30 | public bool Execute(Func func) 31 | { 32 | if (!CanRetry) 33 | return false; 34 | 35 | var result = func(); 36 | 37 | if (result) 38 | { 39 | CompletedSuccessfully(); 40 | } 41 | else 42 | { 43 | AddFailedAttempt(); 44 | } 45 | 46 | return result; 47 | } 48 | protected abstract int BackOffAlgorithm(int failedAttemptsInARow); 49 | } 50 | } -------------------------------------------------------------------------------- /plugins/TcpSocketDataSender/TcpSocketDataSender.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-windows 4 | Library 5 | false 6 | true 7 | false 8 | false 9 | true 10 | 11 | 12 | ..\..\build\Debug\Plugins\ 13 | 14 | 15 | ..\..\build\Release\Plugins\ 16 | 17 | 18 | 19 | UserControl 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /plugins/TcpSocketDataSender/TcpSocketSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using StreamCompanionTypes; 4 | using StreamCompanionTypes.Interfaces; 5 | using StreamCompanionTypes.Interfaces.Services; 6 | 7 | namespace TcpSocketDataSender 8 | { 9 | public partial class TcpSocketSettings : UserControl 10 | { 11 | private readonly ISettings _settings; 12 | private readonly SettingNames _names = SettingNames.Instance; 13 | 14 | public TcpSocketSettings(ISettings settings) 15 | { 16 | _settings = settings; 17 | InitializeComponent(); 18 | checkBox_EnableTcpOutput.Checked = _settings.Get(_names.tcpSocketEnabled); 19 | 20 | 21 | checkBox_EnableTcpOutput.CheckedChanged += checkBox_EnableTcpOutput_CheckedChanged; 22 | 23 | } 24 | 25 | private void checkBox_EnableTcpOutput_CheckedChanged(object sender, EventArgs e) 26 | { 27 | _settings.Add(_names.tcpSocketEnabled.Name, checkBox_EnableTcpOutput.Checked, true); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /plugins/TcpSocketDataSender/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /plugins/TestPlugin/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using StreamCompanionTypes.Attributes; 2 | global using StreamCompanionTypes.DataTypes; 3 | global using StreamCompanionTypes.Enums; 4 | global using StreamCompanionTypes.Interfaces; 5 | global using StreamCompanionTypes.Interfaces.Consumers; 6 | global using StreamCompanionTypes.Interfaces.Services; 7 | global using StreamCompanionTypes.Interfaces.Sources; 8 | global using CollectionManager.Enums; 9 | global using Mods = CollectionManager.DataTypes.Mods; 10 | -------------------------------------------------------------------------------- /plugins/TestPlugin/TestPlugin.cs: -------------------------------------------------------------------------------- 1 | using StreamCompanion.Common; 2 | 3 | namespace TestPlugin; 4 | 5 | [SCPluginDependency("OsuMemoryEventSource", "1.0.0")] 6 | [SCPlugin("Test plugin", "Plugin for testing..", "TEST", null)] 7 | public class TestPlugin : IPlugin 8 | { 9 | public TestPlugin(ILogger logger) 10 | { 11 | logger.Log("Hi", LogLevel.Information); 12 | var tokenSetter = Tokens.CreateTokenSetter("Test Plugin"); 13 | _ = Task.Run(async () => 14 | { 15 | var testToken = tokenSetter("test", "test", TokenType.Live | TokenType.Hidden); 16 | 17 | await testToken.ConvertToLiveToken(() => "updated test", CancellationToken.None); 18 | }); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /plugins/TestPlugin/TestPlugin.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | enable 5 | enable 6 | 7 | 8 | ..\..\build\Debug\Plugins\ 9 | 10 | 11 | ..\..\build\Release\Plugins\ 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/ISCWebModule.cs: -------------------------------------------------------------------------------- 1 | using EmbedIO; 2 | using System.Collections.Generic; 3 | 4 | namespace WebSocketDataSender 5 | { 6 | public interface ISCWebModule 7 | { 8 | List<(string Description, IWebModule module)> GetModules(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/LockingQueue.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace WebSocketDataSender 4 | { 5 | internal class LockingQueue 6 | { 7 | protected Queue queue = new Queue(); 8 | private readonly object syncRoot = new(); 9 | 10 | public int Count { get { lock (syncRoot) return queue.Count; } } 11 | 12 | public bool TryPeek(out T value) 13 | { 14 | lock (syncRoot) 15 | return queue.TryPeek(out value); 16 | } 17 | 18 | public bool TryDequeue(out T value) 19 | { 20 | lock (syncRoot) 21 | return queue.TryDequeue(out value); 22 | } 23 | 24 | public void Enqueue(T value) 25 | { 26 | lock (syncRoot) 27 | queue.Enqueue(value); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/NetExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Net; 2 | using System.Net.Sockets; 3 | 4 | namespace WebSocketDataSender 5 | { 6 | public class NetExtensions 7 | { 8 | public static string GetLanAddress() 9 | { 10 | using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0)) 11 | { 12 | socket.Connect("8.8.8.8", 65030); 13 | IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint; 14 | return endPoint?.Address.ToString(); 15 | } 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/WebOverlay/ColorHelpers.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using StreamCompanionTypes.DataTypes; 6 | using StreamCompanionTypes.Interfaces.Services; 7 | 8 | namespace WebSocketDataSender.WebOverlay 9 | { 10 | internal static class ColorHelpers 11 | { 12 | public static string GetArgbColor(ISettings settings, ConfigEntry entry) 13 | => string.Join("", GetArgbColorList(settings, entry).Select(n => n.ToString("X2"))); 14 | 15 | public static List GetArgbColorList(ISettings settings, ConfigEntry entry) 16 | => settings.Get(entry).Split(new[] { ';' }, 4).Select(v => int.TryParse(v, out int num) ? num : 0).ToList(); 17 | 18 | public static Color GetColor(ISettings settings, ConfigEntry entry) 19 | { 20 | var argb = GetArgbColorList(settings, entry); 21 | 22 | return Color.FromArgb(argb[0], argb[1], argb[2], argb[3]); 23 | } 24 | 25 | public static void SaveColor(ISettings settings, ConfigEntry entry, Color color) 26 | { 27 | var colors = BitConverter.GetBytes(color.ToArgb()) 28 | .Reverse() 29 | .ToList(); 30 | 31 | settings.Add(entry.Name, string.Join(";", colors.Select(v => v.ToString())), true); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/WebOverlay/MathExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebSocketDataSender.WebOverlay 4 | { 5 | public static class MathExtensions 6 | { 7 | public static T Clamp(this T val, T min, T max) where T : IComparable 8 | { 9 | if (val.CompareTo(min) < 0) return min; 10 | else if (val.CompareTo(max) > 0) return max; 11 | else return val; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/WebOverlay/Models/IOverlayConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Drawing; 3 | 4 | namespace WebSocketDataSender.WebOverlay.Models 5 | { 6 | public interface IOverlayConfiguration : INotifyPropertyChanged 7 | { 8 | bool SimulatePPWhenListening { get; set; } 9 | bool HideDiffText { get; set; } 10 | bool HideMapStats { get; set; } 11 | bool HideChartLegend { get; set; } 12 | string Font { get; set; } 13 | double ChartHeight { get; set; } 14 | 15 | Color ChartColor { get; set; } 16 | Color ChartProgressColor { get; set; } 17 | Color BackgroundColor { get; set; } 18 | Color ImageDimColor { get; set; } 19 | Color TitleTextColor { get; set; } 20 | Color ArtistTextColor { get; set; } 21 | Color PpBackgroundColor { get; set; } 22 | Color Hit100BackgroundColor { get; set; } 23 | Color Hit50BackgroundColor { get; set; } 24 | Color HitMissBackgroundColor { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/WebSocketOutputPatternsEndpoint.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace WebSocketDataSender 4 | { 5 | public class WebSocketOutputPatternsEndpoint : WebSocketKeyValueEndpoint 6 | { 7 | public WebSocketOutputPatternsEndpoint(string urlPath, bool enableConnectionWatchdog, IDictionary keyValues) : base(urlPath, enableConnectionWatchdog, keyValues) 8 | { 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /plugins/WebSocketDataSender/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /plugins/X32ProcessHelper/Directory.Packages.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 5 | -------------------------------------------------------------------------------- /plugins/X32ProcessHelper/X32ProcessHelper.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /plugins/X32ProcessHelper/main.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | using namespace std; 7 | 8 | int main(int argc, char** argv); 9 | int PrintModules(DWORD processID); 10 | 11 | int main(int argc, char** argv) 12 | { 13 | if (argc < 2) 14 | { 15 | cout << "Missing arguments" << endl; 16 | return -1; 17 | } 18 | 19 | if (strcmp("modules", argv[1]) == 0) { 20 | PrintModules(strtoul(argv[2], NULL, 10)); 21 | } 22 | else if (strcmp("proc", argv[1]) == 0) { 23 | cout << GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), argv[2]) << endl; 24 | } 25 | } 26 | 27 | int PrintModules(DWORD processID) 28 | { 29 | HMODULE hMods[1024]; 30 | HANDLE hProcess; 31 | DWORD cbNeeded; 32 | unsigned int i; 33 | 34 | hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | 35 | PROCESS_VM_READ, 36 | FALSE, processID); 37 | if (NULL == hProcess) 38 | return 1; 39 | 40 | if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)) 41 | { 42 | for (i = 0; i < (cbNeeded / sizeof(HMODULE)); i++) 43 | { 44 | TCHAR szModName[MAX_PATH]; 45 | if (GetModuleFileNameEx(hProcess, hMods[i], szModName, 46 | sizeof(szModName) / sizeof(TCHAR))) 47 | { 48 | wcout << szModName << endl; 49 | } 50 | } 51 | } 52 | 53 | CloseHandle(hProcess); 54 | return 0; 55 | } -------------------------------------------------------------------------------- /plugins/osuPost/osuPost.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2035 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osuPost", "osuPost.csproj", "{909409E5-7DED-43FC-95D7-913C7576E91C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {909409E5-7DED-43FC-95D7-913C7576E91C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {909409E5-7DED-43FC-95D7-913C7576E91C}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {909409E5-7DED-43FC-95D7-913C7576E91C}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {909409E5-7DED-43FC-95D7-913C7576E91C}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {2B37E7A2-B01D-46FC-9218-6E9C3981F70B} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /plugins/osuPost/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /submodules/Directory.Packages.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 5 | --------------------------------------------------------------------------------