.github/FUNDING.yml --- YAML 1 ko_fi: critical_impact 2   .github/ISSUE_TEMPLATE/bug_report.md --- Text 1 --- 2 name: Bug report 3 about: Create a report to help us improve 4 title: '' 5 labels: bug 6 assignees: Critical-Impact 7 8 --- 9 10 **Describe the bug** 11 A clear and concise description of what the bug is. 12 13 **To Reproduce** 14 Steps to reproduce the behavior: 15 1. Go to '...' 16 2. Click on '....' 17 3. Scroll down to '....' 18 4. See error 19 20 **Expected behavior** 21 A clear and concise description of what you expected to happen. 22 23 **Screenshots** 24 If applicable, add screenshots to help explain your problem. 25 26 **Dalamud Information:** 27 Do you have testing enabled? 28 29 **Additional context** 30 Add any other context about the problem here. 31   .github/ISSUE_TEMPLATE/feature_request.md --- Text 1 --- 2 name: Feature request 3 about: Suggest an idea for this project 4 title: '' 5 labels: '' 6 assignees: '' 7 8 --- 9 10 **Is your feature request related to a problem? Please describe.** 11 A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 13 **Describe the solution you'd like** 14 A clear and concise description of what you want to happen. 15 16 **Describe alternatives you've considered** 17 A clear and concise description of any alternative solutions or features you've considered. 18 19 **Additional context** 20 Add any other context or screenshots about the feature request here. 21   .github/workflows/build.yml --- YAML 1 name: Build 2 3 on: 4 workflow_dispatch: 5 push: 6 branches: 7 - main 8 9 env: 10 INTERNAL_NAME: AllaganTetris 11 CONFIGURATION: Release 12 DOTNET_CLI_TELEMETRY_OPTOUT: true 13 14 jobs: 15 build: 16 runs-on: windows-2022 17 steps: 18 - name: Checkout 19 uses: actions/checkout@v4 20 with: 21 submodules: recursive 22 - name: Setup MSBuild 23 uses: microsoft/[email protected] 24 - name: Download Dalamud 25 run: | 26 Invoke-WebRequest -Uri https://goatcorp.github.io/dalamud-distrib/latest.zip -OutFile latest.zip 27 Expand-Archive -Force latest.zip "$env:AppData\XIVLauncher\addon\Hooks\dev\" 28 - name: Restore 29 run: dotnet restore AllaganTetris 30 - name: Build 31 run: dotnet build -c ${{ env.CONFIGURATION }} --no-restore ${{ env.INTERNAL_NAME }} 32 - name: Push artifacts 33 uses: actions/upload-artifact@v4 34 with: 35 name: dist 36 path: | 37 AllaganTetris\bin\Release\AllaganTetris 38   .github/workflows/pr.yml --- YAML 1 name: Create D17 PR 2 3 on: 4 push: 5 tags: 6 - '*' 7 8 env: 9 INTERNAL_NAME: AllaganTetris 10 PLUGIN_NAME: Allagan Tetris 11 UPDATE_NAME: tetris 12 13 jobs: 14 update-repo: 15 runs-on: ubuntu-latest 16 steps: 17 - name: Checkout this repo 18 uses: actions/checkout@v4 19 20 - name: Extract version and changelog 21 id: changelog 22 run: | 23 VERSION=$(grep -m1 -oP '(?<=## \[)[0-9]+\.[0-9]+\.[0-9]+' ${{ env.INTERNAL_NAME }}/CHANGELOG.md) 24 echo "version=1.$VERSION" >> $GITHUB_OUTPUT 25 CHANGELOG=$(awk -v ver=$VERSION '/^#+ \[/ { if (p) { exit }; if ($2 == "["ver"]") { p=1; next} } p && NF' ${{ env.INTERNAL_NAME }}/CHANGELOG.md) 26 echo "log<<EOF" >> $GITHUB_OUTPUT 27 echo "$CHANGELOG" >> $GITHUB_OUTPUT 28 echo "EOF" >> $GITHUB_OUTPUT 29 30 - name: Checkout fork of external repo 31 uses: actions/checkout@v4 32 with: 33 repository: Critical-Impact/DalamudPluginsD17 34 fetch-depth: '1' 35 path: external 36 token: ${{ secrets.PR_PAT }} 37 38 - name: Configure git and create branch 39 run: | 40 cd external 41 git remote add goatcorp https://github.com/goatcorp/DalamudPluginsD17.git 42 git fetch goatcorp 43 git checkout -b ${{ env.UPDATE_NAME }}-${{ steps.changelog.outputs.version }} goatcorp/main 44 45 - name: Configure git author 46 run: | 47 cd external 48 git config user.name "${GITHUB_ACTOR}" 49 git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" 50 51 - name: Update manifest.toml 52 run: | 53 cd external 54 pip install toml 55 python - <<EOF 56 import toml 57 from pathlib import Path 58 59 manifest_path = Path("stable/${{ env.INTERNAL_NAME }}/manifest.toml") 60 data = toml.load(manifest_path) 61 62 # Update commit and changelog 63 data["plugin"]["commit"] = "${GITHUB_SHA}" 64 data["plugin"]["version"] = "${{ steps.changelog.outputs.version }}" 65 data["plugin"]["changelog"] = """${{ steps.changelog.outputs.log }}""" 66 67 with manifest_path.open("w") as f: 68 toml.dump(data, f) 69 EOF 70 git add stable/${{ env.INTERNAL_NAME }}/manifest.toml 71 git commit -m "${{ env.PLUGIN_NAME }} ${{ steps.changelog.outputs.version }}" 72 73 - name: Push branch to fork 74 run: | 75 cd external 76 git push origin -f HEAD:${{ env.UPDATE_NAME }}-${{ steps.changelog.outputs.version }} 77   AllaganTetris/Addon/NextBlockNode.cs --- C# 84 84 Position = new Vector2(xPos , yPos), 85 85 Size = new Vector2(blockSize, blockSize), 86 86 IsVisible = true, .. 87 FitTexture = true 87 88 }; 88 89 89 90 pieceNodes[x,y].LoadTexture(blockTexture);   AllaganTetris/Addon/TetrisAddon.cs --- 1/4 --- C# 19 19 20 20 public class TetrisAddon : NativeAddon 21 21 { .. 22 private readonly ITextureProvider textureProvider; .. 23 private readonly IDalamudPluginInterface pluginInterface; 22 24 private readonly IFramework framework; 23 25 private readonly IKeyState keyState; 24 26 private readonly Game.Factory gameFactory;   AllaganTetris/Addon/TetrisAddon.cs --- 2/4 --- C# 28 30 private const float UnitSize = 65.0f; 29 31 private const float FramePadding = 8.0f; 30 32 private const float UnitPadding = 10.0f; 31 33 private readonly IDalamudTextureWrap texture; 32 34 private readonly ISharedImmediateTexture sharedImmediateTexture; 33 35 34 36 public Game? Game; 35 37 private int timerCounter;   AllaganTetris/Addon/TetrisAddon.cs --- 3/4 --- C# 54 InternalName = "Allagan Tetris"; 56 InternalName = "Allagan Tetris"; 55 Title = "Allagan Tetris"; 57 Title = "Allagan Tetris"; 56 Size = new(520,740); 58 Size = new(520,740); .. 59 this.textureProvider = textureProvider; .. 60 this.pluginInterface = pluginInterface; 57 this.framework = framework; 61 this.framework = framework; 58 this.keyState = keyState; 62 this.keyState = keyState; 59 this.gameFactory = gameFactory; 63 this.gameFactory = gameFactory; 60 gameSpeed = 800; 64 gameSpeed = 800; 61 var assemblyLocation = pluginInterface.AssemblyLocation.DirectoryName!; .. 62 var imagePath = Path.Combine(assemblyLocation,"Images", "block.png"); .. 63 sharedImmediateTexture = textureProvider.GetFromFile(imagePath); .. 64 texture = sharedImmediateTexture.RentAsync().Result; .. 65 this.framework.Update += FrameworkOnUpdate; 65 this.framework.Update += FrameworkOnUpdate; 66 } 66 } 67 67   AllaganTetris/Addon/TetrisAddon.cs --- 4/4 --- C# 248 248 249 249 protected override unsafe void OnSetup(AtkUnitBase* addon) 250 250 { ... 251 var assemblyLocation = pluginInterface.AssemblyLocation.DirectoryName!; ... 252 var imagePath = Path.Combine(assemblyLocation,"Images", "block.png"); ... 253 sharedImmediateTexture = textureProvider.GetFromFile(imagePath); ... 254 texture = sharedImmediateTexture.RentAsync().Result; ... 255 251 256 var xPos = FramePadding; 252 257 var yPos = UnitSize - FramePadding;   AllaganTetris/AllaganTetris.csproj --- XML 13 14 <ItemGroup> 15 <Content Include="AllaganTetris.json" /> 16 <Content Include="CHANGELOG.md" /> 17 <Content Include="Images\block.png"> 18 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 19 </Content>   AllaganTetris/CHANGELOG.md --- Text 1 # Changelog 2 3 All notable changes to this project will be documented in this file. 4 5 The log versioning the plugin versioning will not match as 1.0.0.0 technically does not match semantic versioning but the headache of trying to change this would be too much. 6 Instead the changelog reader and automation surrounding plugin PRs will add the 1. back in 7 8 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 9 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.html). 10 11 ## [2.0.1] - 2026-01-02 12 13 ### Fixed 14 - Fixed issue when closing and reopening game 15 - Fixed issue with next piece box not showing correctly 16 17 ## [2.0.0] - 2025-12-22 18 19 ### Fixed 20 - Support for 7.4 21   KamiToolKit --- Text 1 Subproject commit 9101fc8a8e861345fe0740e7791cdb06e8764f3e 1 Subproject commit cdb89461ee8945c2ed276c6961d6fb4ee8ccb480