- randomize distribution of crafting_stations to static positions

This commit is contained in:
floppy 2022-02-02 22:15:04 +01:00
parent ddc35d8b7d
commit 595e6ee076

View File

@ -1,5 +1,8 @@
use super::*; use super::*;
use crate::Land; use crate::{
util::{RandomField, Sampler},
Land,
};
use common::terrain::{Block, BlockKind, SpriteKind}; use common::terrain::{Block, BlockKind, SpriteKind};
use rand::prelude::*; use rand::prelude::*;
use vek::*; use vek::*;
@ -108,62 +111,35 @@ impl Structure for Workshop {
); );
} }
} }
let ( let positions = [
crafting_bench_pos, Vec2::new(center.x + 3, center.y - 2),
forge_pos, Vec2::new(center.x + 3, center.y + 2),
spinning_wheel_pos, Vec2::new(center.x - 3, center.y),
cauldron_pos, Vec2::new(center.x, center.y + 3),
cooking_pot_pos, Vec2::new(center.x, center.y - 3),
tanning_rack_pos, Vec2::new(center.x + 6, center.y),
loom_pos, Vec2::new(center.x - 6, center.y),
anvil_pos, Vec2::new(center.x, center.y - 6),
dismantling_bench_pos, Vec2::new(center.x, center.y + 6),
) = ( ];
Vec2::new(center.x + 3, center.y - 2).with_z(base), let mut stations = vec![
Vec2::new(center.x + 3, center.y + 2).with_z(base), SpriteKind::CraftingBench,
Vec2::new(center.x - 3, center.y).with_z(base), SpriteKind::Forge,
Vec2::new(center.x, center.y + 3).with_z(base), SpriteKind::SpinningWheel,
Vec2::new(center.x, center.y - 3).with_z(base), SpriteKind::TanningRack,
Vec2::new(center.x + 6, center.y).with_z(base), SpriteKind::CookingPot,
Vec2::new(center.x - 6, center.y).with_z(base), SpriteKind::Cauldron,
Vec2::new(center.x, center.y - 6).with_z(base), SpriteKind::Loom,
Vec2::new(center.x, center.y + 6).with_z(base), SpriteKind::Anvil,
); SpriteKind::DismantlingBench,
/* ];
//painter-rng to randomize distribution if stations.len() == positions.len() {
let ( for position in positions {
crafting_bench_pos, let cr_station = stations.swap_remove(
forge_pos, RandomField::new(0).get(position.with_z(base)) as usize % stations.len(),
spinning_wheel_pos, );
cauldron_pos, painter.sprite(position.with_z(base), cr_station);
cooking_pot_pos, }
tanning_rack_pos, }
loom_pos,
anvil_pos,
dismantling_bench_pos,
) = [
Vec2::new(center.x + 3, center.y - 2).with_z(base),
Vec2::new(center.x + 3, center.y + 2).with_z(base),
Vec2::new(center.x - 3, center.y).with_z(base),
Vec2::new(center.x, center.y + 3).with_z(base),
Vec2::new(center.x, center.y - 3).with_z(base),
Vec2::new(center.x + 6, center.y).with_z(base),
Vec2::new(center.x - 6, center.y).with_z(base),
Vec2::new(center.x, center.y - 6).with_z(base),
Vec2::new(center.x, center.y + 6).with_z(base),
]
.choose_multiple(&mut rng, 9)
.collect_tuple()
.unwrap();
*/
painter.sprite(crafting_bench_pos, SpriteKind::CraftingBench);
painter.sprite(forge_pos, SpriteKind::Forge);
painter.sprite(spinning_wheel_pos, SpriteKind::SpinningWheel);
painter.sprite(tanning_rack_pos, SpriteKind::TanningRack);
painter.sprite(cooking_pot_pos, SpriteKind::CookingPot);
painter.sprite(cauldron_pos, SpriteKind::Cauldron);
painter.sprite(loom_pos, SpriteKind::Loom);
painter.sprite(anvil_pos, SpriteKind::Anvil);
painter.sprite(dismantling_bench_pos, SpriteKind::DismantlingBench);
} }
} }