Compare commits
10 commits
8a143f746c
...
3ae4843db4
Author | SHA1 | Date | |
---|---|---|---|
|
3ae4843db4 | ||
|
72a8a42870 | ||
|
718f5f7c78 | ||
|
4375bc0884 | ||
c27cfdbb22 | |||
|
a597b09970 | ||
|
d2f3691e93 | ||
|
0a04622787 | ||
|
e4a8f65652 | ||
|
191077de03 |
|
@ -1,6 +1,6 @@
|
|||
[target.x86_64-unknown-linux-gnu]
|
||||
linker = "clang"
|
||||
rustflags = [
|
||||
"-C", "link-arg=-fuse-ld=mold",
|
||||
]
|
||||
# linker = "clang"
|
||||
# rustflags = [
|
||||
# "-C", "link-arg=-fuse-ld=mold",
|
||||
# ]
|
||||
|
||||
|
|
1107
Cargo.lock
generated
|
@ -5,8 +5,8 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
bevy = { version = "0.14.2" }
|
||||
bevy_rapier2d = {version = "0.27.0", features = ["debug-render-2d", "simd-stable", "parallel"]}
|
||||
bevy_editor_pls = "0.10"
|
||||
bevy_rapier2d = {version = "0.27.0", features = ["debug-render-2d", "simd-stable"]}
|
||||
# bevy_editor_pls = "0.10"
|
||||
readformat = "0.1.2"
|
||||
|
||||
# Enable a small amount of optimization in the dev profile.
|
||||
|
@ -17,3 +17,5 @@ opt-level = 1
|
|||
[profile.dev.package."*"]
|
||||
opt-level = 3
|
||||
|
||||
[target.wasm32-unknown-unknown]
|
||||
runner = "wasm-server-runner"
|
||||
|
|
Before Width: | Height: | Size: 863 KiB After Width: | Height: | Size: 863 KiB |
BIN
assets/Dragon_p1.png
Normal file
After Width: | Height: | Size: 202 KiB |
BIN
assets/Dragon_p2.png
Normal file
After Width: | Height: | Size: 474 KiB |
BIN
assets/Dragon_p3.png
Normal file
After Width: | Height: | Size: 404 KiB |
BIN
assets/Dragon_p4.png
Normal file
After Width: | Height: | Size: 283 KiB |
BIN
assets/Dragon_p5.png
Normal file
After Width: | Height: | Size: 212 KiB |
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 189 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 541 KiB After Width: | Height: | Size: 551 KiB |
Before Width: | Height: | Size: 420 KiB After Width: | Height: | Size: 431 KiB |
BIN
assets/platform.png
Normal file
After Width: | Height: | Size: 529 KiB |
Before Width: | Height: | Size: 328 KiB After Width: | Height: | Size: 333 KiB |
Before Width: | Height: | Size: 285 KiB After Width: | Height: | Size: 290 KiB |
|
@ -2,14 +2,15 @@ header
|
|||
parallax.size = 2000x1000
|
||||
parallax.tiles = 2
|
||||
parallax.factor.y = 100000
|
||||
parallax.offset = 200
|
||||
parallax.tex = BG0_himmel_blau_smallest.png
|
||||
parallax.factor = 30
|
||||
parallax.depth = 10
|
||||
parallax.offset = -200
|
||||
parallax.enable = true
|
||||
parallax.tex = BG1_Berge_blau_small.png
|
||||
parallax.factor = 10
|
||||
parallax.depth = 9
|
||||
parallax.offset = -200
|
||||
parallax.enable = true
|
||||
parallax.tex = BG2_Berge_gau_small.png
|
||||
parallax.factor = 8
|
||||
|
@ -34,6 +35,12 @@ header
|
|||
., = _erdblock_upper.png
|
||||
.a = _tree1_greenish.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
|
||||
|
||||
blocks
|
||||
|
@ -48,28 +55,28 @@ blocks
|
|||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T TTTT TTTT TTTT TTTT TTTT TTTT TTTT TTTTTTTTTT T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T TTT T T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T S T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TT TTTTTTT T T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTT 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
|
||||
TTTTTTTTTT ttt TTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTT TTT T T T T T T
|
||||
TTTTTTTTTT ttt TT T TTT T T TTTTTTTTTTT T
|
||||
TTTTTTTTTT TTttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTTT T T T T
|
||||
TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTT T T TT
|
||||
TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T
|
||||
TTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T T T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTT TTTTT TTT T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T TTTTT T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTttttttttttttttttttt _ S T T ____________________TTTTTTT T___________________________________________________________________________________________________
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTtt T _T TT T GGGGGGGGGGGGGGGGGGGGGGGGGGG TGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T T _________GT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TGGGGGGGGGET T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TTEEEEEEEEEET T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T TTTTTTTTTTTTTT T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
T T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TT TTTTTTT T T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T T T T TTT
|
||||
TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTT T T T T T T T T
|
||||
TTTTTTTTTTTTTTTTTTTTTTT T TTTTTTTTTTttTTTTTTTTT TT TTTTTT T TT T T T T T T T T
|
||||
TTTTTTTTTT TTT T tttttttttttttTTTTTTTT TTT T T T T T T T T T
|
||||
TTTTTTTTTT ttt TTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTT TTT T T T T T T T
|
||||
TTTTTTTTTT ttt TT T TTT T T TTTTTTTTTTT T
|
||||
TTTTTTTTTT TTttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTTT T TT T T
|
||||
TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETTT T T S TT T T
|
||||
TTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T T
|
||||
TTTTTTTTTT TTTTTTTTTTT TEEEEEEEEEEEEEEEEEEEEEEEEEEEEETT T T T T T T T T DRAGON1
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTT TTTT TTT T S DRAGON2
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T TTTTT T S _______________________________ ___ DRAGON3
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTttttttttttttttttttt _ S T T ____________________TTTTTTT T_____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGG______________________ DRAGON4_ _____________________________________________________________
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTtt T _T TT T GGGGGGGGGGGGGGGGGGGGGGGGGGG TGGGGGEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEGGGGGGGGGGGGGGGGGGGGGDDDDDDDDDDDDDDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T T _________GT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TGGGGGGGGGET T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TTEEEEEEEEEET T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T TTTTTTTTTTTTTT T T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
T T T TT T T T EEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
T O S OT T T T T
|
||||
T O T _______ T T T T
|
||||
T O S T S _GGGGGGGTTT T T T
|
||||
|
|
|
@ -22,7 +22,11 @@
|
|||
flake-utils.lib.eachDefaultSystem (system: let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
rs-toolchain = with fenix.packages.${system}; combine [stable.toolchain];
|
||||
rs-toolchain = with fenix.packages.${system}; combine [
|
||||
stable.toolchain
|
||||
targets.wasm32-unknown-unknown.stable.rust-src
|
||||
targets.x86_64-pc-windows-gnu.stable.rust-src
|
||||
];
|
||||
in {
|
||||
devShells.default = pkgs.mkShell rec {
|
||||
buildInputs = with pkgs; [
|
||||
|
|
BIN
idle_egg.png
Before Width: | Height: | Size: 189 KiB |
BIN
idle_empty.png
Before Width: | Height: | Size: 150 KiB |
BIN
jump_egg.png
Before Width: | Height: | Size: 551 KiB |
BIN
jump_empty.png
Before Width: | Height: | Size: 431 KiB |
|
@ -7,7 +7,7 @@ use crate::AppState;
|
|||
|
||||
mod player;
|
||||
mod scene;
|
||||
mod set;
|
||||
pub mod set;
|
||||
|
||||
pub const WORLD_DEPTH: f32 = 0.5;
|
||||
pub const PLAYER_DEPTH: f32 = 0.4;
|
||||
|
|
|
@ -59,7 +59,8 @@ pub(super) fn player_plugin(app: &mut App) {
|
|||
move_player,
|
||||
debug_player_pos,
|
||||
run_animations::<PlayerAnimations>,
|
||||
),
|
||||
)
|
||||
.in_set(IngameSet),
|
||||
)
|
||||
.init_resource::<PlayerSpawnOneshot>();
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ use crate::parallax::{parallax, Parallax};
|
|||
use crate::AppState;
|
||||
|
||||
use super::player::PlayerSpawnOneshot;
|
||||
use super::set::IngameSet;
|
||||
use super::{PLAYER_DEPTH, PLAYER_SIZE_FRACTION};
|
||||
|
||||
#[derive(Component)]
|
||||
|
@ -52,7 +53,7 @@ impl From<PlayerCoords> for Transform {
|
|||
pub(super) fn scene_plugin(app: &mut App) {
|
||||
// app.add_plugins(EditorPlugin::default());
|
||||
// app.add_systems(, )
|
||||
app.add_systems(Startup, (import_text_world,));
|
||||
app.add_systems(Startup, (import_text_world,).in_set(IngameSet));
|
||||
}
|
||||
|
||||
#[derive(Default, Resource)]
|
||||
|
@ -69,7 +70,7 @@ pub(super) fn import_text_world(
|
|||
mut materials: ResMut<Assets<ColorMaterial>>,
|
||||
mut player_spawn_oneshot: Res<PlayerSpawnOneshot>,
|
||||
) {
|
||||
let world_string = fs::read_to_string("assets/world.txt").expect("need a world to load");
|
||||
let world_string = include_str!("../../assets/world.txt");
|
||||
let [info_string, links_string, world_string] =
|
||||
&readf("header\n{}\nlinks\n{}\nblocks\n{}", &world_string)
|
||||
.expect("world does not have sections")[..]
|
||||
|
@ -197,7 +198,11 @@ fn spawn_block(
|
|||
transform: Transform::from_xyz(
|
||||
x + block_size * ((len as f32 - 1.) / 2.),
|
||||
y,
|
||||
WORLD_DEPTH,
|
||||
if fixed {
|
||||
WORLD_DEPTH
|
||||
} else {
|
||||
WORLD_DEPTH - 0.01
|
||||
},
|
||||
),
|
||||
..Default::default()
|
||||
},
|
||||
|
|
116
src/main.rs
|
@ -1,7 +1,8 @@
|
|||
#![allow(unused)]
|
||||
|
||||
use bevy::prelude::*;
|
||||
use bevy_rapier2d::prelude::*;
|
||||
use game::game_plugin;
|
||||
use game::{game_plugin, set::IngameSet};
|
||||
use parallax::parallax_plugin;
|
||||
|
||||
mod game;
|
||||
|
@ -13,6 +14,7 @@ const METER: f32 = 100.;
|
|||
enum AppState {
|
||||
#[default]
|
||||
MainMenu,
|
||||
StoryPics,
|
||||
InGame,
|
||||
GameOver,
|
||||
}
|
||||
|
@ -24,6 +26,15 @@ enum PausedState {
|
|||
Running,
|
||||
}
|
||||
|
||||
#[derive(States, Debug, Clone, PartialEq, Eq, Hash, Default)]
|
||||
enum StoryPics {
|
||||
#[default]
|
||||
Pic0,
|
||||
Pic1,
|
||||
Pic2,
|
||||
Pic3,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let rapier_config = RapierConfiguration {
|
||||
scaled_shape_subdivision: 2,
|
||||
|
@ -40,17 +51,116 @@ fn main() {
|
|||
App::new()
|
||||
.add_plugins(DefaultPlugins)
|
||||
.add_plugins(RapierPhysicsPlugin::<NoUserData>::pixels_per_meter(METER))
|
||||
.add_plugins(RapierDebugRenderPlugin::default())
|
||||
// .add_plugins(RapierDebugRenderPlugin::default())
|
||||
.add_systems(Startup, setup_camera)
|
||||
.add_plugins(game_plugin)
|
||||
.add_plugins(parallax_plugin)
|
||||
.init_state::<AppState>()
|
||||
.init_state::<PausedState>()
|
||||
.insert_state(AppState::InGame) // TODO dont
|
||||
.insert_state(AppState::StoryPics) // TODO dont
|
||||
.init_state::<StoryPics>()
|
||||
.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();
|
||||
}
|
||||
|
||||
fn setup_camera(mut commands: Commands) {
|
||||
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
Before Width: | Height: | Size: 333 KiB |
BIN
walk_empty.png
Before Width: | Height: | Size: 290 KiB |