veloren/world/src/sim/location.rs

67 lines
1.8 KiB
Rust
Raw Normal View History

2019-06-11 18:39:25 +00:00
use rand::Rng;
2019-06-18 21:22:31 +00:00
use vek::*;
2019-06-11 18:39:25 +00:00
#[derive(Copy, Clone, Debug)]
pub enum LocationKind {
Settlement,
2019-06-18 21:22:31 +00:00
Wildnerness,
2019-06-11 18:39:25 +00:00
}
#[derive(Clone, Debug)]
pub struct Location {
name: String,
2019-06-18 21:22:31 +00:00
center: Vec2<i32>,
2019-06-11 18:39:25 +00:00
kind: LocationKind,
2019-06-18 21:22:31 +00:00
kingdom: Option<Kingdom>,
}
impl Location {
pub fn generate<R: Rng>(center: Vec2<i32>, rng: &mut R) -> Self {
Self {
name: generate_name(rng),
center,
kind: LocationKind::Wildnerness,
kingdom: None,
}
}
pub fn name(&self) -> &str {
&self.name
}
pub fn kingdom(&self) -> Option<&Kingdom> {
self.kingdom.as_ref()
}
2019-06-11 18:39:25 +00:00
}
#[derive(Clone, Debug)]
pub struct Kingdom {
name: String,
}
2019-06-18 21:22:31 +00:00
fn generate_name<R: Rng>(rng: &mut R) -> String {
let firstsyl = [
"Eri", "Val", "Gla", "Wilde", "Cold", "Deep", "Dura", "Ester", "Fay", "Dark", "West",
"East", "North", "South", "Ray", "Eri", "Dal", "Som", "Black", "Iron", "Grey", "Hel",
"Gal", "Mor", "Lo", "Nil", "Mana", "Gar", "Mountain",
2019-06-11 18:39:25 +00:00
];
let mid = ["o", "oa", "au", "e", "ea", "u", "a", "i", "ie"];
2019-06-11 18:39:25 +00:00
let tails = [
"mill", "ben", "sel", "dori", "theas", "dar", "bur", "to", "vis", "ten", "stone", "tiva",
"id", "and", "or", "el", "ond", "ia", "eld", "ald", "aft", "ift", "ity", "well", "oll",
"ill", "all", "wyn", "light", "hill", "lin", "mont", "mor", "cliff", "rok", "den", "mi",
"rock", "glenn", "rovi", "lea", "gate", "view", "ley", "wood", "ovia", "cliff", "marsh",
"kor", "light", "ice", "river", "venn", "vale",
2019-06-11 18:39:25 +00:00
];
let mut name = String::new();
/*for i in 0..rng.gen::<u32>() % 1 {
name += rng.choose(&firstsyl).unwrap();
}*/
name += rng.choose(&firstsyl).unwrap();
//name += rng.choose(&mid).unwrap();
2019-06-18 23:59:40 +00:00
name += rng.choose(&tails).unwrap();
2019-06-11 18:39:25 +00:00
name
}