Plugin cleanup

This commit is contained in:
2026-03-22 00:43:03 +00:00
parent d61baaf1ba
commit cafe376841
8 changed files with 93 additions and 20 deletions
+2
View File
@@ -4,3 +4,5 @@ pub mod systems;
pub use crate::world::tiles::tilemap::CargoPlaceError; pub use crate::world::tiles::tilemap::CargoPlaceError;
pub use components::{Cargo, CarryVisualState, HaulSlot, Haulable}; pub use components::{Cargo, CarryVisualState, HaulSlot, Haulable};
pub use systems::{any_hauling, carry_visual_system, haul_encumbrance_system}; pub use systems::{any_hauling, carry_visual_system, haul_encumbrance_system};
pub use crate::plugins::cargo::CargoPlugin;
+2 -4
View File
@@ -63,7 +63,7 @@ use crate::constants::{
ITILE_SIZE, PATHFINDER_HIERARCHICAL_THRESHOLD_CHUNKS, PATHFINDER_MAX_NODES, ITILE_SIZE, PATHFINDER_HIERARCHICAL_THRESHOLD_CHUNKS, PATHFINDER_MAX_NODES,
PATHFINDER_PROVISIONAL_NODE_LIMIT, PIXEL_RATIO, TILE_SIZE, PATHFINDER_PROVISIONAL_NODE_LIMIT, PIXEL_RATIO, TILE_SIZE,
}; };
use crate::entities::cargo::haul_encumbrance_system;
use crate::entities::item::inventory::{update_encumbrance, InventoryChangedEvent}; use crate::entities::item::inventory::{update_encumbrance, InventoryChangedEvent};
use crate::entities::shared_systems::constants::{ use crate::entities::shared_systems::constants::{
CONVOY_DOT_THRESHOLD, ES_DIRECTION_THRESHOLD, HEAD_ON_DOT_THRESHOLD, OCCUPANCY_CROWD_THRESHOLD, CONVOY_DOT_THRESHOLD, ES_DIRECTION_THRESHOLD, HEAD_ON_DOT_THRESHOLD, OCCUPANCY_CROWD_THRESHOLD,
@@ -71,7 +71,7 @@ use crate::entities::shared_systems::constants::{
WALK_SPEED_DIVISOR, WALK_SPEED_DIVISOR,
}; };
use crate::entities::shared_systems::occupancy::{rebuild_tile_occupancy, TileOccupancy}; use crate::entities::shared_systems::occupancy::{rebuild_tile_occupancy, TileOccupancy};
use crate::entities::tasks::task_executor_system;
use crate::world::tiles::tile_changed::{PathfindingDirtyChunks, TileChangedEvent}; use crate::world::tiles::tile_changed::{PathfindingDirtyChunks, TileChangedEvent};
use crate::world::tiles::TileMap; use crate::world::tiles::TileMap;
use crate::world::{ use crate::world::{
@@ -232,7 +232,6 @@ impl Plugin for PathfindingPlugin {
FixedUpdate, FixedUpdate,
( (
rebuild_tile_occupancy, rebuild_tile_occupancy,
haul_encumbrance_system,
update_encumbrance, update_encumbrance,
collect_pathfinding_dirty_chunks, collect_pathfinding_dirty_chunks,
invalidate_paths_on_tile_change, invalidate_paths_on_tile_change,
@@ -240,7 +239,6 @@ impl Plugin for PathfindingPlugin {
// DEPRECATED: Wandering now handled by Task::Idle in task executor // DEPRECATED: Wandering now handled by Task::Idle in task executor
update_wandering_targets, update_wandering_targets,
movement, movement,
task_executor_system,
) )
.chain(), .chain(),
) )
+2
View File
@@ -6,3 +6,5 @@ pub mod idle;
pub use components::{Task, TaskQueue, TaskState}; pub use components::{Task, TaskQueue, TaskState};
pub use events::{TaskBlocked, TaskClaimed, TaskCompleted, TaskDropped, TaskFailed}; pub use events::{TaskBlocked, TaskClaimed, TaskCompleted, TaskDropped, TaskFailed};
pub use executor::task_executor_system; pub use executor::task_executor_system;
pub use crate::plugins::tasks::TasksPlugin;
+13 -15
View File
@@ -1,14 +1,12 @@
use bevy::prelude::*; use bevy::prelude::*;
use bevy_rand::prelude::*; use bevy_rand::prelude::*;
use crate::entities::{ use crate::entities::item::{
cargo::carry_visual_system, initialize_item_rotation_state, item_tile_management_system, ItemRotationTimer,
cargo::any_hauling,
item::{initialize_item_rotation_state, item_tile_management_system, ItemRotationTimer},
shared_systems::digging::dig_system,
tasks::{TaskClaimed, TaskCompleted, TaskFailed, TaskDropped, TaskBlocked},
}; };
use crate::game::SpawnDelay; use crate::game::SpawnDelay;
use crate::plugins::{CargoPlugin, TasksPlugin, EntitiesPlugin};
use crate::world::WorldPlugin;
mod camera; mod camera;
mod config; mod config;
@@ -17,6 +15,7 @@ mod cursor;
mod debug; mod debug;
mod entities; mod entities;
mod game; mod game;
mod plugins;
mod system_info; mod system_info;
mod world; mod world;
@@ -46,13 +45,13 @@ fn main() {
(constants::SEED as u64).to_le_bytes(), (constants::SEED as u64).to_le_bytes(),
)) ))
.insert_resource(ClearColor(Color::srgb(0., 0., 0.))) .insert_resource(ClearColor(Color::srgb(0., 0., 0.)))
.add_plugins(world::WorldPlugin) .add_plugins((
.add_plugins(entities::pathfinding::PathfindingPlugin) WorldPlugin,
.add_message::<TaskClaimed>() EntitiesPlugin,
.add_message::<TaskCompleted>() CargoPlugin,
.add_message::<TaskFailed>() TasksPlugin,
.add_message::<TaskDropped>() entities::pathfinding::PathfindingPlugin,
.add_message::<TaskBlocked>() ))
.add_systems( .add_systems(
Startup, Startup,
(camera::spawn_panning_camera, cursor::setup_cursor), (camera::spawn_panning_camera, cursor::setup_cursor),
@@ -67,7 +66,7 @@ fn main() {
entities::sentient::dorf::spawn_dorfs, entities::sentient::dorf::spawn_dorfs,
entities::livestock::pig::spawn_pigs, entities::livestock::pig::spawn_pigs,
entities::livestock::rabbit::spawn_rabbits, entities::livestock::rabbit::spawn_rabbits,
dig_system, entities::shared_systems::digging::dig_system,
), ),
) )
@@ -78,6 +77,5 @@ fn main() {
item_tile_management_system.after(initialize_item_rotation_state), item_tile_management_system.after(initialize_item_rotation_state),
) )
.add_systems(Update, debug::entity_dump::dump_entity_positions) .add_systems(Update, debug::entity_dump::dump_entity_positions)
.add_systems(Update, carry_visual_system.run_if(any_hauling))
.run(); .run();
} }
+20
View File
@@ -0,0 +1,20 @@
//! CargoPlugin — registers cargo/haul systems and events.
//!
//! Systems:
//! - haul_encumbrance_system (FixedUpdate, before update_encumbrance)
//! - carry_visual_system (Update, run_if any_hauling)
use crate::entities::cargo::{any_hauling, carry_visual_system, haul_encumbrance_system};
use bevy::prelude::*;
pub struct CargoPlugin;
impl Plugin for CargoPlugin {
fn build(&self, app: &mut App) {
app.add_systems(
FixedUpdate,
haul_encumbrance_system.before(crate::entities::item::inventory::update_encumbrance),
)
.add_systems(Update, carry_visual_system.run_if(any_hauling));
}
}
+15
View File
@@ -0,0 +1,15 @@
//! EntitiesPlugin — aggregates entity-type plugins for clean composition.
//!
//! This is a meta-plugin that adds sub-plugins for each entity category.
//! Keeps main.rs from needing to know about every entity submodule.
use bevy::prelude::*;
pub struct EntitiesPlugin;
impl Plugin for EntitiesPlugin {
fn build(&self, app: &mut App) {
// Placeholder — entity bundles are added at spawn time via component bundles.
// Future: add SentientPlugin, LivestockPlugin, ItemPlugin as they're created.
}
}
+11
View File
@@ -0,0 +1,11 @@
//! Plugin composition layer — re-exports all game plugins.
//!
//! main.rs should only import from this module, not reach into src/entities/*.
pub mod cargo;
pub mod tasks;
pub mod entities;
pub use cargo::CargoPlugin;
pub use tasks::TasksPlugin;
pub use entities::EntitiesPlugin;
+27
View File
@@ -0,0 +1,27 @@
//! TasksPlugin — registers task infrastructure: executor, events, idle logic.
//!
//! Systems:
//! - task_executor_system (FixedUpdate, after pathfinding movement setup)
use crate::entities::tasks::{
task_executor_system, TaskBlocked, TaskClaimed, TaskCompleted, TaskDropped, TaskFailed,
};
use bevy::prelude::*;
pub struct TasksPlugin;
impl Plugin for TasksPlugin {
fn build(&self, app: &mut App) {
app.add_message::<TaskClaimed>()
.add_message::<TaskCompleted>()
.add_message::<TaskFailed>()
.add_message::<TaskDropped>()
.add_message::<TaskBlocked>()
.add_systems(
FixedUpdate,
task_executor_system
.after(crate::entities::shared_systems::pathfinding::prepare_paths)
.before(crate::entities::shared_systems::pathfinding::movement),
);
}
}