Compare commits

..

10 commits

Author SHA1 Message Date
TudbuT
3ae4843db4
worldi 2024-11-24 19:48:04 +01:00
TudbuT
72a8a42870
include str 2024-11-24 19:36:31 +01:00
TudbuT
718f5f7c78 Merge branch 'main' of ssh://tudbut.de:222/HAWGameJam13/game 2024-11-24 18:37:40 +01:00
TudbuT
4375bc0884 level changes 2024-11-24 18:35:52 +01:00
c27cfdbb22 add story shit 2024-11-24 18:20:32 +01:00
TudbuT
a597b09970
no dbg 2024-11-24 17:31:50 +01:00
TudbuT
d2f3691e93
no more z fighting 2024-11-24 17:21:59 +01:00
TudbuT
0a04622787
Merge branch 'main' of ssh://tudbut.de:222/HAWGameJam13/game 2024-11-24 17:18:53 +01:00
TudbuT
e4a8f65652
dragon :o 2024-11-24 17:18:33 +01:00
behindspace
191077de03 Dateien nach „assets“ hochladen 2024-11-24 16:43:39 +01:00
28 changed files with 178 additions and 1134 deletions

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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"

View file

Before

Width:  |  Height:  |  Size: 863 KiB

After

Width:  |  Height:  |  Size: 863 KiB

BIN
assets/Dragon_p1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
assets/Dragon_p2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

BIN
assets/Dragon_p3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

BIN
assets/Dragon_p4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

BIN
assets/Dragon_p5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 541 KiB

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 KiB

After

Width:  |  Height:  |  Size: 431 KiB

BIN
assets/platform.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 KiB

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

After

Width:  |  Height:  |  Size: 290 KiB

View file

@ -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

View file

@ -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; [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 KiB

View file

@ -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;

View file

@ -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>();
}

View file

@ -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()
},

View file

@ -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();
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB