Skip to content

Commit

Permalink
refactor: add new state AutoCratePush
Browse files Browse the repository at this point in the history
  • Loading branch information
ShenMian committed Jan 16, 2024
1 parent 6d133d7 commit cdffe0a
Show file tree
Hide file tree
Showing 8 changed files with 147 additions and 163 deletions.
2 changes: 1 addition & 1 deletion src/components.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ pub struct Player;
pub struct Crate;

#[derive(Component)]
pub struct ReachableMark;
pub struct CratePushableMark;

#[derive(Component)]
pub struct LowerBoundMark;
7 changes: 0 additions & 7 deletions src/events.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
use bevy::prelude::*;
use nalgebra::Vector2;

#[derive(Event)]
pub struct SelectCrateEvent(pub Vector2<i32>);

#[derive(Event)]
pub struct UnselectCrateEvent;

#[derive(Event)]
pub struct UpdateGridPositionEvent;
58 changes: 35 additions & 23 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,35 +79,43 @@ fn main() {
)
.add_systems(PostStartup, spawn_board);

app.add_systems(Update, (button_visual_effect, update_button_state));

app.add_systems(
Update,
(
button_visual_effect,
update_button_state,
adjust_viewport,
(
button_input_to_action,
handle_action,
mouse_input_to_action,
handle_automatic_solution_action,
adjust_viewport,
mouse_input,
check_level_solved,
spawn_board.run_if(resource_changed_or_removed::<LevelId>()),
handle_viewport_zoom_action,
)
.chain(),
update_grid_position_from_board.run_if(on_event::<UpdateGridPositionEvent>()),
select_crate.run_if(on_event::<SelectCrateEvent>()),
unselect_crate.run_if(on_event::<UnselectCrateEvent>()),
update_hud,
file_drag_and_drop,
)
.run_if(in_state(AppState::Main)),
),
)
.add_systems(
FixedUpdate,
(
animate_tiles_movement,
animate_player_movement,
animate_camera_zoom,
),
);

app.add_systems(
Update,
(
(
handle_other_action,
mouse_input,
check_level_solved,
spawn_board.run_if(resource_changed_or_removed::<LevelId>()),
)
.chain(),
update_grid_position_from_board.run_if(on_event::<UpdateGridPositionEvent>()),
update_hud,
file_drag_and_drop,
)
.run_if(in_state(AppState::Main)),
);
Expand All @@ -118,28 +126,32 @@ fn main() {
)
.add_systems(
Update,
(
update_solver,
(button_input_to_action, handle_automatic_solution_action).chain(),
)
.run_if(in_state(AppState::AutomaticSolution)),
update_solver.run_if(in_state(AppState::AutomaticSolution)),
)
.add_systems(
OnExit(AppState::AutomaticSolution),
despawn_lowerbound_marks,
)
.insert_resource(SolverState::default());

app.add_systems(OnEnter(AppState::AutoCratePush), spawn_crate_pushable_marks)
.add_systems(
Update,
mouse_input.run_if(in_state(AppState::AutoCratePush)),
)
.add_systems(
OnExit(AppState::AutoCratePush),
despawn_crate_pushable_marks,
);

app.init_resource::<ActionState<Action>>()
.insert_resource(Action::input_map());

app.insert_resource(settings)
.insert_resource(player_movement)
.insert_resource(CrateSelectState::default());
.insert_resource(AutoCratePushState::default());

app.add_event::<SelectCrateEvent>()
.add_event::<UnselectCrateEvent>()
.add_event::<UpdateGridPositionEvent>();
app.add_event::<UpdateGridPositionEvent>();

app.run();
}
16 changes: 8 additions & 8 deletions src/resources.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,17 +55,17 @@ pub struct PlayerMovement {
}

#[derive(Resource)]
pub enum CrateSelectState {
None,
Some {
selected_crate: Vector2<i32>,
paths: HashMap<PushState, Vec<Vector2<i32>>>,
},
pub struct AutoCratePushState {
pub selected_crate: Vector2<i32>,
pub paths: HashMap<PushState, Vec<Vector2<i32>>>,
}

impl Default for CrateSelectState {
impl Default for AutoCratePushState {
fn default() -> Self {
Self::None
Self {
selected_crate: Vector2::zeros(),
paths: HashMap::new(),
}
}
}

Expand Down
1 change: 1 addition & 0 deletions src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ pub enum AppState {
#[default]
Main,
AutomaticSolution,
AutoCratePush,
}
Loading

0 comments on commit cdffe0a

Please sign in to comment.