diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..cbb0b98 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,83 @@ +name: Bug +title: "Bug: " +description: "This issue is about a bug inside the engine." +labels: ["Issue: Bug", "Status: Pending..."] +body: + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + description: "A quick checklist to ensure something something yadi yada" + options: + - label: "I checked and searched if this issue has already been reported in this repo." + - label: "I did not have any mods enabled/installed when reproducing." + validations: + required: true + + - type: markdown + attributes: + value: "## Platform and Version" + + - type: input + id: version + attributes: + label: "Version" + description: "What version are you experiencing this on? (Include commit + PR if applicable)" + placeholder: "Example: 0.1.0-alpha (566dd0c) (#2)" + validations: + required: true + + - type: dropdown + id: platform-type + attributes: + label: "Platform Type" + description: "What platform are you experiencing this on?" + options: + - "Windows" + - "MacOS" + - "Linux" + - "iOS/iPadOS" + - "Android" + - "Browser" + - "Other (Please specify)" + validations: + required: true + + - type: input + id: platform-version + attributes: + label: "Platform Version" + description: "What version of your platform are you playing on?" + placeholder: "Examples: 11 25H2, 26.4, SteamOS 3.0, Chrome" + validations: + required: true + + - type: input + id: platform-model + attributes: + label: "Platform Model" + description: "If applicable, what device/specs are you using?" + placeholder: "Example: iPhone 17 Pro Max, Samsung S26 Ultra" + validations: + required: false + + - type: markdown + attributes: + value: "## Description" + + - type: textarea + id: description + attributes: + label: "Description" + description: "Please describe the issue you're experiencing to the best of your ability so we can understand and help solve it." + placeholder: "Describe your issue here..." + validations: + required: true + + - type: upload + id: media + attributes: + label: "Media" + description: "If applicable, please leave related images/videos/logs." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/compiling.yml b/.github/ISSUE_TEMPLATE/compiling.yml new file mode 100644 index 0000000..7ba934d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/compiling.yml @@ -0,0 +1,63 @@ +name: Compiling +title: "Compiling: " +description: "This issue is about compiling the engine." +labels: ["Issue: Compiling", "Status: Pending..."] +body: + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + description: "A quick checklist to ensure something something yadi yada" + options: + - label: "I checked and searched if this issue has already been reported in this repo." + validations: + required: true + + - type: markdown + attributes: + value: "## Platform and Version" + + - type: input + id: commit + attributes: + label: "Commit" + description: "What commit are you experiencing this on? (And PR if applicable)" + placeholder: "Example: Initial commit (566dd0c) (#2)" + validations: + required: true + + - type: dropdown + id: target + attributes: + label: "Target" + description: "What target are you experiencing this on?" + options: + - "Windows" + - "MacOS" + - "Linux" + - "iOS/iPadOS" + - "Android" + - "HTML5" + - "HashLink" + - "Other (Please specify)" + + - type: markdown + attributes: + value: "## Description" + + - type: textarea + id: description + attributes: + label: "Description" + description: "Please describe the issue you're experiencing to the best of your ability so we can understand and help solve it." + placeholder: "Describe your issue here..." + validations: + required: true + + - type: upload + id: media + attributes: + label: "Media" + description: "If applicable, please leave related images/videos/logs." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..ec4bb38 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml new file mode 100644 index 0000000..2bba811 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -0,0 +1,35 @@ +name: Documentation +title: "Documentation: " +description: "This issue is about a documentation suggestion or error." +labels: ["Issue: Documentation", "Status: Pending..."] +body: + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + description: "A quick checklist to ensure something something yadi yada" + options: + - label: "I checked and searched if this issue/suggestion has already been reported in this repo." + validations: + required: true + + - type: markdown + attributes: + value: "## Description" + + - type: textarea + id: description + attributes: + label: "Description" + description: "Please describe the issue/suggestion." + placeholder: "Describe your issue/suggestion here..." + validations: + required: true + + - type: upload + id: media + attributes: + label: "Media" + description: "If applicable, please leave related images/videos." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml new file mode 100644 index 0000000..410d66b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/enhancement.yml @@ -0,0 +1,35 @@ +name: Enhancement +title: "Enhancement: " +description: "This issue is about an enhancement that you think should be added." +labels: ["Issue: Enhancement", "Status: Pending..."] +body: + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + description: "A quick checklist to ensure something something yadi yada" + options: + - label: "I checked and searched if this enhancement has already been suggested." + validations: + required: true + + - type: markdown + attributes: + value: "## Description" + + - type: textarea + id: description + attributes: + label: "Description" + description: "Please describe the suggestion you wish to have implemented." + placeholder: "Describe your suggestion here..." + validations: + required: true + + - type: upload + id: media + attributes: + label: "Media" + description: "If applicable, please leave images/videos if you wish to also visually represent it." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/github.yml b/.github/ISSUE_TEMPLATE/github.yml new file mode 100644 index 0000000..7d6d58a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/github.yml @@ -0,0 +1,35 @@ +name: GitHub +title: "GitHub: " +description: "This issue is about the GitHub itself." +labels: ["Issue: GitHub", "Status: Pending..."] +body: + - type: checkboxes + id: checklist + attributes: + label: "Checklist" + description: "A quick checklist to ensure something something yadi yada" + options: + - label: "I checked and searched if this issue has already been reported in this repo." + validations: + required: true + + - type: markdown + attributes: + value: "## Description" + + - type: textarea + id: description + attributes: + label: "Description" + description: "Please describe the issue/suggestion." + placeholder: "Describe your issue/suggestion here..." + validations: + required: true + + - type: upload + id: media + attributes: + label: "Media" + description: "If applicable, please leave related images/videos." + validations: + required: false diff --git a/.github/configs/label-actions.yml b/.github/configs/label-actions.yml new file mode 100644 index 0000000..7a69787 --- /dev/null +++ b/.github/configs/label-actions.yml @@ -0,0 +1,262 @@ +'Status: Fixed': + issues: + close: true + close-reason: completed + unlabel: + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + +'Status: Accepted': + prs: + close: true + close-reason: completed + unlabel: + - 'Status: Fixed' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + +'Status: Awaiting PR': + issues: + reopen: true + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First completed issue' + +'Status: Duplicate': + issues: + comment: > + This issue has been closed due to being an duplicate of another issue, next time ensure that this issue hasn't already been opened beforehand. + The TilNotDrip Anti-Cheat has also been activated against this issue to ensure fair-play for all TilNotDrip contributors. + + prs: + comment: > + This pull request has been closed due to being an duplicate of another pull request, next time ensure that this pull request hasn't already been opened beforehand. + The TilNotDrip Anti-Cheat has also been activated against this pull request to ensure fair-play for all TilNotDrip contributors. + + close: true + close-reason: duplicate + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First *EVER* merged pr' + - 'Trophy: First *EVER* opened issue' + - 'Trophy: First *EVER* opened pr' + - 'Trophy: First completed issue' + - 'Trophy: First merged pr' + - 'Trophy: First opened issue' + - 'Trophy: First opened pr' + - 'Trophy: Good formatted issue' + - 'Trophy: MASSIVE' + +'Status: Pending...': + reopen: true + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First *EVER* merged pr' + - 'Trophy: First completed issue' + - 'Trophy: First merged pr' + + +'Status: Planned': + reopen: true + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Rejected' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First *EVER* merged pr' + - 'Trophy: First completed issue' + - 'Trophy: First merged pr' + +'Status: Rejected': + close: true + close-reason: not planned + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Reproduced Bug' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First *EVER* merged pr' + - 'Trophy: First completed issue' + - 'Trophy: First merged pr' + +'Status: Reproduced Bug': + issues: + reopen: true + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First completed issue' + +'Status: Requires Changes': + prs: + reopen: true + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* merged pr' + - 'Trophy: First merged pr' + +'Status: Stale': + close: true + close-reason: outdated + unlabel: + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Rejected' + - 'Status: Requires Changes' + +'Special: Unwanted Spam': + issues: + comment: > + This has been closed due to being marked as unwanted spam. + The TilNotDrip Anti-Cheat has also been activated against this issue to ensure fair-play for all TilNotDrip contributors. + + prs: + comment: > + This has been closed due to being marked as unwanted spam. + The TilNotDrip Anti-Cheat has also been activated against this pull request to ensure fair-play for all TilNotDrip contributors. + + close: true + close-reason: not planned + lock: true + lock-reason: spam + unlabel: + - 'Issue: Bug' + - 'Issue: Compliling' + - 'Issue: Documentation' + - 'Issue: Enhancement' + - 'Issue: GitHub' + - 'Platform: Android' + - 'Platform: iOS' + - 'Platform: Linux' + - 'Platform: Mac' + - 'Platform: Mobile' + - 'Platform: PC' + - 'Platform: Windows' + - 'PR: Bug' + - 'PR: Compliling' + - 'PR: Documentation' + - 'PR: Enhancement' + - 'PR: GitHub' + - 'Priority: High' + - 'Priority: Low' + - 'Priority: Medium' + - 'Priority: Urgent' + - 'Size: Large' + - 'Size: Medium' + - 'Size: Small' + - 'Special: Help Wanted' + - 'Status: Fixed' + - 'Status: Accepted' + - 'Status: Awaiting PR' + - 'Status: Duplicate' + - 'Status: Pending...' + - 'Status: Planned' + - 'Status: Reproduced Bug' + - 'Status: Rejected' + - 'Status: Requires Changes' + - 'Status: Stale' + + # TilNotDrip Anti-Cheat + + - 'Trophy: First *EVER* completed issue' + - 'Trophy: First *EVER* merged pr' + - 'Trophy: First *EVER* opened issue' + - 'Trophy: First *EVER* opened pr' + - 'Trophy: First completed issue' + - 'Trophy: First merged pr' + - 'Trophy: First opened issue' + - 'Trophy: First opened pr' + - 'Trophy: Good formatted issue' + - 'Trophy: MASSIVE' diff --git a/.github/configs/pr-size-labeler.yml b/.github/configs/pr-size-labeler.yml new file mode 100644 index 0000000..7dd35b5 --- /dev/null +++ b/.github/configs/pr-size-labeler.yml @@ -0,0 +1,16 @@ +# Add 'Size: Small' to any changes below 15 lines +'Size: Small': + max: 14 + +# Add 'Size: Medium' to any changes between 15 and 100 lines +'Size: Medium': + min: 15 + max: 99 + +# Add 'Size: Large' to any changes for more than 100 lines +'Size: Large': + min: 100 + +# Grant the 'MASSIVE' trophy for changes above 500 lines. +'Trophy: MASSIVE': + min: 500 diff --git a/.github/configs/pr-type-labeler.yml b/.github/configs/pr-type-labeler.yml new file mode 100644 index 0000000..5deb1bd --- /dev/null +++ b/.github/configs/pr-type-labeler.yml @@ -0,0 +1,53 @@ +# Give any pr the "PR: Assets" tag if there are changes inside the assets/ or extras/ folder. +'PR: Assets': +- changed-files: + - any-glob-to-any-file: + - 'assets/**' + + # Ignore script files + - '!**/*.hx' + - '!**/*.hxc' + - '!**/*.hxs' + - '!**/*.hxp' + + - 'extras/appicons/**' + - '**/*.gitkeep' # For empty directories that need to be tracked. + +# Give any pr the "PR: Documentation" tag if any .MD files are changed or if there are changes inside the docs/ folder. +'PR: Documentation': +- changed-files: + - any-glob-to-any-file: + - 'docs/**' + - '**/*.md' + - 'LICENSE' # Meant to be off limits for any pr but Crusher or Til may change it. + +# Give any pr the "PR: GitHub" tag if any .yml files are changed or if there are changes inside the .github/ folder. +'PR: GitHub': +- changed-files: + - any-glob-to-any-file: + - '**/*.github/**' + - '**/*.gitattributes' + - '**/*.gitignore' + - '**/*.yml' + +# Give any pr the "PR: Haxe" tag if any haxe related files are changed. +'PR: Haxe': +- changed-files: + - any-glob-to-any-file: + - '**/checkstyle.json' + - '**/hxformat.json' + - '**/*.hx' + - '**/*.hxc' + - '**/*.hxs' + - '**/*.hxp' + - '**/*.hxpkg' # We don't use this anymore but we'll keep it anyways. + - '**/hmm.json' + +# Give any pr the "PR: Misc" tag if any other files are changed that don't fit the rest of the tags. +'PR: Misc': +- changed-files: + - any-glob-to-any-file: + - '.vscode/**' + - 'extras/**' + - '!extras/appicons/**' # Meant to be an asset change. + - 'setup/**' diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..111e3f7 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,5 @@ + +## [DESCRIPTION] + + +## [CLOSES] diff --git a/.github/workflows/main.yml b/.github/workflows/build-game.yml similarity index 93% rename from .github/workflows/main.yml rename to .github/workflows/build-game.yml index 00af3ac..628785c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/build-game.yml @@ -1,7 +1,19 @@ -name: Build +name: Build Game on: push: + paths: + - '.github/workflows/build-game.yml' + - 'assets/**' + - 'extras/appicons/**' + - 'src/**' + - '**/*.hx' + - '**/*.hxc' + - '**/*.hxs' + - '**/*.hxp' + - '**/*.hxpkg' # We don't use this anymore but we'll keep it anyways. + - '**/hmm.json' + workflow_dispatch: jobs: diff --git a/.github/workflows/label-actions.yml b/.github/workflows/label-actions.yml new file mode 100644 index 0000000..b59049d --- /dev/null +++ b/.github/workflows/label-actions.yml @@ -0,0 +1,22 @@ +name: Label Actions + +on: + issues: + types: [labeled, unlabeled] + pull_request_target: + types: [labeled, unlabeled] + +permissions: + contents: read + issues: write + pull-requests: write + discussions: write + +jobs: + action: + runs-on: ubuntu-latest + steps: + - uses: dessant/label-actions@v5 + with: + config-path: '.github/configs/label-actions.yml' + process-only: 'issues, prs' diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml new file mode 100644 index 0000000..0c96be4 --- /dev/null +++ b/.github/workflows/pr-labeler.yml @@ -0,0 +1,25 @@ +name: Pull Request Labeler + +on: +- pull_request_target + +jobs: + # PR Info Labeler, gives the `PR: Type` labels upon creation. + labeler: + permissions: + contents: read + pull-requests: write + + runs-on: ubuntu-latest + steps: + - name: "Set pull request type labels." + uses: actions/labeler@v5 + with: + configuration-path: ".github/configs/pr-type-labeler.yml" + sync-labels: true + + - name: "Set pull request size labels." + uses: vkirilichev/changed-lines-count-labeler@v0.2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/configs/pr-size-labeler.yml