# HG changeset patch # User unC0Rr # Date 1738251480 -3600 # Node ID aba25f4e4645410afbcd101814b7106e9ea38b14 # Parent 8c90c8751b9011d9b172bef177be934bbc35d445 Implement configurable weight for tiles diff -r 8c90c8751b90 -r aba25f4e4645 rust/landgen/src/wavefront_collapse/generator.rs --- a/rust/landgen/src/wavefront_collapse/generator.rs Thu Jan 30 13:59:41 2025 +0100 +++ b/rust/landgen/src/wavefront_collapse/generator.rs Thu Jan 30 16:38:00 2025 +0100 @@ -27,6 +27,7 @@ #[derive(Debug, Clone)] pub struct TileDescription { pub name: String, + pub weight: u8, pub edges: EdgesDescription, pub is_negative: Option, pub can_flip: Option, @@ -137,7 +138,7 @@ ]; let tile = - TileImage::::new(tiles_image, top_edge, right_edge, bottom_edge, left_edge); + TileImage::::new(tiles_image, tile_description.weight, top_edge, right_edge, bottom_edge, left_edge); result.push(tile.clone()); @@ -278,7 +279,7 @@ - probability_distribution_factor) as u32; rules.push(CollapseRule { - weight, + weight: weight * tile.weight as u32 + 1, tile: Tile::Numbered(i), top, right, diff -r 8c90c8751b90 -r aba25f4e4645 rust/landgen/src/wavefront_collapse/tile_image.rs --- a/rust/landgen/src/wavefront_collapse/tile_image.rs Thu Jan 30 13:59:41 2025 +0100 +++ b/rust/landgen/src/wavefront_collapse/tile_image.rs Thu Jan 30 16:38:00 2025 +0100 @@ -38,6 +38,7 @@ #[derive(Clone)] pub struct TileImage { image: Rc>, + pub weight: u8, pub transform: Transform, top: Edge, right: Edge, @@ -48,6 +49,7 @@ impl TileImage { pub fn new( image: Vec2D, + weight: u8, top: Edge, right: Edge, bottom: Edge, @@ -55,6 +57,7 @@ ) -> Self { Self { image: Rc::new(image), + weight, transform: Transform::default(), top, right, @@ -66,6 +69,7 @@ pub fn mirrored(&self) -> Self { Self { image: self.image.clone(), + weight: self.weight, transform: self.transform.mirror(), top: self.top.reversed(), right: self.left.reversed(), @@ -77,6 +81,7 @@ pub fn flipped(&self) -> Self { Self { image: self.image.clone(), + weight: self.weight, transform: self.transform.flip(), top: self.bottom.reversed(), right: self.right.reversed(), @@ -88,6 +93,7 @@ pub fn rotated90(&self) -> Self { Self { image: self.image.clone(), + weight: self.weight, transform: self.transform.rotate90(), top: self.left.clone(), right: self.top.clone(), @@ -99,6 +105,7 @@ pub fn rotated180(&self) -> Self { Self { image: self.image.clone(), + weight: self.weight, transform: self.transform.rotate180(), top: self.bottom.clone(), right: self.left.clone(), @@ -110,6 +117,7 @@ pub fn rotated270(&self) -> Self { Self { image: self.image.clone(), + weight: self.weight, transform: self.transform.rotate270(), top: self.right.clone(), right: self.bottom.clone(), diff -r 8c90c8751b90 -r aba25f4e4645 rust/mapgen/src/template/wavefront_collapse.rs --- a/rust/mapgen/src/template/wavefront_collapse.rs Thu Jan 30 13:59:41 2025 +0100 +++ b/rust/mapgen/src/template/wavefront_collapse.rs Thu Jan 30 16:38:00 2025 +0100 @@ -8,6 +8,7 @@ #[derive(Debug, Deserialize)] pub struct TileDesc { pub name: String, + pub weight: Option, pub edges: [String; 4], pub is_negative: Option, pub can_flip: Option, @@ -95,6 +96,7 @@ Self { name: desc.name.clone(), + weight: desc.weight.unwrap_or(10), edges: EdgesDescription { top, right,