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