From ecdf75ae3ad5baa49ccec639bf82e4fc5e71a1c5 Mon Sep 17 00:00:00 2001 From: Patrick Magee Date: Sun, 16 Jun 2024 04:07:39 +0100 Subject: [PATCH] Dagger and cleanup --- .github/workflows/build.yaml | 21 +++++ .github/workflows/release.yaml | 24 +++++ README.md | 38 ++++++-- dagger.json | 16 ++++ dagger/.gitattributes | 4 + dagger/.gitignore | 4 + dagger/go.mod | 40 ++++++++ dagger/go.sum | 87 +++++++++++++++++ dagger/main.go | 89 ++++++++++++++++++ .../Directory.Build.props | 0 .../Dota2Helper.Desktop.csproj | 9 +- .../Dota2Helper.Desktop}/Program.cs | 4 +- .../Properties/launchSettings.json | 0 .../Dota2Helper.Desktop}/app.manifest | 0 .../Dota2Helper.Desktop}/appsettings.json | 0 .../Dota2Helper.Desktop}/dota2_helper.ico | Bin Dota2Helper.sln => src/Dota2Helper.sln | 0 {Dota2Helper => src/Dota2Helper}/App.axaml | 0 {Dota2Helper => src/Dota2Helper}/App.axaml.cs | 35 +++---- .../Dota2Helper}/Assets/dota2_helper.ico | Bin .../Dota2Helper}/Core/Audio/AudioPlayer.cs | 0 .../Core/Audio/AudioPlayerService.cs | 0 .../Dota2Helper}/Core/Audio/AudioQueueItem.cs | 0 .../Core/Configuration/Settings.cs | 0 .../Core/Configuration/TimerOptions.cs | 0 .../Dota2Helper}/Core/Framework/DesignData.cs | 0 .../Core/Framework/ViewLocator.cs | 0 .../Core/Framework/ViewLocatorHelpers.cs | 0 .../Dota2Helper}/Core/Gsi/GameState.cs | 0 .../Dota2Helper}/Core/Gsi/GameStateHolder.cs | 0 .../Dota2Helper}/Core/Gsi/GameStateUpdater.cs | 5 +- .../Dota2Helper}/Core/Gsi/Map.cs | 0 .../Core/Listeners}/DotaListener.cs | 2 +- .../Core/Listeners/DynamicListenerStrategy.cs | 27 ++++++ .../Core/Listeners}/FakeDotaListener.cs | 3 +- .../Core/Listeners}/IDotaListener.cs | 3 +- .../Core/Listeners/IListenerStrategy.cs | 6 ++ .../Dota2Helper}/Core/Timers/DotaTimer.cs | 0 .../Dota2Helper}/Core/Timers/DotaTimers.cs | 0 .../Dota2Helper}/Dota2Helper.csproj | 2 +- {Dota2Helper => src/Dota2Helper}/Icons.axaml | 0 .../ViewModels/MainWindowViewModel.cs | 2 +- .../ViewModels/SettingsViewModel.cs | 0 .../ViewModels/TimersViewModel.cs | 0 .../Dota2Helper}/ViewModels/ViewModelBase.cs | 0 .../Dota2Helper}/Views/MainWindow.axaml | 0 .../Dota2Helper}/Views/MainWindow.axaml.cs | 0 .../Dota2Helper}/Views/SettingsView.axaml | 0 .../Dota2Helper}/Views/SettingsView.axaml.cs | 0 .../Dota2Helper}/Views/TimersView.axaml | 8 +- .../Dota2Helper}/Views/TimersView.axaml.cs | 0 .../Dota2Helper}/audio/Aegis.mp3 | Bin .../Dota2Helper}/audio/Bounty.mp3 | Bin .../Dota2Helper}/audio/Catapult.mp3 | Bin .../Dota2Helper}/audio/Lotus.mp3 | Bin .../Dota2Helper}/audio/Power.mp3 | Bin .../Dota2Helper}/audio/Roshan.mp3 | Bin .../Dota2Helper}/audio/Stack.mp3 | Bin .../Dota2Helper}/audio/Tormentor.mp3 | Bin .../Dota2Helper}/audio/Wisdom.mp3 | Bin global.json => src/global.json | 0 61 files changed, 382 insertions(+), 47 deletions(-) create mode 100644 .github/workflows/build.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 dagger.json create mode 100644 dagger/.gitattributes create mode 100644 dagger/.gitignore create mode 100644 dagger/go.mod create mode 100644 dagger/go.sum create mode 100644 dagger/main.go rename Directory.Build.props => src/Directory.Build.props (100%) rename {Dota2Helper.Desktop => src/Dota2Helper.Desktop}/Dota2Helper.Desktop.csproj (67%) rename {Dota2Helper.Desktop => src/Dota2Helper.Desktop}/Program.cs (83%) rename {Dota2Helper.Desktop => src/Dota2Helper.Desktop}/Properties/launchSettings.json (100%) rename {Dota2Helper.Desktop => src/Dota2Helper.Desktop}/app.manifest (100%) rename {Dota2Helper.Desktop => src/Dota2Helper.Desktop}/appsettings.json (100%) rename {Dota2Helper.Desktop => src/Dota2Helper.Desktop}/dota2_helper.ico (100%) rename Dota2Helper.sln => src/Dota2Helper.sln (100%) rename {Dota2Helper => src/Dota2Helper}/App.axaml (100%) rename {Dota2Helper => src/Dota2Helper}/App.axaml.cs (78%) rename {Dota2Helper => src/Dota2Helper}/Assets/dota2_helper.ico (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Audio/AudioPlayer.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Audio/AudioPlayerService.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Audio/AudioQueueItem.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Configuration/Settings.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Configuration/TimerOptions.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Framework/DesignData.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Framework/ViewLocator.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Framework/ViewLocatorHelpers.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Gsi/GameState.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Gsi/GameStateHolder.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Gsi/GameStateUpdater.cs (77%) rename {Dota2Helper => src/Dota2Helper}/Core/Gsi/Map.cs (100%) rename {Dota2Helper/Core => src/Dota2Helper/Core/Listeners}/DotaListener.cs (96%) create mode 100644 src/Dota2Helper/Core/Listeners/DynamicListenerStrategy.cs rename {Dota2Helper/Core/Gsi => src/Dota2Helper/Core/Listeners}/FakeDotaListener.cs (94%) rename {Dota2Helper/Core/Gsi => src/Dota2Helper/Core/Listeners}/IDotaListener.cs (67%) create mode 100644 src/Dota2Helper/Core/Listeners/IListenerStrategy.cs rename {Dota2Helper => src/Dota2Helper}/Core/Timers/DotaTimer.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Core/Timers/DotaTimers.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Dota2Helper.csproj (94%) rename {Dota2Helper => src/Dota2Helper}/Icons.axaml (100%) rename {Dota2Helper => src/Dota2Helper}/ViewModels/MainWindowViewModel.cs (95%) rename {Dota2Helper => src/Dota2Helper}/ViewModels/SettingsViewModel.cs (100%) rename {Dota2Helper => src/Dota2Helper}/ViewModels/TimersViewModel.cs (100%) rename {Dota2Helper => src/Dota2Helper}/ViewModels/ViewModelBase.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Views/MainWindow.axaml (100%) rename {Dota2Helper => src/Dota2Helper}/Views/MainWindow.axaml.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Views/SettingsView.axaml (100%) rename {Dota2Helper => src/Dota2Helper}/Views/SettingsView.axaml.cs (100%) rename {Dota2Helper => src/Dota2Helper}/Views/TimersView.axaml (94%) rename {Dota2Helper => src/Dota2Helper}/Views/TimersView.axaml.cs (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Aegis.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Bounty.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Catapult.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Lotus.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Power.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Roshan.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Stack.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Tormentor.mp3 (100%) rename {Dota2Helper => src/Dota2Helper}/audio/Wisdom.mp3 (100%) rename global.json => src/global.json (100%) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..15ab215 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,21 @@ +name: Dota2 Helper Build +on: + push: + branches: + - '**' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Build Project with Dagger + uses: dagger/dagger-for-github@v5.6.0 + with: + version: "latest" + verb: call + args: build --directory=./src + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..6736025 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,24 @@ +name: Dota2 Helper Release + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Build .NET Example + uses: dagger/dagger-for-github@v5.6.0 + with: + version: "latest" + verb: call + args: release --directory=./src --tag=env:TAG --token=env:GITHUB_TOKEN + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG: ${{ github.ref_name }} \ No newline at end of file diff --git a/README.md b/README.md index ff1085d..6390d1e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,27 @@ -# Game State Integration +# Dota 2 Helper -Go to `..\steamapps\common\dota 2 beta\game\dota\cfg\gamestate_integration` and add the following file: +An objective timer tracker with audio notifications for Dota 2. This application is designed to help players keep track of important in-game events such as stacking, power runes, bounty runes, and more. The application is designed to be used in conjunction with the Game State Integration feature of Dota 2. + +## Platform + +Only Windows is supported at this time. + +## Features + +- Customisable timers +- Audio notifications +- Dark and light mode +- On top UI +- Manual reset for random spawns +- Advanced settings + +## Game State Integration + +Go to `..\steamapps\common\dota 2 beta\game\dota\cfg\gamestate_integration` and add the following file: `gamestate_integration_timers.cfg` -``` +```plaintext "Dota 2 Integration Configuration" { "uri" "http://localhost:4001/" @@ -24,11 +41,11 @@ Go to `..\steamapps\common\dota 2 beta\game\dota\cfg\gamestate_integration` and } ``` -# Run +## Run Run the `Dota2Helper.Desktop.exe` -# Settings +## Settings - Customise notifications with mute feature - Customise the timer configuration @@ -38,13 +55,14 @@ Run the `Dota2Helper.Desktop.exe` - UI is fixed as 'On top' meaning you can place this over your game when running in Windows full screen mode - Additional advanced configuration is possible with the `appsettings.json` -# Advanced settings +## Advanced settings Labels, removal of UI elements, intervals, starting times, and audio has additional customisation for advanced users +
appsettings.json - + ```json { "DotaTimers": [ @@ -135,7 +153,7 @@ Labels, removal of UI elements, intervals, starting times, and audio has additio
-# UI Demo +## UI Demo -image -image +![image](https://github.com/pjmagee/dota2-helper/assets/292720/f62d6d28-0f5a-4162-9035-28d86c620eb5) +![image](https://github.com/pjmagee/dota2-helper/assets/292720/01e036ee-f454-49d1-83d9-fb2fd6b6799d) diff --git a/dagger.json b/dagger.json new file mode 100644 index 0000000..a40db2e --- /dev/null +++ b/dagger.json @@ -0,0 +1,16 @@ +{ + "name": "Dota2Helper", + "sdk": "go", + "dependencies": [ + { + "name": "arc", + "source": "github.com/sagikazarmark/daggerverse/arc@b45dbd7448bb967aca4a538af9ce7f042abf0316" + }, + { + "name": "gh", + "source": "github.com/sagikazarmark/daggerverse/gh@b45dbd7448bb967aca4a538af9ce7f042abf0316" + } + ], + "source": "dagger", + "engineVersion": "v0.11.7" +} diff --git a/dagger/.gitattributes b/dagger/.gitattributes new file mode 100644 index 0000000..3a45493 --- /dev/null +++ b/dagger/.gitattributes @@ -0,0 +1,4 @@ +/dagger.gen.go linguist-generated +/internal/dagger/** linguist-generated +/internal/querybuilder/** linguist-generated +/internal/telemetry/** linguist-generated diff --git a/dagger/.gitignore b/dagger/.gitignore new file mode 100644 index 0000000..7ebabcc --- /dev/null +++ b/dagger/.gitignore @@ -0,0 +1,4 @@ +/dagger.gen.go +/internal/dagger +/internal/querybuilder +/internal/telemetry diff --git a/dagger/go.mod b/dagger/go.mod new file mode 100644 index 0000000..d8b492c --- /dev/null +++ b/dagger/go.mod @@ -0,0 +1,40 @@ +module dagger/dota-2-helper + +go 1.22.3 + +require ( + github.com/99designs/gqlgen v0.17.44 + github.com/Khan/genqlient v0.7.0 + github.com/vektah/gqlparser/v2 v2.5.11 + go.opentelemetry.io/otel v1.26.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.26.0 + go.opentelemetry.io/otel/sdk v1.26.0 + go.opentelemetry.io/otel/trace v1.26.0 + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa + golang.org/x/sync v0.7.0 + google.golang.org/grpc v1.64.0 +) + +require ( + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/sosodev/duration v1.2.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.2.0-alpha + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 // indirect + go.opentelemetry.io/otel/log v0.2.0-alpha + go.opentelemetry.io/otel/metric v1.26.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.2.0-alpha + go.opentelemetry.io/proto/otlp v1.2.0 + golang.org/x/net v0.25.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240515191416-fc5f0ca64291 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 // indirect + google.golang.org/protobuf v1.34.1 // indirect +) diff --git a/dagger/go.sum b/dagger/go.sum new file mode 100644 index 0000000..3c614bc --- /dev/null +++ b/dagger/go.sum @@ -0,0 +1,87 @@ +github.com/99designs/gqlgen v0.17.44 h1:OS2wLk/67Y+vXM75XHbwRnNYJcbuJd4OBL76RX3NQQA= +github.com/99designs/gqlgen v0.17.44/go.mod h1:UTCu3xpK2mLI5qcMNw+HKDiEL77it/1XtAjisC4sLwM= +github.com/Khan/genqlient v0.7.0 h1:GZ1meyRnzcDTK48EjqB8t3bcfYvHArCUUvgOwpz1D4w= +github.com/Khan/genqlient v0.7.0/go.mod h1:HNyy3wZvuYwmW3Y7mkoQLZsa/R5n5yIRajS1kPBvSFM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= +github.com/sosodev/duration v1.2.0 h1:pqK/FLSjsAADWY74SyWDCjOcd5l7H8GSnnOGEB9A1Us= +github.com/sosodev/duration v1.2.0/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/vektah/gqlparser/v2 v2.5.11 h1:JJxLtXIoN7+3x6MBdtIP59TP1RANnY7pXOaDnADQSf8= +github.com/vektah/gqlparser/v2 v2.5.11/go.mod h1:1rCcfwB2ekJofmluGWXMSEnPMZgbxzwj6FaZ/4OT8Cc= +go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88 h1:oM0GTNKGlc5qHctWeIGTVyda4iFFalOzMZ3Ehj5rwB4= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88/go.mod h1:JGG8ebaMO5nXOPnvKEl+DiA4MGwFjCbjsxT1WHIEBPY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.2.0-alpha h1:z2s6Zba+OUyayRv5m1AXWNUTGh57K1iMhy6emU5QT5Y= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.2.0-alpha/go.mod h1:paOXXyUgPW6jYxYkP0pB47H2zHE1fPvMJ4E4G9LHOi0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 h1:1u/AyyOqAWzy+SkPxDpahCNZParHV8Vid1RnI2clyDE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0/go.mod h1:z46paqbJ9l7c9fIPCXTqTGwhQZ5XoTIsfeFYWboizjs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0 h1:Waw9Wfpo/IXzOI8bCB7DIk+0JZcqqsyn1JFnAc+iam8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0/go.mod h1:wnJIG4fOqyynOnnQF/eQb4/16VlX2EJAHhHgqIqWfAo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.26.0 h1:1wp/gyxsuYtuE/JFxsQRtcCDtMrO2qMvlfXALU5wkzI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.26.0/go.mod h1:gbTHmghkGgqxMomVQQMur1Nba4M0MQ8AYThXDUjsJ38= +go.opentelemetry.io/otel/log v0.2.0-alpha h1:ixOPvMzserpqA07SENHvRzkZOsnG0XbPr74hv1AQ+n0= +go.opentelemetry.io/otel/log v0.2.0-alpha/go.mod h1:vbFZc65yq4c4ssvXY43y/nIqkNJLxORrqw0L85P59LA= +go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= +go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/sdk/log v0.2.0-alpha h1:jGTkL/jroJ31jnP6jDl34N/mDOfRGGYZHcHsCM+5kWA= +go.opentelemetry.io/otel/sdk/log v0.2.0-alpha/go.mod h1:Hd8Lw9FPGUM3pfY7iGMRvFaC2Nyau4Ajb5WnQ9OdIho= +go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/proto/otlp v1.2.0 h1:pVeZGk7nXDC9O2hncA6nHldxEjm6LByfA2aN8IOkz94= +go.opentelemetry.io/proto/otlp v1.2.0/go.mod h1:gGpR8txAl5M03pDhMC79G6SdqNV26naRm/KDsgaHD8A= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +google.golang.org/genproto/googleapis/api v0.0.0-20240515191416-fc5f0ca64291 h1:4HZJ3Xv1cmrJ+0aFo304Zn79ur1HMxptAE7aCPNLSqc= +google.golang.org/genproto/googleapis/api v0.0.0-20240515191416-fc5f0ca64291/go.mod h1:RGnPtTG7r4i8sPlNyDeikXF99hMM+hN6QMm4ooG9g2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291 h1:AgADTJarZTBqgjiUzRgfaBchgYB3/WFTC80GPwsMcRI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240515191416-fc5f0ca64291/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/dagger/main.go b/dagger/main.go new file mode 100644 index 0000000..3805eb9 --- /dev/null +++ b/dagger/main.go @@ -0,0 +1,89 @@ +// A generated module for Dota2Helper functions +// +// This module has been generated via dagger init and serves as a reference to +// basic module structure as you get started with Dagger. +// +// Two functions have been pre-created. You can modify, delete, or add to them, +// as needed. They demonstrate usage of arguments and return types using simple +// echo and grep commands. The functions can be called from the dagger CLI or +// from one of the SDKs. +// +// The first line in this comment block is a short description line and the +// rest is a long description with more detail on the module's purpose or usage, +// if appropriate. All modules should have a short description. + +package main + +import ( + "context" + "dagger/dota-2-helper/internal/dagger" + "fmt" +) + +type Dota2Helper struct{} + +func (m *Dota2Helper) Build(ctx context.Context, directory *Directory) (string, error) { + return dag.Container(). + From("mcr.microsoft.com/dotnet/sdk:8.0"). + WithDirectory("/src", directory, dagger.ContainerWithDirectoryOpts{ + Exclude: []string{"**/bin/**", "**/obj/**"}, + }). + WithWorkdir("/src"). + WithExec([]string{ + "dotnet", + "build"}). + Stdout(ctx) +} + +func (m *Dota2Helper) PublishWindows(ctx context.Context, directory *Directory, version string) *dagger.Container { + + return dag.Container(). + From("mcr.microsoft.com/dotnet/sdk:8.0"). + WithDirectory("/src", directory, dagger.ContainerWithDirectoryOpts{ + Exclude: []string{"**/bin/**", "**/obj/**"}, + }). + WithWorkdir("/src"). + WithExec([]string{ + "dotnet", + "publish", + "Dota2Helper.Desktop", + "-c", + "Release", + "-r", + "win-x64", + "--self-contained", + "true", + fmt.Sprintf("/p:Version=%s", version), + "/p:PublishSingleFile=true", + "-o", + "/publish"}) +} + +func (m *Dota2Helper) Release( + ctx context.Context, + directory *Directory, + tag string, + token *dagger.Secret) (dagger.Void, error) { + + var title string = "" + published := m.PublishWindows(ctx, directory, tag) + assets := published.Directory("/publish") + + gh := dag.Gh(dagger.GhOpts{ + Token: token, + Repo: "github.com/pjmagee/dota2-helper", + }) + + zip := dag.Arc(dagger.ArcOpts{}).ArchiveDirectory(fmt.Sprintf("Dota2Helper_%s_windows_amd64", tag), assets).Zip() + + ghRelease := gh.Release() + + return ghRelease.Create(ctx, tag, title, dagger.GhReleaseCreateOpts{ + Target: "main", + Files: []*dagger.File{zip}, + Latest: true, + VerifyTag: true, + Draft: true, + GenerateNotes: true, + }) +} diff --git a/Directory.Build.props b/src/Directory.Build.props similarity index 100% rename from Directory.Build.props rename to src/Directory.Build.props diff --git a/Dota2Helper.Desktop/Dota2Helper.Desktop.csproj b/src/Dota2Helper.Desktop/Dota2Helper.Desktop.csproj similarity index 67% rename from Dota2Helper.Desktop/Dota2Helper.Desktop.csproj rename to src/Dota2Helper.Desktop/Dota2Helper.Desktop.csproj index 910419f..bf7eb46 100644 --- a/Dota2Helper.Desktop/Dota2Helper.Desktop.csproj +++ b/src/Dota2Helper.Desktop/Dota2Helper.Desktop.csproj @@ -1,6 +1,6 @@  - WinExe + WinExe net8.0 enable true @@ -11,7 +11,7 @@ 0.0.1 0.0.1 - + $([System.DateTime]::Now.ToString("yyyy.MM.dd.HHmmss")) @@ -19,8 +19,9 @@ - - + + + diff --git a/Dota2Helper.Desktop/Program.cs b/src/Dota2Helper.Desktop/Program.cs similarity index 83% rename from Dota2Helper.Desktop/Program.cs rename to src/Dota2Helper.Desktop/Program.cs index 017917d..dbf3a41 100644 --- a/Dota2Helper.Desktop/Program.cs +++ b/src/Dota2Helper.Desktop/Program.cs @@ -5,12 +5,12 @@ namespace Dota2Helper.Desktop; -class Program +internal static class Program { [STAThread] public static void Main(string[] args) => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); - public static AppBuilder BuildAvaloniaApp() + private static AppBuilder BuildAvaloniaApp() { return AppBuilder.Configure() .UsePlatformDetect() diff --git a/Dota2Helper.Desktop/Properties/launchSettings.json b/src/Dota2Helper.Desktop/Properties/launchSettings.json similarity index 100% rename from Dota2Helper.Desktop/Properties/launchSettings.json rename to src/Dota2Helper.Desktop/Properties/launchSettings.json diff --git a/Dota2Helper.Desktop/app.manifest b/src/Dota2Helper.Desktop/app.manifest similarity index 100% rename from Dota2Helper.Desktop/app.manifest rename to src/Dota2Helper.Desktop/app.manifest diff --git a/Dota2Helper.Desktop/appsettings.json b/src/Dota2Helper.Desktop/appsettings.json similarity index 100% rename from Dota2Helper.Desktop/appsettings.json rename to src/Dota2Helper.Desktop/appsettings.json diff --git a/Dota2Helper.Desktop/dota2_helper.ico b/src/Dota2Helper.Desktop/dota2_helper.ico similarity index 100% rename from Dota2Helper.Desktop/dota2_helper.ico rename to src/Dota2Helper.Desktop/dota2_helper.ico diff --git a/Dota2Helper.sln b/src/Dota2Helper.sln similarity index 100% rename from Dota2Helper.sln rename to src/Dota2Helper.sln diff --git a/Dota2Helper/App.axaml b/src/Dota2Helper/App.axaml similarity index 100% rename from Dota2Helper/App.axaml rename to src/Dota2Helper/App.axaml diff --git a/Dota2Helper/App.axaml.cs b/src/Dota2Helper/App.axaml.cs similarity index 78% rename from Dota2Helper/App.axaml.cs rename to src/Dota2Helper/App.axaml.cs index 0beb2d5..763a1fe 100644 --- a/Dota2Helper/App.axaml.cs +++ b/src/Dota2Helper/App.axaml.cs @@ -8,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; @@ -19,6 +20,7 @@ using Dota2Helper.Core.Configuration; using Dota2Helper.Core.Framework; using Dota2Helper.Core.Gsi; +using Dota2Helper.Core.Listeners; using Dota2Helper.Core.Timers; using Microsoft.Extensions.Configuration; using ViewLocator = Dota2Helper.Core.Framework.ViewLocator; @@ -47,8 +49,10 @@ public override async void OnFrameworkInitializationCompleted() desktop.Exit += async (sender, args) => { - var listener = Host.Services.GetRequiredService(); - listener.Dispose(); + foreach (var listener in Host.Services.GetRequiredService>()) + { + listener.Dispose(); + } await Host.StopAsync(TimeSpan.FromSeconds(5)); Host.Dispose(); @@ -66,24 +70,15 @@ private static IHost CreateHost() { HostApplicationBuilder builder = Microsoft.Extensions.Hosting.Host.CreateApplicationBuilder(Environment.GetCommandLineArgs()); - if (Design.IsDesignMode) - { - builder.Services.AddSingleton(); - } - else - { - if (Process.GetProcessesByName("dota2").Any()) - { - builder.Services.AddSingleton(); - } - else - { - builder.Services.AddSingleton(); - } - } - - builder.Services - .Configure(options => builder.Configuration.GetSection("Settings").Bind(options)); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); + + builder.Services.AddSingleton>(sp => [ + sp.GetRequiredService(), sp.GetRequiredService() + ]); + + builder.Services.AddSingleton(); + builder.Services.Configure(options => builder.Configuration.GetSection("Settings").Bind(options)); builder.Services.AddSingleton(); builder.Services.AddSingleton(); diff --git a/Dota2Helper/Assets/dota2_helper.ico b/src/Dota2Helper/Assets/dota2_helper.ico similarity index 100% rename from Dota2Helper/Assets/dota2_helper.ico rename to src/Dota2Helper/Assets/dota2_helper.ico diff --git a/Dota2Helper/Core/Audio/AudioPlayer.cs b/src/Dota2Helper/Core/Audio/AudioPlayer.cs similarity index 100% rename from Dota2Helper/Core/Audio/AudioPlayer.cs rename to src/Dota2Helper/Core/Audio/AudioPlayer.cs diff --git a/Dota2Helper/Core/Audio/AudioPlayerService.cs b/src/Dota2Helper/Core/Audio/AudioPlayerService.cs similarity index 100% rename from Dota2Helper/Core/Audio/AudioPlayerService.cs rename to src/Dota2Helper/Core/Audio/AudioPlayerService.cs diff --git a/Dota2Helper/Core/Audio/AudioQueueItem.cs b/src/Dota2Helper/Core/Audio/AudioQueueItem.cs similarity index 100% rename from Dota2Helper/Core/Audio/AudioQueueItem.cs rename to src/Dota2Helper/Core/Audio/AudioQueueItem.cs diff --git a/Dota2Helper/Core/Configuration/Settings.cs b/src/Dota2Helper/Core/Configuration/Settings.cs similarity index 100% rename from Dota2Helper/Core/Configuration/Settings.cs rename to src/Dota2Helper/Core/Configuration/Settings.cs diff --git a/Dota2Helper/Core/Configuration/TimerOptions.cs b/src/Dota2Helper/Core/Configuration/TimerOptions.cs similarity index 100% rename from Dota2Helper/Core/Configuration/TimerOptions.cs rename to src/Dota2Helper/Core/Configuration/TimerOptions.cs diff --git a/Dota2Helper/Core/Framework/DesignData.cs b/src/Dota2Helper/Core/Framework/DesignData.cs similarity index 100% rename from Dota2Helper/Core/Framework/DesignData.cs rename to src/Dota2Helper/Core/Framework/DesignData.cs diff --git a/Dota2Helper/Core/Framework/ViewLocator.cs b/src/Dota2Helper/Core/Framework/ViewLocator.cs similarity index 100% rename from Dota2Helper/Core/Framework/ViewLocator.cs rename to src/Dota2Helper/Core/Framework/ViewLocator.cs diff --git a/Dota2Helper/Core/Framework/ViewLocatorHelpers.cs b/src/Dota2Helper/Core/Framework/ViewLocatorHelpers.cs similarity index 100% rename from Dota2Helper/Core/Framework/ViewLocatorHelpers.cs rename to src/Dota2Helper/Core/Framework/ViewLocatorHelpers.cs diff --git a/Dota2Helper/Core/Gsi/GameState.cs b/src/Dota2Helper/Core/Gsi/GameState.cs similarity index 100% rename from Dota2Helper/Core/Gsi/GameState.cs rename to src/Dota2Helper/Core/Gsi/GameState.cs diff --git a/Dota2Helper/Core/Gsi/GameStateHolder.cs b/src/Dota2Helper/Core/Gsi/GameStateHolder.cs similarity index 100% rename from Dota2Helper/Core/Gsi/GameStateHolder.cs rename to src/Dota2Helper/Core/Gsi/GameStateHolder.cs diff --git a/Dota2Helper/Core/Gsi/GameStateUpdater.cs b/src/Dota2Helper/Core/Gsi/GameStateUpdater.cs similarity index 77% rename from Dota2Helper/Core/Gsi/GameStateUpdater.cs rename to src/Dota2Helper/Core/Gsi/GameStateUpdater.cs index 40c8842..063ad75 100644 --- a/Dota2Helper/Core/Gsi/GameStateUpdater.cs +++ b/src/Dota2Helper/Core/Gsi/GameStateUpdater.cs @@ -1,12 +1,13 @@ using System; using System.Threading; using System.Threading.Tasks; +using Dota2Helper.Core.Listeners; using Dota2Helper.ViewModels; using Microsoft.Extensions.Hosting; namespace Dota2Helper.Core.Gsi; -public class GameStateUpdater(GameStateHolder container, TimersViewModel timersViewModel, IDotaListener listener) : BackgroundService +public class GameStateUpdater(GameStateHolder container, TimersViewModel timersViewModel, IListenerStrategy listenerStrategy) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { @@ -14,7 +15,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try { - container.State = await listener.GetStateAsync(); + container.State = await listenerStrategy.Current.GetStateAsync(); timersViewModel.Update(); } catch (Exception ex) diff --git a/Dota2Helper/Core/Gsi/Map.cs b/src/Dota2Helper/Core/Gsi/Map.cs similarity index 100% rename from Dota2Helper/Core/Gsi/Map.cs rename to src/Dota2Helper/Core/Gsi/Map.cs diff --git a/Dota2Helper/Core/DotaListener.cs b/src/Dota2Helper/Core/Listeners/DotaListener.cs similarity index 96% rename from Dota2Helper/Core/DotaListener.cs rename to src/Dota2Helper/Core/Listeners/DotaListener.cs index 636b8d2..ddf3de7 100644 --- a/Dota2Helper/Core/DotaListener.cs +++ b/src/Dota2Helper/Core/Listeners/DotaListener.cs @@ -6,7 +6,7 @@ using Dota2Helper.Core.Gsi; using Microsoft.Extensions.Options; -namespace Dota2Helper.Core; +namespace Dota2Helper.Core.Listeners; public class DotaListener : IDotaListener { diff --git a/src/Dota2Helper/Core/Listeners/DynamicListenerStrategy.cs b/src/Dota2Helper/Core/Listeners/DynamicListenerStrategy.cs new file mode 100644 index 0000000..a1e288b --- /dev/null +++ b/src/Dota2Helper/Core/Listeners/DynamicListenerStrategy.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Avalonia.Controls; + +namespace Dota2Helper.Core.Listeners; + +public class DynamicListenerStrategy(List listeners) : IListenerStrategy +{ + public IDotaListener Current + { + get + { + if (Design.IsDesignMode) + { + return listeners.First(l => l.GetType() == typeof(FakeDotaListener)); + } + + if (Process.GetProcessesByName("dota2").Any()) + { + return listeners.First(l => l.GetType() == typeof(DotaListener)); + } + + return listeners.First(l => l.GetType() == typeof(FakeDotaListener)); + } + } +} \ No newline at end of file diff --git a/Dota2Helper/Core/Gsi/FakeDotaListener.cs b/src/Dota2Helper/Core/Listeners/FakeDotaListener.cs similarity index 94% rename from Dota2Helper/Core/Gsi/FakeDotaListener.cs rename to src/Dota2Helper/Core/Listeners/FakeDotaListener.cs index 70bbae9..6bbcbe0 100644 --- a/Dota2Helper/Core/Gsi/FakeDotaListener.cs +++ b/src/Dota2Helper/Core/Listeners/FakeDotaListener.cs @@ -1,8 +1,9 @@ using System; using System.Threading; using System.Threading.Tasks; +using Dota2Helper.Core.Gsi; -namespace Dota2Helper.Core.Gsi; +namespace Dota2Helper.Core.Listeners; public class FakeDotaListener : IDotaListener, IAsyncDisposable { diff --git a/Dota2Helper/Core/Gsi/IDotaListener.cs b/src/Dota2Helper/Core/Listeners/IDotaListener.cs similarity index 67% rename from Dota2Helper/Core/Gsi/IDotaListener.cs rename to src/Dota2Helper/Core/Listeners/IDotaListener.cs index 9c1ec57..f4a10f0 100644 --- a/Dota2Helper/Core/Gsi/IDotaListener.cs +++ b/src/Dota2Helper/Core/Listeners/IDotaListener.cs @@ -1,7 +1,8 @@ using System; using System.Threading.Tasks; +using Dota2Helper.Core.Gsi; -namespace Dota2Helper.Core.Gsi; +namespace Dota2Helper.Core.Listeners; public interface IDotaListener : IDisposable { diff --git a/src/Dota2Helper/Core/Listeners/IListenerStrategy.cs b/src/Dota2Helper/Core/Listeners/IListenerStrategy.cs new file mode 100644 index 0000000..99db84f --- /dev/null +++ b/src/Dota2Helper/Core/Listeners/IListenerStrategy.cs @@ -0,0 +1,6 @@ +namespace Dota2Helper.Core.Listeners; + +public interface IListenerStrategy +{ + IDotaListener Current { get; } +} \ No newline at end of file diff --git a/Dota2Helper/Core/Timers/DotaTimer.cs b/src/Dota2Helper/Core/Timers/DotaTimer.cs similarity index 100% rename from Dota2Helper/Core/Timers/DotaTimer.cs rename to src/Dota2Helper/Core/Timers/DotaTimer.cs diff --git a/Dota2Helper/Core/Timers/DotaTimers.cs b/src/Dota2Helper/Core/Timers/DotaTimers.cs similarity index 100% rename from Dota2Helper/Core/Timers/DotaTimers.cs rename to src/Dota2Helper/Core/Timers/DotaTimers.cs diff --git a/Dota2Helper/Dota2Helper.csproj b/src/Dota2Helper/Dota2Helper.csproj similarity index 94% rename from Dota2Helper/Dota2Helper.csproj rename to src/Dota2Helper/Dota2Helper.csproj index ac60204..8cd473b 100644 --- a/Dota2Helper/Dota2Helper.csproj +++ b/src/Dota2Helper/Dota2Helper.csproj @@ -20,7 +20,7 @@ - + diff --git a/Dota2Helper/Icons.axaml b/src/Dota2Helper/Icons.axaml similarity index 100% rename from Dota2Helper/Icons.axaml rename to src/Dota2Helper/Icons.axaml diff --git a/Dota2Helper/ViewModels/MainWindowViewModel.cs b/src/Dota2Helper/ViewModels/MainWindowViewModel.cs similarity index 95% rename from Dota2Helper/ViewModels/MainWindowViewModel.cs rename to src/Dota2Helper/ViewModels/MainWindowViewModel.cs index bd46d37..232f537 100644 --- a/Dota2Helper/ViewModels/MainWindowViewModel.cs +++ b/src/Dota2Helper/ViewModels/MainWindowViewModel.cs @@ -14,7 +14,7 @@ public ViewModelBase ContentViewModel private set { this.RaiseAndSetIfChanged(ref _contentViewModel, value); - ViewName = ContentViewModel is TimersViewModel ? "Settings" : "Timers"; + ViewName = _contentViewModel is TimersViewModel ? "Settings" : "Timers"; } } diff --git a/Dota2Helper/ViewModels/SettingsViewModel.cs b/src/Dota2Helper/ViewModels/SettingsViewModel.cs similarity index 100% rename from Dota2Helper/ViewModels/SettingsViewModel.cs rename to src/Dota2Helper/ViewModels/SettingsViewModel.cs diff --git a/Dota2Helper/ViewModels/TimersViewModel.cs b/src/Dota2Helper/ViewModels/TimersViewModel.cs similarity index 100% rename from Dota2Helper/ViewModels/TimersViewModel.cs rename to src/Dota2Helper/ViewModels/TimersViewModel.cs diff --git a/Dota2Helper/ViewModels/ViewModelBase.cs b/src/Dota2Helper/ViewModels/ViewModelBase.cs similarity index 100% rename from Dota2Helper/ViewModels/ViewModelBase.cs rename to src/Dota2Helper/ViewModels/ViewModelBase.cs diff --git a/Dota2Helper/Views/MainWindow.axaml b/src/Dota2Helper/Views/MainWindow.axaml similarity index 100% rename from Dota2Helper/Views/MainWindow.axaml rename to src/Dota2Helper/Views/MainWindow.axaml diff --git a/Dota2Helper/Views/MainWindow.axaml.cs b/src/Dota2Helper/Views/MainWindow.axaml.cs similarity index 100% rename from Dota2Helper/Views/MainWindow.axaml.cs rename to src/Dota2Helper/Views/MainWindow.axaml.cs diff --git a/Dota2Helper/Views/SettingsView.axaml b/src/Dota2Helper/Views/SettingsView.axaml similarity index 100% rename from Dota2Helper/Views/SettingsView.axaml rename to src/Dota2Helper/Views/SettingsView.axaml diff --git a/Dota2Helper/Views/SettingsView.axaml.cs b/src/Dota2Helper/Views/SettingsView.axaml.cs similarity index 100% rename from Dota2Helper/Views/SettingsView.axaml.cs rename to src/Dota2Helper/Views/SettingsView.axaml.cs diff --git a/Dota2Helper/Views/TimersView.axaml b/src/Dota2Helper/Views/TimersView.axaml similarity index 94% rename from Dota2Helper/Views/TimersView.axaml rename to src/Dota2Helper/Views/TimersView.axaml index 5aeeaa0..6bd6a54 100644 --- a/Dota2Helper/Views/TimersView.axaml +++ b/src/Dota2Helper/Views/TimersView.axaml @@ -11,16 +11,16 @@ x:DataType="vm:TimersViewModel" Margin="10"> diff --git a/Dota2Helper/Views/TimersView.axaml.cs b/src/Dota2Helper/Views/TimersView.axaml.cs similarity index 100% rename from Dota2Helper/Views/TimersView.axaml.cs rename to src/Dota2Helper/Views/TimersView.axaml.cs diff --git a/Dota2Helper/audio/Aegis.mp3 b/src/Dota2Helper/audio/Aegis.mp3 similarity index 100% rename from Dota2Helper/audio/Aegis.mp3 rename to src/Dota2Helper/audio/Aegis.mp3 diff --git a/Dota2Helper/audio/Bounty.mp3 b/src/Dota2Helper/audio/Bounty.mp3 similarity index 100% rename from Dota2Helper/audio/Bounty.mp3 rename to src/Dota2Helper/audio/Bounty.mp3 diff --git a/Dota2Helper/audio/Catapult.mp3 b/src/Dota2Helper/audio/Catapult.mp3 similarity index 100% rename from Dota2Helper/audio/Catapult.mp3 rename to src/Dota2Helper/audio/Catapult.mp3 diff --git a/Dota2Helper/audio/Lotus.mp3 b/src/Dota2Helper/audio/Lotus.mp3 similarity index 100% rename from Dota2Helper/audio/Lotus.mp3 rename to src/Dota2Helper/audio/Lotus.mp3 diff --git a/Dota2Helper/audio/Power.mp3 b/src/Dota2Helper/audio/Power.mp3 similarity index 100% rename from Dota2Helper/audio/Power.mp3 rename to src/Dota2Helper/audio/Power.mp3 diff --git a/Dota2Helper/audio/Roshan.mp3 b/src/Dota2Helper/audio/Roshan.mp3 similarity index 100% rename from Dota2Helper/audio/Roshan.mp3 rename to src/Dota2Helper/audio/Roshan.mp3 diff --git a/Dota2Helper/audio/Stack.mp3 b/src/Dota2Helper/audio/Stack.mp3 similarity index 100% rename from Dota2Helper/audio/Stack.mp3 rename to src/Dota2Helper/audio/Stack.mp3 diff --git a/Dota2Helper/audio/Tormentor.mp3 b/src/Dota2Helper/audio/Tormentor.mp3 similarity index 100% rename from Dota2Helper/audio/Tormentor.mp3 rename to src/Dota2Helper/audio/Tormentor.mp3 diff --git a/Dota2Helper/audio/Wisdom.mp3 b/src/Dota2Helper/audio/Wisdom.mp3 similarity index 100% rename from Dota2Helper/audio/Wisdom.mp3 rename to src/Dota2Helper/audio/Wisdom.mp3 diff --git a/global.json b/src/global.json similarity index 100% rename from global.json rename to src/global.json