refactor: extract generic digging system, drop tables, remove debug code

- New src/entities/item/drop_table.rs: DropEntry (chance, min/max count,
  pseudo-RNG roll) + DropTable wrapper. grass=5% coin 1-2, rock=10% coin 1,
  dirt/air=none.
- New src/entities/shared_systems/digging.rs: Digger component + dig_system.
  Any entity with Digger digs the tile below on its interval. Replaces
  rabbit_dig_system/rabbit_fall_debug_system/RabbitDigTimer/RabbitFallDebug.
- New TileMap::dig_floor: remove_floor + insert air. Used by dig_system.
- FloorTileData: added drop_table field. Lost Copy derive (Vec field).
  Updated all 6 terrain.rs call sites with per-tile drop tables.
- Pig: removed PigDropTimer + pig_drop_system. Drops were debug placeholder.
  TODO added for future loot-on-death/butcher system.
- Rabbit: removed all debug components/systems. Now uses Digger::new(5.0).
- main.rs: removed rabbit_dig_system/rabbit_fall_debug_system/pig_drop_system,
  added shared_systems::digging::dig_system.
This commit is contained in:
2026-03-21 15:40:34 +00:00
parent 1a170ea9a9
commit ce3746366c
9 changed files with 238 additions and 301 deletions
+3 -7
View File
@@ -3,7 +3,7 @@ use bevy_rand::prelude::*;
use crate::entities::{
item::{initialize_item_rotation_state, item_tile_management_system, ItemRotationTimer},
livestock::pig::pig_drop_system,
shared_systems::digging::dig_system,
};
use crate::game::SpawnDelay;
@@ -45,10 +45,6 @@ fn main() {
.insert_resource(ClearColor(Color::srgb(0., 0., 0.)))
.add_plugins(world::WorldPlugin)
.add_plugins(entities::pathfinding::PathfindingPlugin)
.add_systems(
FixedUpdate,
entities::livestock::rabbit::rabbit_fall_debug_system,
)
.add_systems(
Startup,
(camera::spawn_panning_camera, cursor::setup_cursor),
@@ -63,10 +59,10 @@ fn main() {
entities::sentient::dorf::spawn_dorfs,
entities::livestock::pig::spawn_pigs,
entities::livestock::rabbit::spawn_rabbits,
entities::livestock::rabbit::rabbit_dig_system,
dig_system,
),
)
.add_systems(Update, pig_drop_system)
.insert_resource(ItemRotationTimer::default())
.add_systems(Update, initialize_item_rotation_state)
.add_systems(