Compare commits

..

No commits in common. "3ae4843db40492d055ea7feafa854668856c3ecd" and "8a143f746ca4ba4cc7b6ca038ab844f0522789dc" have entirely different histories.

28 changed files with 1134 additions and 178 deletions

View file

@ -1,6 +1,6 @@
[target.x86_64-unknown-linux-gnu] [target.x86_64-unknown-linux-gnu]
# linker = "clang" linker = "clang"
# rustflags = [ rustflags = [
# "-C", "link-arg=-fuse-ld=mold", "-C", "link-arg=-fuse-ld=mold",
# ] ]

View file

Before

Width:  |  Height:  |  Size: 863 KiB

After

Width:  |  Height:  |  Size: 863 KiB

1107
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -5,8 +5,8 @@ edition = "2021"
[dependencies] [dependencies]
bevy = { version = "0.14.2" } bevy = { version = "0.14.2" }
bevy_rapier2d = {version = "0.27.0", features = ["debug-render-2d", "simd-stable"]} bevy_rapier2d = {version = "0.27.0", features = ["debug-render-2d", "simd-stable", "parallel"]}
# bevy_editor_pls = "0.10" bevy_editor_pls = "0.10"
readformat = "0.1.2" readformat = "0.1.2"
# Enable a small amount of optimization in the dev profile. # Enable a small amount of optimization in the dev profile.
@ -17,5 +17,3 @@ opt-level = 1
[profile.dev.package."*"] [profile.dev.package."*"]
opt-level = 3 opt-level = 3
[target.wasm32-unknown-unknown]
runner = "wasm-server-runner"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 KiB

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 KiB

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 285 KiB

View file

@ -2,15 +2,14 @@ header
parallax.size = 2000x1000 parallax.size = 2000x1000
parallax.tiles = 2 parallax.tiles = 2
parallax.factor.y = 100000 parallax.factor.y = 100000
parallax.offset = 200
parallax.tex = BG0_himmel_blau_smallest.png parallax.tex = BG0_himmel_blau_smallest.png
parallax.factor = 30 parallax.factor = 30
parallax.depth = 10 parallax.depth = 10
parallax.offset = -200
parallax.enable = true parallax.enable = true
parallax.tex = BG1_Berge_blau_small.png parallax.tex = BG1_Berge_blau_small.png
parallax.factor = 10 parallax.factor = 10
parallax.depth = 9 parallax.depth = 9
parallax.offset = -200
parallax.enable = true parallax.enable = true
parallax.tex = BG2_Berge_gau_small.png parallax.tex = BG2_Berge_gau_small.png
parallax.factor = 8 parallax.factor = 8
@ -35,12 +34,6 @@ header
., = _erdblock_upper.png ., = _erdblock_upper.png
.a = _tree1_greenish.png .a = _tree1_greenish.png
.O = ~Kugel2.png .O = ~Kugel2.png
.DRAGON1 = _Dragon_p1.png
.DRAGON2 = _Dragon_p2.png
.DRAGON3 = _Dragon_p3.png
.DRAGON4 = _Dragon_p4.png
.DRAGON5 = _Dragon_p5.png
.D = Blockgrau.png
links links
blocks blocks
@ -56,27 +49,27 @@ blocks
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T TTT T T T T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T TTT T T T T
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T S T T T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T S T T T
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TT TTTTTTT T T T T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TT TTTTTTT T T T T
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T T T T TTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T T
TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTT T T T T T T T T TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTT T T T T
TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTTttTTTTTTTTT TT TTTTTT T TT T T T T T T T T TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTTttTTTTTTTTT TT TTTTTT T T T T T T T T
TTTTTTTTTT TTT T tttttttttttttTTTTTTTT TTT T T T T T T T T T TTTTTTTTTT TTT T tttttttttttttTTTTTTTT TTT T T T T T T T T
TTTTTTTTTT ttt TTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTT TTT T T T T T T T TTTTTTTTTT ttt TTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTT TTT T T T T T T
TTTTTTTTTT ttt TT T TTT T T TTTTTTTTTTT T TTTTTTTTTT ttt TT T TTT T T TTTTTTTTTTT T
TTTTTTTTTT TTttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTTT T TT T T TTTTTTTTTT TTttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTTT T T T T
TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTT T T S TT T T TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTT T T TT
TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T T TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T
TTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T T T T T T DRAGON1 TTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T T T T T
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTT TTTT TTT T S DRAGON2 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTT TTTTT TTT T
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T TTTTT T S _______________________________ ___ DRAGON3 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T TTTTT T
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTttttttttttttttttttt _ S T T ____________________TTTTTTT T_____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGG______________________ DRAGON4_ _____________________________________________________________ TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTttttttttttttttttttt _ S T T ____________________TTTTTTT T___________________________________________________________________________________________________
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTtt T _T TT T GGGGGGGGGGGGGGGGGGGGGGGGGGG TGGGGGEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEGGGGGGGGGGGGGGGGGGGGGDDDDDDDDDDDDDDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTtt T _T TT T GGGGGGGGGGGGGGGGGGGGGGGGGGG TGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T T _________GT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T T _________GT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TGGGGGGGGGET T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TGGGGGGGGGET T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TTEEEEEEEEEET T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TTEEEEEEEEEET T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T TTTTTTTTTTTTTT T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T TTTTTTTTTTTTTT T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
T T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE T T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
T O S OT T T T T T O S OT T T T T
T O T _______ T T T T T O T _______ T T T T
T O S T S _GGGGGGGTTT T T T T O S T S _GGGGGGGTTT T T T

View file

@ -22,11 +22,7 @@
flake-utils.lib.eachDefaultSystem (system: let flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
rs-toolchain = with fenix.packages.${system}; combine [ rs-toolchain = with fenix.packages.${system}; combine [stable.toolchain];
stable.toolchain
targets.wasm32-unknown-unknown.stable.rust-src
targets.x86_64-pc-windows-gnu.stable.rust-src
];
in { in {
devShells.default = pkgs.mkShell rec { devShells.default = pkgs.mkShell rec {
buildInputs = with pkgs; [ buildInputs = with pkgs; [

BIN
idle_egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

BIN
idle_empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
jump_egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

BIN
jump_empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

View file

@ -7,7 +7,7 @@ use crate::AppState;
mod player; mod player;
mod scene; mod scene;
pub mod set; mod set;
pub const WORLD_DEPTH: f32 = 0.5; pub const WORLD_DEPTH: f32 = 0.5;
pub const PLAYER_DEPTH: f32 = 0.4; pub const PLAYER_DEPTH: f32 = 0.4;

View file

@ -59,8 +59,7 @@ pub(super) fn player_plugin(app: &mut App) {
move_player, move_player,
debug_player_pos, debug_player_pos,
run_animations::<PlayerAnimations>, run_animations::<PlayerAnimations>,
) ),
.in_set(IngameSet),
) )
.init_resource::<PlayerSpawnOneshot>(); .init_resource::<PlayerSpawnOneshot>();
} }

View file

@ -13,7 +13,6 @@ use crate::parallax::{parallax, Parallax};
use crate::AppState; use crate::AppState;
use super::player::PlayerSpawnOneshot; use super::player::PlayerSpawnOneshot;
use super::set::IngameSet;
use super::{PLAYER_DEPTH, PLAYER_SIZE_FRACTION}; use super::{PLAYER_DEPTH, PLAYER_SIZE_FRACTION};
#[derive(Component)] #[derive(Component)]
@ -53,7 +52,7 @@ impl From<PlayerCoords> for Transform {
pub(super) fn scene_plugin(app: &mut App) { pub(super) fn scene_plugin(app: &mut App) {
// app.add_plugins(EditorPlugin::default()); // app.add_plugins(EditorPlugin::default());
// app.add_systems(, ) // app.add_systems(, )
app.add_systems(Startup, (import_text_world,).in_set(IngameSet)); app.add_systems(Startup, (import_text_world,));
} }
#[derive(Default, Resource)] #[derive(Default, Resource)]
@ -70,7 +69,7 @@ pub(super) fn import_text_world(
mut materials: ResMut<Assets<ColorMaterial>>, mut materials: ResMut<Assets<ColorMaterial>>,
mut player_spawn_oneshot: Res<PlayerSpawnOneshot>, mut player_spawn_oneshot: Res<PlayerSpawnOneshot>,
) { ) {
let world_string = include_str!("../../assets/world.txt"); let world_string = fs::read_to_string("assets/world.txt").expect("need a world to load");
let [info_string, links_string, world_string] = let [info_string, links_string, world_string] =
&readf("header\n{}\nlinks\n{}\nblocks\n{}", &world_string) &readf("header\n{}\nlinks\n{}\nblocks\n{}", &world_string)
.expect("world does not have sections")[..] .expect("world does not have sections")[..]
@ -198,11 +197,7 @@ fn spawn_block(
transform: Transform::from_xyz( transform: Transform::from_xyz(
x + block_size * ((len as f32 - 1.) / 2.), x + block_size * ((len as f32 - 1.) / 2.),
y, y,
if fixed { WORLD_DEPTH,
WORLD_DEPTH
} else {
WORLD_DEPTH - 0.01
},
), ),
..Default::default() ..Default::default()
}, },

View file

@ -1,8 +1,7 @@
#![allow(unused)] #![allow(unused)]
use bevy::prelude::*; use bevy::prelude::*;
use bevy_rapier2d::prelude::*; use bevy_rapier2d::prelude::*;
use game::{game_plugin, set::IngameSet}; use game::game_plugin;
use parallax::parallax_plugin; use parallax::parallax_plugin;
mod game; mod game;
@ -14,7 +13,6 @@ const METER: f32 = 100.;
enum AppState { enum AppState {
#[default] #[default]
MainMenu, MainMenu,
StoryPics,
InGame, InGame,
GameOver, GameOver,
} }
@ -26,15 +24,6 @@ enum PausedState {
Running, Running,
} }
#[derive(States, Debug, Clone, PartialEq, Eq, Hash, Default)]
enum StoryPics {
#[default]
Pic0,
Pic1,
Pic2,
Pic3,
}
fn main() { fn main() {
let rapier_config = RapierConfiguration { let rapier_config = RapierConfiguration {
scaled_shape_subdivision: 2, scaled_shape_subdivision: 2,
@ -51,116 +40,17 @@ fn main() {
App::new() App::new()
.add_plugins(DefaultPlugins) .add_plugins(DefaultPlugins)
.add_plugins(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(METER)) .add_plugins(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(METER))
// .add_plugins(RapierDebugRenderPlugin::default()) .add_plugins(RapierDebugRenderPlugin::default())
.add_systems(Startup, setup_camera) .add_systems(Startup, setup_camera)
.add_plugins(game_plugin) .add_plugins(game_plugin)
.add_plugins(parallax_plugin) .add_plugins(parallax_plugin)
.init_state::<AppState>() .init_state::<AppState>()
.init_state::<PausedState>() .init_state::<PausedState>()
.insert_state(AppState::StoryPics) // TODO dont .insert_state(AppState::InGame) // TODO dont
.init_state::<StoryPics>()
.insert_resource(rapier_config) .insert_resource(rapier_config)
.configure_sets(Update, IngameSet.run_if(in_state(AppState::InGame)))
.add_systems(OnEnter(AppState::StoryPics), setup_storypics)
.add_systems(
Update,
(storypic_next_thingy, update_storypics).run_if(in_state(AppState::StoryPics)),
)
.add_systems(OnExit(AppState::StoryPics), cleanup_storypics)
.run(); .run();
} }
fn setup_camera(mut commands: Commands) { fn setup_camera(mut commands: Commands) {
commands.spawn(Camera2dBundle::default()); commands.spawn(Camera2dBundle::default());
} }
#[derive(Component)]
struct StoryPicMarker;
#[derive(Component)]
struct StoryPicNextBtnMarker;
fn setup_storypics(mut commands: Commands, asset_server: Res<AssetServer>) {
let pic0 = asset_server.load("SC01_Once upon a time.png");
// force preloads
let _pic1: Handle<Image> = asset_server.load("SC02_Gargels_Tower.png");
let _pic2: Handle<Image> = asset_server.load("SC03_The Egg.png");
let _pic3: Handle<Image> = asset_server.load("SC04_The Letter.png");
commands
.spawn(ImageBundle {
image: UiImage {
texture: pic0,
..Default::default()
},
style: Style {
width: Val::Percent(100.),
height: Val::Percent(100.),
justify_content: JustifyContent::End,
align_items: AlignItems::End,
..Default::default()
},
..Default::default()
})
.insert(StoryPicMarker)
.with_children(|parent| {
parent
.spawn((ButtonBundle {
..Default::default()
},))
.insert(StoryPicNextBtnMarker)
.with_children(|parent| {
parent.spawn(TextBundle::from_section(
"Weiter...",
TextStyle {
font_size: 64.,
..Default::default()
},
));
});
});
}
fn storypic_next_thingy(
interaction_query: Query<&Interaction, (Changed<Interaction>, With<StoryPicNextBtnMarker>)>,
cur_pic: Res<State<StoryPics>>,
mut pic_switcher: ResMut<NextState<StoryPics>>,
mut game_state: ResMut<NextState<AppState>>,
) {
let Ok(interaction) = interaction_query.get_single() else {
return ();
};
if *interaction == Interaction::Pressed && *cur_pic == StoryPics::Pic3 {
game_state.set(AppState::InGame);
} else if *interaction == Interaction::Pressed {
pic_switcher.set(match cur_pic.clone() {
StoryPics::Pic0 => StoryPics::Pic1,
StoryPics::Pic1 => StoryPics::Pic2,
StoryPics::Pic2 => StoryPics::Pic3,
StoryPics::Pic3 => unreachable!(),
});
}
}
fn update_storypics(
mut commands: Commands,
mut cur_pic: Query<&mut UiImage, With<StoryPicMarker>>,
cur_pic_state: Res<State<StoryPics>>,
asset_server: Res<AssetServer>,
) {
if cur_pic_state.is_changed() {
let mut pic = cur_pic.single_mut();
pic.texture = asset_server.load(match cur_pic_state.clone() {
StoryPics::Pic0 => "SC01_Once upon a time.png",
StoryPics::Pic1 => "SC02_Gargels_Tower.png",
StoryPics::Pic2 => "SC03_The Egg.png",
StoryPics::Pic3 => "SC04_The Letter.png",
})
}
}
fn cleanup_storypics(mut commands: Commands, to_delete: Query<Entity, With<StoryPicMarker>>) {
for e in &to_delete {
commands.entity(e).despawn_recursive();
}
}

BIN
walk_egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

BIN
walk_empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB