migratetion to 0.18.0

This commit is contained in:
2026-02-16 00:02:00 +00:00
parent a9040a4c9e
commit 4ef68c4e04
17 changed files with 1260 additions and 732 deletions
Generated
+1202 -676
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -4,12 +4,12 @@ version = "0.1.0"
edition = "2021"
[dependencies]
bevy = { version = "0.16.1", features = ["wayland"] }
bevy = { version = "0.18.0", features = ["wayland"] }
noise = "0.9.0"
rand = "0.9.2"
bevy_rand = { version = "0.11.3", features = ["wyrand"] }
image = "0.25.8"
bevy_platform = "0.16.1"
rand = "0.10.0"
bevy_rand = { version = "0.14.0", features = ["wyrand"] }
image = "0.25.9"
bevy_platform = "0.18.0"
rayon = "1.11.0"
# Enable max optimizations for dependencies, but not for our code:
+1 -2
View File
@@ -1,7 +1,6 @@
use bevy::input::keyboard::KeyCode;
use bevy::input::mouse::{MouseScrollUnit, MouseWheel};
use bevy::prelude::*;
use bevy::render::camera::{OrthographicProjection, Projection};
use crate::game;
use crate::world::{Z_ABOVE, Z_BELOW};
@@ -76,7 +75,7 @@ pub fn spawn_panning_camera(mut commands: Commands) {
));
}
pub fn scroll_events(mut evr_scroll: EventReader<MouseWheel>, mut query: Query<&mut Projection>) {
pub fn scroll_events(mut evr_scroll: MessageReader<MouseWheel>, mut query: Query<&mut Projection>) {
const LINE_SENSITIVITY: f32 = 0.035;
const PIXEL_SENSITIVITY: f32 = 0.001;
const MIN_SCALE: f32 = 0.3;
@@ -46,7 +46,7 @@ pub fn spawn_prefab(
.get(&position.as_ivec3())
.unwrap_or(&Vec::new())
.clone();
items.push(meat.index());
items.push(meat.index_u32());
tilemap
.item_tiles
.insert(position.as_ivec3(), items.clone());
@@ -81,7 +81,7 @@ pub fn spawn_prefab(
.get(&position.as_ivec3())
.unwrap_or(&Vec::new())
.clone();
items.push(coin.index());
items.push(coin.index_u32());
tilemap
.item_tiles
.insert(position.as_ivec3(), items.clone());
+6 -3
View File
@@ -130,11 +130,12 @@ pub fn item_tile_management_system(
// Single item: ensure visible
if items.len() <= 1 {
if let Some(&entity_id) = items.first() {
let entity = Entity::from_raw(entity_id);
if let Some(entity) = Entity::from_raw_u32(entity_id) {
if let Ok(mut rotation_state) = item_query.get_mut(entity) {
rotation_state.should_be_visible = true;
}
}
}
continue;
}
@@ -146,19 +147,21 @@ pub fn item_tile_management_system(
.unwrap_or(0);
for &entity_id in items {
let entity = Entity::from_raw(entity_id);
if let Some(entity) = Entity::from_raw_u32(entity_id) {
if let Ok(mut rotation_state) = item_query.get_mut(entity) {
rotation_state.should_be_visible = false;
}
}
}
let next_index = (current_index + 1) % items.len();
if let Some(&next_entity_id) = items.get(next_index) {
let next_entity = Entity::from_raw(next_entity_id);
if let Some(next_entity) = Entity::from_raw_u32(next_entity_id) {
if let Ok(mut rotation_state) = item_query.get_mut(next_entity) {
rotation_state.should_be_visible = true;
}
}
}
rotation_timer.current_indices.insert(position, next_index);
}
+3 -3
View File
@@ -6,7 +6,7 @@ use crate::world::tiles::tilemap;
use crate::world::VisibleGameEntity;
use bevy::prelude::*;
use bevy_rand::prelude::*;
use rand::Rng;
use rand::RngExt;
#[derive(Bundle)]
pub struct Pig {
@@ -45,7 +45,7 @@ pub struct PigDropTimer(pub Timer);
pub fn spawn_pigs(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut rng_q: Query<&mut Entropy<WyRand>, With<Global>>,
mut rng_q: Query<&mut WyRand, With<GlobalRng>>,
) {
if let Ok(mut rng) = rng_q.single_mut() {
for _ in 0..5 {
@@ -70,7 +70,7 @@ pub fn pig_drop_system(
time: Res<Time>,
mut pigs: Query<(&mut PigDropTimer, &Transform)>,
mut tilemap: ResMut<tilemap::TileMap>,
mut rng_q: Query<&mut Entropy<WyRand>, With<Global>>,
mut rng_q: Query<&mut WyRand, With<GlobalRng>>,
) {
for (mut timer, transform) in &mut pigs {
timer.tick(time.delta());
+2 -2
View File
@@ -4,7 +4,7 @@ use crate::entities::shared_components::Ambulatory;
use crate::world::VisibleGameEntity;
use bevy::prelude::*;
use bevy_rand::prelude::*;
use rand::Rng;
use rand::RngExt;
#[derive(Bundle)]
pub struct Rabbit {
@@ -38,7 +38,7 @@ impl Rabbit {
pub fn spawn_rabbits(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut rng_q: Query<&mut Entropy<WyRand>, With<Global>>,
mut rng_q: Query<&mut WyRand, With<GlobalRng>>,
) {
if let Ok(mut rng) = rng_q.single_mut() {
for _ in 0..15 {
+2 -2
View File
@@ -4,7 +4,7 @@ use crate::entities::shared_components::Ambulatory;
use crate::world::VisibleGameEntity;
use bevy::prelude::*;
use bevy_rand::prelude::*;
use rand::Rng;
use rand::RngExt;
#[derive(Bundle)]
pub struct Dorf {
@@ -38,7 +38,7 @@ impl Dorf {
pub fn spawn_dorfs(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut rng_q: Query<&mut Entropy<WyRand>, With<Global>>,
mut rng_q: Query<&mut WyRand, With<GlobalRng>>,
) {
if let Ok(mut rng) = rng_q.single_mut() {
// Spawn a handful of dorfs
+2 -2
View File
@@ -4,7 +4,7 @@ use crate::world::{chunks::ChunkMap, chunks::CHUNK_SIZE};
use crate::{constants::*, entities::shared_components::Ambulatory};
use bevy::{math::ivec3, prelude::*};
use bevy_rand::prelude::*;
use rand::Rng;
use rand::RngExt;
use std::{
collections::{BinaryHeap, HashMap, HashSet},
process::exit,
@@ -41,7 +41,7 @@ pub fn update_wandering_targets(
mut query: Query<(&mut Ambulatory, &Transform)>, // add a 'with' here when behaviours are implemented
tilemap: Res<TileMap>,
chunk_map: Res<ChunkMap>,
mut rng_q: Query<&mut Entropy<WyRand>, With<Global>>,
mut rng_q: Query<&mut WyRand, With<GlobalRng>>,
) {
if let Ok(mut rng) = rng_q.single_mut() {
for (mut ambulatory, _) in query.iter_mut() {
+1 -1
View File
@@ -33,7 +33,7 @@ fn main() {
})
.set(ImagePlugin::default_nearest()),
)
.add_plugins(bevy_rand::plugin::EntropyPlugin::<WyRand>::with_seed(
.add_plugins(EntropyPlugin::<WyRand>::with_seed(
(constants::SEED as u64).to_le_bytes(),
))
.insert_resource(ClearColor(Color::srgb(0., 0., 0.)))
+11 -11
View File
@@ -25,29 +25,29 @@ impl Default for ChunkMap {
}
}
#[derive(Event)]
#[derive(Message)]
pub struct GenerateChunkEvent {
pub chunk_position: IVec2,
}
#[derive(Event)]
#[derive(Message)]
pub struct ChunkTerrainEvent {
pub chunk_position: IVec2,
}
#[derive(Event)]
#[derive(Message)]
// CAlculate the weather effecrs and rivers/lakes of this chunk
pub struct ChunkWeatheringAndPrecipitationEvent {
pub chunk_position: IVec2,
}
#[derive(Event)]
#[derive(Message)]
pub struct ChunkForrestryEvent {
pub chunk_position: IVec2,
pub floor_tiles: Vec<(Vec3, String)>,
}
#[derive(Event)]
#[derive(Message)]
pub struct ChunkFoliageEvent {
pub chunk_position: IVec2,
}
#[derive(Event)]
#[derive(Message)]
pub struct ChunkFaunaEvent {
pub chunk_position: IVec2,
}
@@ -58,12 +58,12 @@ pub fn setup_chunk_system(mut commands: Commands) {
}
pub fn handle_chunk_events(
mut chunk_events: EventReader<GenerateChunkEvent>,
mut chunk_events: MessageReader<GenerateChunkEvent>,
mut chunk_map: ResMut<ChunkMap>,
mut terrain_event_writer: EventWriter<ChunkTerrainEvent>,
mut weathering_event_writer: EventWriter<ChunkWeatheringAndPrecipitationEvent>,
mut foliage_event_writer: EventWriter<ChunkFoliageEvent>,
mut fauna_event_writer: EventWriter<ChunkFaunaEvent>,
mut terrain_event_writer: MessageWriter<ChunkTerrainEvent>,
mut weathering_event_writer: MessageWriter<ChunkWeatheringAndPrecipitationEvent>,
mut foliage_event_writer: MessageWriter<ChunkFoliageEvent>,
mut fauna_event_writer: MessageWriter<ChunkFaunaEvent>,
mut cwss: ResMut<CurrentWorldSpriteState>,
) {
let mut any = false;
+1 -1
View File
@@ -4,7 +4,7 @@ use crate::world::{tiles::TileMap, ChunkMap, GenerateChunkEvent};
pub fn generate_chunk_fauna(
mut commands: Commands,
mut events: EventReader<GenerateChunkEvent>,
mut events: MessageReader<GenerateChunkEvent>,
mut chunk_map: ResMut<ChunkMap>,
mut tilemap: ResMut<TileMap>,
) {
+1 -1
View File
@@ -4,7 +4,7 @@ use crate::world::{tiles::TileMap, ChunkMap, GenerateChunkEvent};
pub fn generate_chunk_foliage(
mut commands: Commands,
mut events: EventReader<GenerateChunkEvent>,
mut events: MessageReader<GenerateChunkEvent>,
mut chunk_map: ResMut<ChunkMap>,
mut tilemap: ResMut<TileMap>,
) {
+2 -2
View File
@@ -4,7 +4,7 @@ use bevy_platform::sync::Mutex;
use bevy_platform::time::Instant;
use bevy_rand::prelude::*;
use rand::{Rng, SeedableRng};
use rand::{RngExt, SeedableRng};
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
@@ -18,7 +18,7 @@ use crate::{
pub fn generate_chunk_forrestry(
commands: ParallelCommands<'_, '_>,
mut events: EventReader<ChunkForrestryEvent>,
mut events: MessageReader<ChunkForrestryEvent>,
mut tilemap: ResMut<TileMap>,
texture_ids: Res<TextureIDs>,
textures: Res<Textures>,
+3 -3
View File
@@ -28,10 +28,10 @@ pub fn generate_surface_terrain(x: i32, y: i32) -> f32 {
pub fn generate_chunk_terrain(
commands: ParallelCommands<'_, '_>, // Use ParallelCommands for parallel spawning
mut events: EventReader<ChunkTerrainEvent>,
mut events: MessageReader<ChunkTerrainEvent>,
mut tilemap: ResMut<TileMap>,
mut forrestry_event_writer: EventWriter<ChunkForrestryEvent>,
mut occlusion_event_writer: EventWriter<TileOcclusionEvent>,
mut forrestry_event_writer: MessageWriter<ChunkForrestryEvent>,
mut occlusion_event_writer: MessageWriter<TileOcclusionEvent>,
) {
let is_empty = events.is_empty();
let start = Instant::now();
+8 -8
View File
@@ -23,13 +23,13 @@ pub struct WorldPlugin;
impl Plugin for WorldPlugin {
fn build(&self, app: &mut App) {
app.init_resource::<ChunkMap>()
.add_event::<GenerateChunkEvent>()
.add_event::<ChunkTerrainEvent>()
.add_event::<ChunkWeatheringAndPrecipitationEvent>()
.add_event::<ChunkForrestryEvent>()
.add_event::<ChunkFoliageEvent>()
.add_event::<ChunkFaunaEvent>()
.add_event::<TileOcclusionEvent>()
.add_message::<GenerateChunkEvent>()
.add_message::<ChunkTerrainEvent>()
.add_message::<ChunkWeatheringAndPrecipitationEvent>()
.add_message::<ChunkForrestryEvent>()
.add_message::<ChunkFoliageEvent>()
.add_message::<ChunkFaunaEvent>()
.add_message::<TileOcclusionEvent>()
.add_systems(Startup, (setup_chunk_system, setup_initial_chunks).chain())
.add_systems(
FixedUpdate,
@@ -68,7 +68,7 @@ impl Plugin for WorldPlugin {
}
}
fn setup_initial_chunks(mut event_writer: EventWriter<GenerateChunkEvent>) {
fn setup_initial_chunks(mut event_writer: MessageWriter<GenerateChunkEvent>) {
for x in -5..=5 {
for y in -5..=5 {
event_writer.write(GenerateChunkEvent {
+2 -2
View File
@@ -67,7 +67,7 @@ pub fn compute_visibility_of_game_entities(
});
}
#[derive(Event)]
#[derive(Message)]
pub struct TileOcclusionEvent {
pub tile_position: IVec3,
}
@@ -76,7 +76,7 @@ pub fn handle_tile_occlusion_updates(
mut tilemap: ResMut<TileMap>,
mut floor_tiles: Query<(Entity, &mut FloorTile, &Transform)>,
mut cwss: ResMut<CurrentWorldSpriteState>,
mut events: EventReader<TileOcclusionEvent>,
mut events: MessageReader<TileOcclusionEvent>,
) {
let start = Instant::now();