diff --git a/game/Cargo.lock b/game/Cargo.lock index 1ee3696e3a1240ca4be8b5d413abd7a754451481..b06f418b7e05548f7e8662ca32c6dfff5f1f8409 100644 --- a/game/Cargo.lock +++ b/game/Cargo.lock @@ -354,7 +354,7 @@ dependencies = [ "fastrand 1.9.0", "js-sys", "notify", - "parking_lot 0.12.1", + "parking_lot", "serde", "thiserror", "wasm-bindgen", @@ -378,7 +378,7 @@ dependencies = [ "bevy_transform", "bevy_utils", "oboe", - "parking_lot 0.12.1", + "parking_lot", "rodio", ] @@ -712,7 +712,7 @@ dependencies = [ "erased-serde", "glam", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "serde", "smallvec", "smol_str", @@ -770,7 +770,7 @@ dependencies = [ "ktx2", "naga", "naga_oil", - "parking_lot 0.12.1", + "parking_lot", "regex", "ruzstd", "serde", @@ -1321,7 +1321,7 @@ dependencies = [ "ndk-context", "oboe", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -1485,7 +1485,7 @@ checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "windows-sys 0.48.0", ] @@ -1567,6 +1567,7 @@ name = "game" version = "0.1.0" dependencies = [ "bevy", + "rand", ] [[package]] @@ -2462,7 +2463,7 @@ version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8378ac0dfbd4e7895f2d2c1f1345cab3836910baf3a300b000d04250f0c8428f" dependencies = [ - "redox_syscall 0.3.5", + "redox_syscall", ] [[package]] @@ -2486,17 +2487,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -2504,21 +2494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -2529,7 +2505,7 @@ checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", "windows-targets 0.48.5", ] @@ -2596,6 +2572,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2636,6 +2618,36 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b" +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "range-alloc" version = "0.1.3" @@ -2654,15 +2666,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.3.5" @@ -3292,7 +3295,7 @@ dependencies = [ "js-sys", "log", "naga", - "parking_lot 0.11.2", + "parking_lot", "profiling", "raw-window-handle", "smallvec", @@ -3317,7 +3320,7 @@ dependencies = [ "codespan-reporting", "log", "naga", - "parking_lot 0.11.2", + "parking_lot", "profiling", "raw-window-handle", "rustc-hash", @@ -3356,7 +3359,7 @@ dependencies = [ "metal", "naga", "objc", - "parking_lot 0.11.2", + "parking_lot", "profiling", "range-alloc", "raw-window-handle", @@ -3642,7 +3645,7 @@ dependencies = [ "orbclient", "percent-encoding", "raw-window-handle", - "redox_syscall 0.3.5", + "redox_syscall", "wasm-bindgen", "wayland-scanner", "web-sys", diff --git a/game/Cargo.toml b/game/Cargo.toml index cf168c635497a9a6a897d4686aa8b177ab411b69..553af2ec4fce778e8a9540db206642001e94116c 100644 --- a/game/Cargo.toml +++ b/game/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" [dependencies] bevy = "0.11.3" +rand = "0.8" # Enable a small amount of optimization in debug mode [profile.dev] diff --git a/game/assets/FiraSans-Bold.ttf b/game/assets/FiraSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e3593fb0f3bd412542237820f34fbe74308bfada Binary files /dev/null and b/game/assets/FiraSans-Bold.ttf differ diff --git a/prof_png/pixil-frame-0 (2).png b/game/assets/enemy.png similarity index 100% rename from prof_png/pixil-frame-0 (2).png rename to game/assets/enemy.png diff --git a/game/src/main.rs b/game/src/main.rs index 616956da9233e8694d2d9b051764cb68486bcb86..bd0c5a1f8c64ed98b12053b19a773b588df0b457 100644 --- a/game/src/main.rs +++ b/game/src/main.rs @@ -1,8 +1,33 @@ use bevy::prelude::*; +use rand::Rng; #[derive(Component)] struct Player; +#[derive(Component)] +struct Health { + current: u32, + max: u32, +} + +#[derive(Component)] +struct CombatText; + + +#[derive(Component)] +struct Attack { + damage: u32, +} + +#[derive(Component)] +struct Enemy; + +#[derive(Component)] +struct CollisionBox { + width: f32, + height: f32, +} + fn main() { App::new() .add_plugins( @@ -21,11 +46,14 @@ fn main() { ) .add_systems(Startup, setup) .add_systems(Update, character_movement) + .add_systems(Startup,spawn_enemies) + .add_systems(Update,attack_system) .run(); } fn setup(mut commands: Commands, asset_server: Res<AssetServer>) { commands.spawn(Camera2dBundle::default()); + // Charger l'arrière-plan de la carte let map_texture = asset_server.load("mapdebut.png"); commands.spawn(SpriteBundle { @@ -73,4 +101,78 @@ fn character_movement( transform.translation.x -= 100.0 * time.delta_seconds(); } } -} \ No newline at end of file +} + +fn spawn_enemies(mut commands: Commands, asset_server: Res<AssetServer>, mut materials: ResMut<Assets<ColorMaterial>>) { + let enemy_texture = asset_server.load("enemy.png"); + + // Définir le nombre maximum d'ennemis + let max_enemies = 5; + + // Générer une position aléatoire pour chaque ennemi + let mut rng = rand::thread_rng(); + for _ in 0..max_enemies { + let x_position = rng.gen_range(-300.0..300.0); // Assurez-vous d'ajuster ces valeurs en fonction de la taille de votre carte + let y_position = rng.gen_range(-300.0..300.0); + + commands.spawn(SpriteBundle { + sprite: Sprite { + custom_size: Some(Vec2::new(50.0, 50.0)), + ..default() + }, + transform: Transform { + translation: Vec3::new(x_position, y_position, 0.0), + ..default() + }, + texture: enemy_texture.clone(), + ..default() + }) + .insert(Enemy) + //.insert(Health { current: 100, max: 100 }) + //.insert(Attack { damage: 10 }) + .insert(CollisionBox { width: 75.0, height: 75.0 }); + } +} +fn attack_system( + mut commands: Commands, + asset_server: Res<AssetServer>, + mut player_query: Query<(&Transform), With<Player>>, + mut enemy_query: Query<(&Transform), With<Enemy>>, + combat_text_query: Query<Entity, With<CombatText>>, // Query to handle existing combat texts +) { + // Check if the player is near an enemy to show the combat text + for (player_transform) in player_query.iter_mut() { + let mut in_combat = false; + for (enemy_transform) in enemy_query.iter_mut() { + if player_transform.translation.distance(enemy_transform.translation) < 60.0 { // Adjust this value based on the size of your collision box + in_combat = true; + break; + } + } + let has_combat_text = combat_text_query.iter().next().is_some(); + + if in_combat && !has_combat_text { + // Display the combat text + commands.spawn(TextBundle { + text: Text { + sections: vec![TextSection { + value: "Combat".to_string(), + style: TextStyle { + font: asset_server.load("FiraSans-Bold.ttf"), // Adjust this font path + font_size: 40.0, + color: Color::WHITE, + }, + }], + ..Default::default() + }, + ..Default::default() + }) + .insert(CombatText); + } else if !in_combat && has_combat_text { + // Remove the combat text + for entity in combat_text_query.iter() { + commands.entity(entity).despawn(); + } + } + } +} diff --git a/game/target/.rustc_info.json b/game/target/.rustc_info.json index 372c905fa4fb953e2fc8b9749d1d481ae62a8b6c..1eec4acb514a284952229f19b13c8ee4cc310a8d 100644 --- a/game/target/.rustc_info.json +++ b/game/target/.rustc_info.json @@ -1 +1 @@ -{"rustc_fingerprint":11201075139874679237,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.73.0 (cc66ad468 2023-10-03)\nbinary: rustc\ncommit-hash: cc66ad468955717ab92600c770da8c1601a4ff33\ncommit-date: 2023-10-03\nhost: x86_64-unknown-linux-gnu\nrelease: 1.73.0\nLLVM version: 17.0.2\n","stderr":""},"14371922958718593042":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}} \ No newline at end of file +{"rustc_fingerprint":11201075139874679237,"outputs":{"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"14371922958718593042":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.73.0 (cc66ad468 2023-10-03)\nbinary: rustc\ncommit-hash: cc66ad468955717ab92600c770da8c1601a4ff33\ncommit-date: 2023-10-03\nhost: x86_64-unknown-linux-gnu\nrelease: 1.73.0\nLLVM version: 17.0.2\n","stderr":""}},"successes":{}} \ No newline at end of file