#pragma once #include #include #include #include #include //Second order markov chain name generator class NameGenerator { public: struct ProbData { int occurances; std::unordered_map nextCount; }; std::map,ProbData> data; std::vector names; std::map,int> nameStarts; std::set usedNames; float mutationChance; bool useGeneration; bool preventDuplicates; NameGenerator(); void clear(); void read(const std::string& filename); void write(const std::string& filename); bool hasName(const std::string& name); void addName(const std::string& name); void addAssociation(int first, int second, int next); unsigned getNameCount(); std::string generate(); };