use rand::{rngs::ThreadRng, seq::SliceRandom};

const ADJECTIVE: [&str; 35] = [
    "valiant",
    "gallant",
    "stalwart",
    "noble",
    "chivalrous",
    "fearless",
    "bold",
    "mighty",
    "regal",
    "venerable",
    "doughty",
    "heroic",
    "virtuous",
    "majestic",
    "ancient",
    "fabled",
    "valorous",
    "steadfast",
    "resolute",
    "forthright",
    "grumpy",
    "cantankerous",
    "cranky",
    "sullen",
    "pompous",
    "roguish",
    "wily",
    "somber",
    "haughty",
    "cunning",
    "dashing",
    "grim",
    "stern",
    "ardent",
    "jovial",
];

const TITLE: [&str; 30] = [
    "duke",
    "duchess",
    "baron",
    "baroness",
    "count",
    "earl",
    "lord",
    "lady",
    "knight",
    "prince",
    "princess",
    "king",
    "queen",
    "runesinger",
    "runesmith",
    "seer",
    "sage",
    "shaman",
    "witch",
    "guardian",
    "forgemaster",
    "windweaver",
    "stormcaller",
    "wavetamer",
    "wolfkin",
    "warden",
    "iceseeker",
    "thunderbearer",
    "firebringer",
    "bard",
];

const NAME: [&str; 30] = [
    "vainamoinen",
    "ilmarinen",
    "lemminkainen",
    "louhi",
    "ahti",
    "vellamo",
    "kullervo",
    "ukko",
    "tapio",
    "mielikki",
    "aino",
    "joukahainen",
    "vipunen",
    "tuoni",
    "tuonetar",
    "loviatar",
    "ilmatar",
    "otso",
    "hiisi",
    "tursas",
    "nyyrikki",
    "tuulikki",
    "sampsa",
    "kalma",
    "lempo",
    "akka",
    "marjatta",
    "goulven",
    "erika",
    "aurelien",
];

pub fn generate_file_name(rng: &mut ThreadRng) -> String {
    let title = TITLE.choose(rng).unwrap();
    let name = NAME.choose(rng).unwrap();
    let adjective = ADJECTIVE.choose(rng).unwrap();
    format!("{adjective}-{title}-{name}")
}
