diff --git a/.gitignore b/.gitignore index d744ce2..0015b4e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /target Cargo.lock + +*.blend1 diff --git a/Cargo.toml b/Cargo.toml index 6ec1a73..bedf268 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,15 +27,13 @@ proc_macros = { path = "proc_macros" } bevy = { workspace = true } server = { workspace = true, optional = true, default-features = false } spectator_client = { workspace = true, optional = true, default-features = false } -rand = "0.9.0" [features] -default = ["debug"] -debug = ["bevy/bevy_dev_tools", "bevy/file_watcher"] +default = [] server = ["server/server"] -server_debug = ["debug", "server", "server/debug"] +server_debug = ["server", "server/debug"] spectator_client = ["spectator_client/spectator_client"] -spectator_client_debug = ["debug", "spectator_client", "spectator_client/debug"] +spectator_client_debug = ["spectator_client", "spectator_client/debug"] # Enable a small amount of optimization in debug mode [profile.dev] diff --git a/README.md b/README.md index 725c6b6..60dcb34 100644 --- a/README.md +++ b/README.md @@ -53,3 +53,6 @@ The project is split into multiple members. - Smoke: low damage, high splash, low visibility (great for cover) - Generally bad vision - Depends much on the vision of other units + +# Credit +- Tank Models made by Alexander Siegmann \ No newline at end of file diff --git a/assets/config/config.tanks.ron b/assets/config/config.tanks.ron index 4e6cf70..14dc30c 100644 --- a/assets/config/config.tanks.ron +++ b/assets/config/config.tanks.ron @@ -32,6 +32,7 @@ RIGHT: 0.2, }, respawnTimer: 25, + model: "light_tank", ), HEAVY_TANK: ( moveSpeed: 0.25, @@ -65,6 +66,7 @@ RIGHT: 0.2, }, respawnTimer: 25, + model: "heavy_tank", ), SELF_PROPELLED_ARTILLERY: ( moveSpeed: 0.1, @@ -98,6 +100,7 @@ RIGHT: 0.2, }, respawnTimer: 25, + model: "light_tank", ), }, ) \ No newline at end of file diff --git a/assets/models/tanks/blend/heavy_tank.blend b/assets/models/tanks/blend/heavy_tank.blend new file mode 100644 index 0000000..3b82068 Binary files /dev/null and b/assets/models/tanks/blend/heavy_tank.blend differ diff --git a/assets/models/tanks/blend/light_tank.blend b/assets/models/tanks/blend/light_tank.blend new file mode 100644 index 0000000..a2bf580 Binary files /dev/null and b/assets/models/tanks/blend/light_tank.blend differ diff --git a/assets/models/tanks/exported/heavy_tank.glb b/assets/models/tanks/exported/heavy_tank.glb new file mode 100644 index 0000000..17d7f46 Binary files /dev/null and b/assets/models/tanks/exported/heavy_tank.glb differ diff --git a/assets/models/tanks/exported/light_tank.glb b/assets/models/tanks/exported/light_tank.glb new file mode 100644 index 0000000..ec067a3 Binary files /dev/null and b/assets/models/tanks/exported/light_tank.glb differ diff --git a/server/Cargo.toml b/server/Cargo.toml index 87e748a..8092ba5 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -21,5 +21,13 @@ server = [ "bevy/bevy_color", "bevy/serialize", "bevy/multi_threaded", + "bevy/file_watcher", + "shared/server", +] +debug = [ + "bevy/default", + "bevy-inspector-egui", + "shared/debug", + "bevy_flycam", + "bevy/bevy_dev_tools", ] -debug = ["bevy/default", "bevy-inspector-egui", "shared/debug", "bevy_flycam"] diff --git a/server/src/gameplay/handle_players/dummy_handling.rs b/server/src/gameplay/handle_players/dummy_handling.rs index d150307..b34bdb0 100644 --- a/server/src/gameplay/handle_players/dummy_handling.rs +++ b/server/src/gameplay/handle_players/dummy_handling.rs @@ -54,7 +54,7 @@ pub fn simulate_movement( .get_tank_type_config(tank_type) .expect("Failed to get tank config"); - // Simulate movement (always forward) + /* // Simulate movement (always forward) commands.trigger_targets( MoveTankCommandTrigger { sender: None, @@ -86,7 +86,7 @@ pub fn simulate_movement( }, }, *player, - ); + ); */ // Simulate movement (randomly) /* if rand::random::() { diff --git a/server/src/gameplay/mod.rs b/server/src/gameplay/mod.rs index 06917c2..c660dfa 100644 --- a/server/src/gameplay/mod.rs +++ b/server/src/gameplay/mod.rs @@ -22,6 +22,7 @@ pub struct MyGameplayPlugin; impl Plugin for MyGameplayPlugin { fn build(&self, app: &mut App) { app.register_type::() + .register_type::() .configure_sets( Update, ( @@ -69,3 +70,13 @@ fn add_observers_to_lobby(trigger: Trigger, mut commands: Comman .observe(process_messages::process_lobby_messages) .observe(lobby_cleanup::cleanup_entities); } + +#[derive(Debug, Component, Reflect, Deref, DerefMut)] +#[reflect(Component)] +pub struct LobbyWaitTicksUntilStart(pub u32); + +impl Default for LobbyWaitTicksUntilStart { + fn default() -> Self { + Self(1) + } +} diff --git a/server/src/gameplay/start_lobby.rs b/server/src/gameplay/start_lobby.rs index 00116ee..bd3457c 100644 --- a/server/src/gameplay/start_lobby.rs +++ b/server/src/gameplay/start_lobby.rs @@ -23,8 +23,9 @@ use shared::{ use crate::networking::handle_clients::lib::MyNetworkClient; -use super::handle_players::{ - dummy_handling::DummyClientMarker, handle_spawning::RespawnPlayerTrigger, +use super::{ + handle_players::{dummy_handling::DummyClientMarker, handle_spawning::RespawnPlayerTrigger}, + LobbyWaitTicksUntilStart, }; #[derive(Debug, Event)] @@ -244,6 +245,10 @@ pub fn start_lobby( tank_configs: tank_configs.tanks.clone(), }), )); + + commands + .entity(lobby_entity) + .insert(LobbyWaitTicksUntilStart::default()); } lobby_management diff --git a/server/src/gameplay/tick_systems.rs b/server/src/gameplay/tick_systems.rs index 2941ca9..0663ea2 100644 --- a/server/src/gameplay/tick_systems.rs +++ b/server/src/gameplay/tick_systems.rs @@ -6,7 +6,9 @@ use shared::{ use crate::gameplay::triggers::CollectAndTriggerMessagesTrigger; -use super::{system_sets::MyGameplaySet, triggers::StartNextTickProcessingTrigger}; +use super::{ + system_sets::MyGameplaySet, triggers::StartNextTickProcessingTrigger, LobbyWaitTicksUntilStart, +}; pub struct TickSystemsPlugin; @@ -22,13 +24,21 @@ impl Plugin for TickSystemsPlugin { fn process_tick_timer( mut commands: Commands, - mut lobbies: Query<(Entity, &mut MyLobby)>, + mut lobbies: Query<(Entity, &mut MyLobby, Option<&mut LobbyWaitTicksUntilStart>)>, time: Res