From c1e53bdab034b09565a51270b4f3d14373bcd198 Mon Sep 17 00:00:00 2001 From: nquidox Date: Mon, 13 Apr 2026 14:02:44 +0300 Subject: [PATCH] some more fixes --- Cargo.lock | 16 ++++++++-------- Cargo.toml | 2 +- src/states/game/state.rs | 2 +- src/states/level/components_ball.rs | 8 ++++---- src/states/level/system_ball.rs | 2 +- src/states/level/system_cannon.rs | 19 ++++++++++++++++--- src/states/level/system_track.rs | 1 + src/states/main_menu/state.rs | 2 +- src/states/settings_menu/state.rs | 2 +- 9 files changed, 34 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07281e8..7e29985 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4184,14 +4184,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" -[[package]] -name = "rgg-zuma" -version = "0.1.0" -dependencies = [ - "bevy", - "rand 0.10.0", -] - [[package]] name = "rodio" version = "0.20.1" @@ -5993,3 +5985,11 @@ name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zuma-like" +version = "0.1.0" +dependencies = [ + "bevy", + "rand 0.10.0", +] diff --git a/Cargo.toml b/Cargo.toml index 51ee50a..900c714 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "rgg-zuma" +name = "zuma-like" version = "0.1.0" edition = "2024" diff --git a/src/states/game/state.rs b/src/states/game/state.rs index 9b0d539..e146304 100644 --- a/src/states/game/state.rs +++ b/src/states/game/state.rs @@ -73,7 +73,7 @@ fn setup_game(mut commands: Commands, asset_server: Res) { commands.entity(root).add_child(menu_root); //бэкграунд - let bg: Handle = asset_server.load("bg/game.png"); + let bg: Handle = asset_server.load("sprites/bg/game.png"); let bg_entity = spawn_background(&mut commands, bg, GameStateRootMarker); let mm_button_style = ButtonStyle { diff --git a/src/states/level/components_ball.rs b/src/states/level/components_ball.rs index 77bc7ef..bc554f0 100644 --- a/src/states/level/components_ball.rs +++ b/src/states/level/components_ball.rs @@ -20,10 +20,10 @@ pub enum BallType { impl BallType { pub const fn asset_path(&self) -> &'static str { match self { - BallType::First => "balls/1.png", - BallType::Second => "balls/2.png", - BallType::Third => "balls/3.png", - BallType::Forth => "balls/4.png", + BallType::First => "sprites/balls/1.png", + BallType::Second => "sprites/balls/2.png", + BallType::Third => "sprites/balls/3.png", + BallType::Forth => "sprites/balls/4.png", } } diff --git a/src/states/level/system_ball.rs b/src/states/level/system_ball.rs index 4359d5d..4990131 100644 --- a/src/states/level/system_ball.rs +++ b/src/states/level/system_ball.rs @@ -232,7 +232,7 @@ pub fn check_wave_completion( } // проверка на количество поинтов для победы - if score.0 == POINTS_TO_WIN { + if score.0 >= POINTS_TO_WIN { game_win.0 = true; return; } diff --git a/src/states/level/system_cannon.rs b/src/states/level/system_cannon.rs index 2f9a943..69be510 100644 --- a/src/states/level/system_cannon.rs +++ b/src/states/level/system_cannon.rs @@ -4,7 +4,7 @@ use bevy::window::PrimaryWindow; use std::collections::HashSet; pub fn setup_cannon(mut commands: Commands, asset_server: Res) { - let texture: Handle = asset_server.load("cannon/cannon.png"); + let texture: Handle = asset_server.load("sprites/cannon/cannon.png"); commands.spawn(( LevelMarker, @@ -133,7 +133,13 @@ pub fn update_cannon_preview( if let Ok(muzzle_entity) = muzzle_query.single() { // усли шарик у дула есть, то обновляем спрайт - commands.entity(muzzle_entity).insert(Sprite::from_image(muzzle_image)); + commands.entity(muzzle_entity).insert( + Sprite{ + image: muzzle_image, + custom_size: Some(Vec2::splat(SLOT_SIZE)), + ..default() + } + ); } else { //иначе создаем let preview_entity = commands.spawn(( @@ -153,7 +159,11 @@ pub fn update_cannon_preview( let next_image = asset_server.load(cannon_state.next_type.asset_path()); if let Ok(next_entity) = next_query.single() { - commands.entity(next_entity).insert(Sprite::from_image(next_image)); + commands.entity(next_entity).insert(Sprite{ + image: next_image, + custom_size: Some(Vec2::splat(SLOT_SIZE)), + ..default() + }); } else { let preview_entity = commands.spawn(( NextPreviewMarker, @@ -236,6 +246,8 @@ pub fn detect_projectile_hit( } // проверяем попадание + // FIXME из-за рассинхрона прогресса и индекса иногда шарик-снаряд + // пролетает насквозь визуально через другой шарик let hit = match HITBOX_TYPE { HitboxType::Circle => { min_dist < HIT_THRESHOLD @@ -279,6 +291,7 @@ pub fn detect_projectile_hit( // ищем конец непрерывной очереди начиная с insert_idx // строим набор занятых индексов (обязательно до вставки) + // FIXME если оторванных групп больше одной, то слияние очереди нарушается в механике, хотя визуально все ок let occupied: HashSet = balls.iter() .map(|(_, b)| b.slot_index) .collect(); diff --git a/src/states/level/system_track.rs b/src/states/level/system_track.rs index 8400501..9445d71 100644 --- a/src/states/level/system_track.rs +++ b/src/states/level/system_track.rs @@ -34,6 +34,7 @@ pub fn setup_track_with_buffer() -> TrackPath { // for debug fn make_track() -> Vec { + // make_track_40() make_track_80() } diff --git a/src/states/main_menu/state.rs b/src/states/main_menu/state.rs index fd97ee0..eca3c88 100644 --- a/src/states/main_menu/state.rs +++ b/src/states/main_menu/state.rs @@ -67,7 +67,7 @@ fn setup_main_menu(mut commands: Commands, asset_server: Res) { commands.entity(root).add_child(menu_root); //бэкграунд - let bg: Handle = asset_server.load("bg/main_menu.png"); + let bg: Handle = asset_server.load("sprites/bg/main_menu.png"); spawn_background(&mut commands, bg, MainMenuRootMarker); //задаем стиль кнопкам главного меню diff --git a/src/states/settings_menu/state.rs b/src/states/settings_menu/state.rs index 5a92008..d29d580 100644 --- a/src/states/settings_menu/state.rs +++ b/src/states/settings_menu/state.rs @@ -31,7 +31,7 @@ fn setup_settings_menu(mut commands: Commands, asset_server: Res) { )) .id(); - let bg: Handle = asset_server.load("bg/settings.png"); + let bg: Handle = asset_server.load("sprites/bg/settings.png"); spawn_background(&mut commands, bg, SettingsRootMarker); let mm_button_style = ButtonStyle {