From d24dd89f6405eba9b08a47acdd391617801e45c1 Mon Sep 17 00:00:00 2001 From: eri Date: Sat, 2 Dec 2023 20:29:46 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20initial=20tilemap=20=F0=9F=A7=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yaml | 4 +- Cargo.lock | 43 ++++--- Cargo.toml | 7 +- assets/fonts/pixel.ttf | Bin 10616 -> 0 bytes assets/icons/pixelbevy.png | Bin 395 -> 0 bytes assets/sprites/temp_tile.png | Bin 0 -> 387 bytes examples/dvd.rs | 210 --------------------------------- examples/jump.rs | 193 ------------------------------ src/audio.rs | 14 +-- src/input.rs | 31 ++++- src/lib.rs | 12 +- src/load.rs | 13 +- src/main.rs | 8 +- src/tilemap.rs | 114 ++++++++++++++++++ 14 files changed, 192 insertions(+), 457 deletions(-) delete mode 100644 assets/fonts/pixel.ttf delete mode 100644 assets/icons/pixelbevy.png create mode 100644 assets/sprites/temp_tile.png delete mode 100644 examples/dvd.rs delete mode 100644 examples/jump.rs create mode 100644 src/tilemap.rs diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0d3f0e7..bb0eeb4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -13,9 +13,9 @@ on: type: string env: - binary: hello-bevy # [CHANGE]: This needs to match the project name in cargo.toml + binary: charon add_binaries_to_github_release: true - # itch_target: eerii/hello-bevy # [CHANGE]: If you want to deploy to itch, set this as your username/project-url + itch_target: eerii/charon jobs: get-version: diff --git a/Cargo.lock b/Cargo.lock index 6ce6e27..39d7275 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -644,6 +644,16 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "bevy_ecs_tilemap" +version = "0.12.0" +source = "git+https://github.com/divark/bevy_ecs_tilemap.git?branch=0.12-fixes#658b6c12441a808c8342233a230863d3c74f780f" +dependencies = [ + "bevy", + "log", + "regex", +] + [[package]] name = "bevy_egui" version = "0.23.0" @@ -1411,6 +1421,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "charon" +version = "0.1.0" +dependencies = [ + "bevy", + "bevy-inspector-egui", + "bevy-persistent", + "bevy_asset_loader", + "bevy_ecs_tilemap", + "bevy_embedded_assets", + "bevy_kira_audio", + "bevy_mod_debugdump", + "iyes_progress", + "rand", + "serde", +] + [[package]] name = "clang-sys" version = "1.6.1" @@ -2209,22 +2236,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "hello-bevy" -version = "0.12.3" -dependencies = [ - "bevy", - "bevy-inspector-egui", - "bevy-persistent", - "bevy_asset_loader", - "bevy_embedded_assets", - "bevy_kira_audio", - "bevy_mod_debugdump", - "iyes_progress", - "rand", - "serde", -] - [[package]] name = "hexasphere" version = "9.1.0" diff --git a/Cargo.toml b/Cargo.toml index d565f94..e3a53a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,8 @@ [package] -name = "hello-bevy" # [CHANGE]: Set your project name. -version = "0.12.3" +name = "charon" +version = "0.1.0" edition = "2021" -description = "a bevy game template" +description = "a game for the bevy jam 4" exclude = ["build", "assets", ".data"] [profile.dev.package."*"] @@ -32,5 +32,6 @@ iyes_progress = { version = "0.10", features = [ "assets" ] } # Track loading an bevy-inspector-egui = { version = "0.21" } # Inspector bevy-persistent = { version = "0.4", features = ["toml"] } # Persistent values (for saving) bevy_mod_debugdump = { version = "0.9" } # Debug graphs +bevy_ecs_tilemap = { git = "https://github.com/divark/bevy_ecs_tilemap.git", branch = "0.12-fixes" } # Tilemap (main repo is not updated for 0.12) rand = { version = "0.8" } serde = { version = "1.0", features = ["derive"] } diff --git a/assets/fonts/pixel.ttf b/assets/fonts/pixel.ttf deleted file mode 100644 index 5cf4045f6ec911221380cdd0473dc9127e92913d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10616 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 G=<*MYjGMCn diff --git a/assets/icons/pixelbevy.png b/assets/icons/pixelbevy.png deleted file mode 100644 index cced5261ca5e4040c950dc48939c8a011a14c1a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmV;60d)R}P)Px$MM*?KR7i=Xm9cHZFc3vQ4X+RZQELz2CO{@oYe1D9xbO(7RA~r}ph9p|3D6b> z++={Hl>vK*q&k75j?|I)l}LgA@s7u%f+b+ml7a3ClkQA5uy6y1s{w6lRTyIVwdj`enfUK;Bse4UWM$#&z7 z%r!r|2R=3Zz?QD-a7p4`#HGqEW!;=IvxY~z{D^bDXLs)FKf2gM4n19D{?md^8AO@HVWZd=K_TOvUe<0~J=N?e4*Vg}@+y6T)e(bvXoy&@sjtlO4 zZvErD^r>0Le)Fz_mVL(^=H9lOb={)(sMq%YX6<_&=ijY7IU@t8lfNX$FZlj?eg6ID z=fCfNzh0g}e*dO#{nvp~J3U<-Ln02py>^nXSwVp9!OLe{I~q1=y#GJz>b4mtSRYqp z8vUR6=d)^x1w)Uxlh1M`mxGcYiky}_2{;+1S+C`_braLg3KuEPx$aAw<=DSGn0S-n z^_(e&Ny>$WOP910B#Afn+k() - .add_systems( - OnEnter(GameState::Play), - (init_sample.run_if(run_once()), resume_game), - ) - .add_systems( - Update, - (update_sample, on_collision).run_if(in_state(GameState::Play)), - ) - .add_systems(OnExit(GameState::Play), pause_game); - } -} - -// ·········· -// Components -// ·········· - -#[derive(Component)] -struct Velocity(Vec2); - -#[derive(Component)] -struct Counter(u32); - -#[derive(Component)] -struct GameCamera; - -// ······ -// Events -// ······ - -#[derive(Event)] -struct CollisionEvent(Entity); - -// ······· -// Systems -// ······· - -fn init_sample( - mut cmd: Commands, - assets: Res, - opts: Res>, - mut meshes: ResMut>, - mut materials: ResMut>, -) { - // Camera - cmd.spawn((Camera2dBundle::default(), GameCamera)); - - // Background - cmd.spawn(MaterialMesh2dBundle { - mesh: meshes.add(Mesh::from(shape::Quad::default())).into(), - transform: Transform::from_xyz(0., 0., -10.).with_scale(SIZE.extend(1.)), - material: materials.add(ColorMaterial::from(opts.color.darker)), - ..default() - }); - - // Sprites - for velocity in [ - Vec2::new(300., 250.), - Vec2::new(-150., 400.), - Vec2::new(200., -350.), - ] { - cmd.spawn(( - SpriteBundle { - texture: assets.bevy_icon.clone(), - sprite: Sprite { - custom_size: Some(Vec2::new(96., 96.)), - ..default() - }, - transform: Transform::from_translation(Vec3::new(0., 0., 1.)), - ..default() - }, - Velocity(velocity), - )); - } - - // Counter text - cmd.spawn(( - Text2dBundle { - text: Text::from_section( - "0", - TextStyle { - font: assets.font.clone(), - font_size: 192., - color: opts.color.mid, - }, - ), - ..default() - }, - Counter(0), - )); -} - -fn update_sample( - time: Res