Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bevy port #6

Merged
merged 85 commits into from
May 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
4fbeeba
Initial commit of bevy port
mystal Dec 24, 2023
ba3af3e
Ignore builds directory
mystal Dec 24, 2023
708e2db
Add editorconfig
mystal Dec 24, 2023
5409f1d
Process input, move a square, debug, physics
mystal Dec 24, 2023
a24caa6
Move old source files to old directory
mystal Dec 24, 2023
cc65c38
Update libraries
mystal Jan 12, 2024
93a3661
Load some assets and draw tiling floor texture
mystal Jan 12, 2024
6cbc9fd
Implement simple audio. Press space to bark!
mystal Jan 13, 2024
87a09e5
Add Dog animation!
mystal Jan 13, 2024
d80ff69
Trying to debug why run_front plays wrong anim in game
mystal Jan 14, 2024
cac7bcf
Implement Deref(Mut) for Velocity
mystal Jan 14, 2024
ed50a22
Add CatBox entity
mystal Jan 14, 2024
afe58d7
Add position bounds clamping on movement
mystal Jan 14, 2024
66ba992
Spawn cats and play looping background music
mystal Mar 2, 2024
e8a9f4d
Cats flee and update anims now
mystal Mar 2, 2024
cf1953d
Cats can be put into the pen
mystal Mar 2, 2024
ed5fa7b
A few cleanups and a small bug fix
mystal Mar 2, 2024
ea84afe
Use bevy_asepritesheet instead of bevy_aseprite
mystal Mar 9, 2024
351d454
Lower bgm volume
mystal Mar 10, 2024
bfb64bf
Fix compiler errors, whoops
mystal Mar 10, 2024
9dd027c
Remove old exported walk anims
mystal Mar 10, 2024
a8451fe
Move UI assets to new directory
mystal Mar 10, 2024
780a8bd
Tag more animations in Aseprite
mystal Mar 10, 2024
e523a9a
Remove unused deps
mystal Mar 10, 2024
3816661
Update to bevy 0.13 and dependencies
mystal Mar 10, 2024
20298fc
Use CatKind enum instead of separate Cat components
mystal Mar 11, 2024
7b33f20
Cats meow once in a while
mystal Mar 11, 2024
5922d1f
Start work on levels!
mystal Mar 14, 2024
1374696
Fix crash in level if loading an invalid level
mystal Mar 16, 2024
ca0bae0
Update TODO
mystal Mar 16, 2024
e6caa9d
Move Levels asset to a Resource after load
mystal Mar 16, 2024
919d8c5
Make a camera module and plugin
mystal Mar 16, 2024
2aeef19
Add HUD and cat tracker
mystal Mar 16, 2024
079547c
Small cleanup in debug module
mystal Mar 16, 2024
b9ca15c
Add Blink component
mystal Mar 16, 2024
f2b5f48
Add start menu!!
mystal Mar 16, 2024
b8080a0
Update to bevy 0.13.1
mystal Mar 21, 2024
9b0668b
Add the How to Play menu
mystal Mar 21, 2024
f34135b
Add initial jitter and cannonball logic
mystal Mar 21, 2024
781cb81
Make a src_assets folder to hold source assets
mystal Mar 22, 2024
64fc233
Remove old comment
mystal Mar 22, 2024
b0cb870
Add a justfile
mystal Mar 22, 2024
8bd9374
Zero out cat velocity when Jittering
mystal Mar 22, 2024
72dec46
Get web builds working on itch!
mystal Mar 22, 2024
8a995f1
Update TODO
mystal Mar 22, 2024
349f9e2
Lower volume on angry cat sound
mystal Mar 22, 2024
69af6a6
Dog can be hit by attacking cats
mystal Mar 22, 2024
21c9645
Add TODO to cats module
mystal Mar 22, 2024
7467d21
Remove OS-level window scaling
mystal Mar 23, 2024
f3c613d
Cleanups and run clippy
mystal Mar 23, 2024
35ef3d0
Allow moving with arrow keys as well
mystal Mar 23, 2024
f335d7f
Separate world and screen size to fix scaling
mystal Mar 23, 2024
db38b4b
Remove unused imports from cats module
mystal Mar 24, 2024
396e09b
Fix kittens getting upset real fast!
mystal Mar 24, 2024
a89eade
Add logic to transition levels when cats herded
mystal Mar 24, 2024
967f41d
Update TODO
mystal Mar 24, 2024
94a5931
Update justfile
mystal Mar 24, 2024
92d9744
Render dog in front of cats
mystal Mar 26, 2024
235cd7d
Spawn cats at random locations and move catbox
mystal Mar 26, 2024
f2e313e
Initial version of Cat wander behavior
mystal Apr 16, 2024
c92b11d
Cargo update for bevy 0.13.2
mystal Apr 17, 2024
c3e875e
Update egui and rapier dependencies
mystal May 5, 2024
ff1947b
Remove commented code in physics
mystal May 5, 2024
af00289
Support resizing the window and use black borders!!
mystal May 5, 2024
7cff9f3
Add TODO comment for UI scaling
mystal May 5, 2024
e9caddd
Make UI scale with viewport scale!
mystal May 7, 2024
58715f5
Add GameState and start using it!
mystal May 9, 2024
8c017dd
Add the Victory Party!
mystal May 9, 2024
00d6d64
Remove FLEE_BUFFER, since it felt weird
mystal May 15, 2024
d7b32f5
Update justfile
mystal May 18, 2024
e68cc74
Update justfile to fix release web build
mystal May 18, 2024
7805f86
Fix bug with level transition/clear logic
mystal May 18, 2024
74d275e
Starting on the credits screen
mystal May 18, 2024
4418e92
Adjust meow time range
mystal May 20, 2024
31c8a0f
Delete some old spritesheets
mystal May 20, 2024
3833fec
Update basic and kitten spritesheet tags
mystal May 20, 2024
72cb674
Remove old credits folder and add fox sprite
mystal May 20, 2024
4786111
Update TODO
mystal May 21, 2024
0570177
Finish credits menu!
mystal May 21, 2024
7188a21
Use black clear color and add white bg to credits
mystal May 21, 2024
285fd6d
Update TODO
mystal May 21, 2024
9c44e0a
Fix cat rotation when attacking
mystal May 24, 2024
9c9dd66
Implement cat jitter
mystal May 24, 2024
c034d23
Trying out cargo dist to build the game!
mystal May 24, 2024
c06b4f1
Merge pull request #5 from mystal/bevy_port_dist
mystal May 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
indent_size = 2
271 changes: 271 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
# Copyright 2022-2024, axodotdev
# SPDX-License-Identifier: MIT or Apache-2.0
#
# CI that:
#
# * checks for a Git Tag that looks like a release
# * builds artifacts with cargo-dist (archives, installers, hashes)
# * uploads those artifacts to temporary workflow zip
# * on success, uploads the artifacts to a GitHub Release
#
# Note that the GitHub Release will be created with a generated
# title/body based on your changelogs.

name: Release

permissions:
contents: write

# This task will run whenever you push a git tag that looks like a version
# like "1.0.0", "v0.1.0-prerelease.1", "my-app/0.1.0", "releases/v1.0.0", etc.
# Various formats will be parsed into a VERSION and an optional PACKAGE_NAME, where
# PACKAGE_NAME must be the name of a Cargo package in your workspace, and VERSION
# must be a Cargo-style SemVer Version (must have at least major.minor.patch).
#
# If PACKAGE_NAME is specified, then the announcement will be for that
# package (erroring out if it doesn't have the given version or isn't cargo-dist-able).
#
# If PACKAGE_NAME isn't specified, then the announcement will be for all
# (cargo-dist-able) packages in the workspace with that version (this mode is
# intended for workspaces with only one dist-able package, or with all dist-able
# packages versioned/released in lockstep).
#
# If you push multiple tags at once, separate instances of this workflow will
# spin up, creating an independent announcement for each one. However, GitHub
# will hard limit this to 3 tags per commit, as it will assume more tags is a
# mistake.
#
# If there's a prerelease-style suffix to the version, then the release(s)
# will be marked as a prerelease.
on:
push:
tags:
- '**[0-9]+.[0-9]+.[0-9]+*'
pull_request:

jobs:
# Run 'cargo dist plan' (or host) to determine what tasks we need to do
plan:
runs-on: ubuntu-latest
outputs:
val: ${{ steps.plan.outputs.manifest }}
tag: ${{ !github.event.pull_request && github.ref_name || '' }}
tag-flag: ${{ !github.event.pull_request && format('--tag={0}', github.ref_name) || '' }}
publishing: ${{ !github.event.pull_request }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cargo-dist
# we specify bash to get pipefail; it guards against the `curl` command
# failing. otherwise `sh` won't catch that `curl` returned non-0
shell: bash
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.14.1/cargo-dist-installer.sh | sh"
# sure would be cool if github gave us proper conditionals...
# so here's a doubly-nested ternary-via-truthiness to try to provide the best possible
# functionality based on whether this is a pull_request, and whether it's from a fork.
# (PRs run on the *source* but secrets are usually on the *target* -- that's *good*
# but also really annoying to build CI around when it needs secrets to work right.)
- id: plan
run: |
cargo dist ${{ (!github.event.pull_request && format('host --steps=create --tag={0}', github.ref_name)) || 'plan' }} --output-format=json > plan-dist-manifest.json
echo "cargo dist ran successfully"
cat plan-dist-manifest.json
echo "manifest=$(jq -c "." plan-dist-manifest.json)" >> "$GITHUB_OUTPUT"
- name: "Upload dist-manifest.json"
uses: actions/upload-artifact@v4
with:
name: artifacts-plan-dist-manifest
path: plan-dist-manifest.json

# Build and packages all the platform-specific things
build-local-artifacts:
name: build-local-artifacts (${{ join(matrix.targets, ', ') }})
# Let the initial task tell us to not run (currently very blunt)
needs:
- plan
if: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix.include != null && (needs.plan.outputs.publishing == 'true' || fromJson(needs.plan.outputs.val).ci.github.pr_run_mode == 'upload') }}
strategy:
fail-fast: false
# Target platforms/runners are computed by cargo-dist in create-release.
# Each member of the matrix has the following arguments:
#
# - runner: the github runner
# - dist-args: cli flags to pass to cargo dist
# - install-dist: expression to run to install cargo-dist on the runner
#
# Typically there will be:
# - 1 "global" task that builds universal installers
# - N "local" tasks that build each platform's binaries and platform-specific installers
matrix: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix }}
runs-on: ${{ matrix.runner }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_MANIFEST_NAME: target/distrib/${{ join(matrix.targets, '-') }}-dist-manifest.json
steps:
- name: enable windows longpaths
run: |
git config --global core.longpaths true
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: swatinem/rust-cache@v2
with:
key: ${{ join(matrix.targets, '-') }}
- name: Install cargo-dist
run: ${{ matrix.install_dist }}
# Get the dist-manifest
- name: Fetch local artifacts
uses: actions/download-artifact@v4
with:
pattern: artifacts-*
path: target/distrib/
merge-multiple: true
- name: Install dependencies
run: |
${{ matrix.packages_install }}
- name: Build artifacts
run: |
# Actually do builds and make zips and whatnot
cargo dist build ${{ needs.plan.outputs.tag-flag }} --print=linkage --output-format=json ${{ matrix.dist_args }} > dist-manifest.json
echo "cargo dist ran successfully"
- id: cargo-dist
name: Post-build
# We force bash here just because github makes it really hard to get values up
# to "real" actions without writing to env-vars, and writing to env-vars has
# inconsistent syntax between shell and powershell.
shell: bash
run: |
# Parse out what we just built and upload it to scratch storage
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
jq --raw-output ".upload_files[]" dist-manifest.json >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"

cp dist-manifest.json "$BUILD_MANIFEST_NAME"
- name: "Upload artifacts"
uses: actions/upload-artifact@v4
with:
name: artifacts-build-local-${{ join(matrix.targets, '_') }}
path: |
${{ steps.cargo-dist.outputs.paths }}
${{ env.BUILD_MANIFEST_NAME }}

# Build and package all the platform-agnostic(ish) things
build-global-artifacts:
needs:
- plan
- build-local-artifacts
runs-on: "ubuntu-20.04"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cargo-dist
shell: bash
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.14.1/cargo-dist-installer.sh | sh"
# Get all the local artifacts for the global tasks to use (for e.g. checksums)
- name: Fetch local artifacts
uses: actions/download-artifact@v4
with:
pattern: artifacts-*
path: target/distrib/
merge-multiple: true
- id: cargo-dist
shell: bash
run: |
cargo dist build ${{ needs.plan.outputs.tag-flag }} --output-format=json "--artifacts=global" > dist-manifest.json
echo "cargo dist ran successfully"

# Parse out what we just built and upload it to scratch storage
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
jq --raw-output ".upload_files[]" dist-manifest.json >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"

cp dist-manifest.json "$BUILD_MANIFEST_NAME"
- name: "Upload artifacts"
uses: actions/upload-artifact@v4
with:
name: artifacts-build-global
path: |
${{ steps.cargo-dist.outputs.paths }}
${{ env.BUILD_MANIFEST_NAME }}
# Determines if we should publish/announce
host:
needs:
- plan
- build-local-artifacts
- build-global-artifacts
# Only run if we're "publishing", and only if local and global didn't fail (skipped is fine)
if: ${{ always() && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
runs-on: "ubuntu-20.04"
outputs:
val: ${{ steps.host.outputs.manifest }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cargo-dist
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.14.1/cargo-dist-installer.sh | sh"
# Fetch artifacts from scratch-storage
- name: Fetch artifacts
uses: actions/download-artifact@v4
with:
pattern: artifacts-*
path: target/distrib/
merge-multiple: true
# This is a harmless no-op for GitHub Releases, hosting for that happens in "announce"
- id: host
shell: bash
run: |
cargo dist host ${{ needs.plan.outputs.tag-flag }} --steps=upload --steps=release --output-format=json > dist-manifest.json
echo "artifacts uploaded and released successfully"
cat dist-manifest.json
echo "manifest=$(jq -c "." dist-manifest.json)" >> "$GITHUB_OUTPUT"
- name: "Upload dist-manifest.json"
uses: actions/upload-artifact@v4
with:
# Overwrite the previous copy
name: artifacts-dist-manifest
path: dist-manifest.json

# Create a GitHub Release while uploading all files to it
announce:
needs:
- plan
- host
# use "always() && ..." to allow us to wait for all publish jobs while
# still allowing individual publish jobs to skip themselves (for prereleases).
# "host" however must run to completion, no skipping allowed!
if: ${{ always() && needs.host.result == 'success' }}
runs-on: "ubuntu-20.04"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: "Download GitHub Artifacts"
uses: actions/download-artifact@v4
with:
pattern: artifacts-*
path: artifacts
merge-multiple: true
- name: Cleanup
run: |
# Remove the granular manifests
rm -f artifacts/*-dist-manifest.json
- name: Create GitHub Release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.plan.outputs.tag }}
name: ${{ fromJson(needs.host.outputs.val).announcement_title }}
body: ${{ fromJson(needs.host.outputs.val).announcement_github_body }}
prerelease: ${{ fromJson(needs.host.outputs.val).announcement_is_prerelease }}
artifacts: "artifacts/*"
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/target/
**/*.rs.bk
/target
/builds
/dist
.vscode
*.rs.bk
*.DS_Store

window_state.ron
Loading