diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0d83404 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,35 @@ +name: Continuous Integration Pipeline + +on: [push, pull_request] + +jobs: + build: + + runs-on: windows-latest + strategy: + matrix: + dotnet: [ '5.0.x' ] + runtime: [ 'win-x64', 'win-x86' ] + + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ matrix.dotnet }} + + - name: Restore dependencies + run: dotnet restore + + - name: Build + run: dotnet build --no-restore + + - name: Publish + run: dotnet publish --configuration Release --runtime ${{ matrix.runtime }} --output ./publish -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained true -p:DebugType=None + + - name: Upload Build Artifacts + uses: actions/upload-artifact@v2 + with: + name: BabySmash-${{ matrix.runtime }}-${{ matrix.dotnet }} + path: ./publish + if-no-files-found: error diff --git a/BabySmash.csproj b/BabySmash.csproj index 7e9a1f2..3ec3aad 100644 --- a/BabySmash.csproj +++ b/BabySmash.csproj @@ -4,11 +4,9 @@ WinExe E4355A6B46BE61300D217B56C346651E03BEB47F private.pfx - true false false App.ico - C:\Users\Scott\Desktop\babysmashWithEric\ true Disk true @@ -22,25 +20,18 @@ http://feedback.babysmash.com BabySmash! BabySmash - publish.htm 99 1.1.0.%2a false true true - false true true - AllRules.ruleset - - 3.5 - + - - 3.5 - + @@ -56,38 +47,6 @@ Always - - - False - .NET Framework Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - false - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - true - - - False - Windows Installer 4.5 - true - - diff --git a/Controller.cs b/Controller.cs index c6c32fc..6523355 100644 --- a/Controller.cs +++ b/Controller.cs @@ -105,7 +105,6 @@ public void Launch() Win32Audio.PlayWavResourceYield("EditedJackPlaysBabySmash.wav"); string[] args = Environment.GetCommandLineArgs(); - string ext = System.IO.Path.GetExtension(System.Reflection.Assembly.GetExecutingAssembly().CodeBase); #if !false timer.Start(); diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs deleted file mode 100644 index bc163da..0000000 --- a/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; -using System.Windows; - -[assembly: AssemblyTitle("BabySmash")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Scott Hanselman")] -[assembly: AssemblyProduct("BabySmash")] -[assembly: AssemblyCopyright("Copyright ©2008 Scott Hanselman")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(false)] -[assembly: AssemblyVersion("1.0.2.0")] - -//In order to begin building localizable applications, set -//CultureYouAreCodingWith in your .csproj file -//inside a . For example, if you are using US english -//in your source files, set the to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) - )] diff --git a/README.md b/README.md index 2f2176e..7feb5ee 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,16 @@ BabySmash ========= + - [Overview](#overview) + - [Enhancements](#enhancements) + - [AutoHotkey](#autohotkey) + - [Local Development](#local-development) + - [Prerequisites](#prerequisites) + - [Compile](#compile) + - [Debug](#debug) + - [Publish](#publish) + - [Custom Words](#custom-words) + ## Overview The BabySmash game for small kids. @@ -29,3 +39,34 @@ Used in conjunction with a tool like AutoHotkey, you can essentially create a "b * Try out your new hotkey to make sure it works. If not, go back to 'Edit This Script' and try again. For more advanced customization, see also: http://ahkscript.org/docs/Tutorial.htm + +## Local Development + +### Prerequisites + +- [.NET 5.0](https://dotnet.microsoft.com/download/dotnet/5.0) + +### Compile + +The BabySmash solution can be built by running the .NET CLI command ```dotnet build``` in the root directory or alternatively via Visual Studio. + +### Debug + +Developers can run the BabySmash code by running the .NET CLI command ```dotnet run``` in the root directory or alternatively via Visual Studio. + +### Publish + +Build artifacts are included in the [```Continuous Integration Pipeline``` GitHub Action](./.github/workflows/ci.yml). View the summary of a successful build in order to retrieve uploaded artifacts. + +In order to run a local publish run the following command from the root directory +``` +dotnet publish --configuration Release --runtime ${{ matrix.runtime }} --output ./publish -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained true +``` + +If you encounter issues in a locally published BabySmash executable, there are logs published to the Windows Event Viewer under Windows Logs > Application. + +## Custom Words + +Along with any deployment of BabySmash.exe is a [```Words.txt``` file](./Words.txt). This file determines what combination of letters is constructed into words for the application smasher. Simply adjust the file by adding words on new lines to add to the library. + +There are additionally custom regional definitions in [./Resources/Strings/](./Resources/Strings/) which may be contributed to to adjust the words used for speaking shape and color names. diff --git a/WordFinder.cs b/WordFinder.cs index f9c1a01..b39f4e7 100644 --- a/WordFinder.cs +++ b/WordFinder.cs @@ -23,7 +23,7 @@ public class WordFinder public WordFinder(string wordsFilePath) { // File path provided should be relative to our running location, so combine for full path safety. - string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string dir = Path.GetDirectoryName(AppContext.BaseDirectory); wordsFilePath = Path.Combine(dir, wordsFilePath); // Bail if the source word file is not found. diff --git a/Words.txt b/Words.txt index be027f1..6dd62fb 100644 --- a/Words.txt +++ b/Words.txt @@ -32,6 +32,7 @@ AGAIN AGAINST AGO AIDEN +AIMEE AIR AIRED AIRING