示例#1
0
vector<Deity*> generateDeities() {
  set<Epithet> used;
  vector<Deity*> ret;
  for (auto elem : epithetsMap) {
    string deity = NameGenerator::deityNames.getNext();
    Gender gend = Gender::male;
    if ((deity.back() == 'a' || deity.back() == 'i') && !Random.roll(4))
      gend = Gender::female;
    vector<Epithet> ep;
    for (int i : Range(Random.getRandom(1, 4))) {
      Epithet epithet;
      int cnt = 100;
      do {
        epithet = chooseRandom(elem.second);
      } while (used.count(epithet) && --cnt > 0);
      if (cnt == 0)
        break;
      used.insert(epithet);
      ep.push_back(epithet);
    }
    if (ep.empty())
      return generateDeities();
    ret.push_back(new Deity(deity, gend, ep, elem.first)); 
  }
  return ret;
}
示例#2
0
vector<Deity*> generateDeities() {
  set<EpithetId> used;
  vector<Deity*> ret;
  for (auto elem : epithetsMap) {
    string deity = NameGenerator::get(NameGeneratorId::DEITY)->getNext();
    Gender gend = Gender::male;
    if ((deity.back() == 'a' || deity.back() == 'i') && !Random.roll(4))
      gend = Gender::female;
    vector<EpithetId> ep;
    for (int i : Range(Random.get(1, 4))) {
      EpithetId epithet;
      int cnt = 100;
      do {
        epithet = chooseRandom(elem.second);
      } while (used.count(epithet) && --cnt > 0);
      if (cnt == 0)
        break;
      used.insert(epithet);
      ep.push_back(epithet);
    }
    if (ep.empty())
      return generateDeities();
    ret.push_back(new Deity(deity, gend, ep, elem.first)); 
  }
  for (Deity* deity : ret)
    Debug() << deity->getName() + " lives in " + deity->getHabitatString() + ". " 
      << deity->getGender().he() << " is the " << deity->getGender().god() 
          << " of " << deity->getEpithetsString();
  return ret;
}
示例#3
0
vector<Deity*> Deity::getDeities() {
  if (deities.empty()) {
    deities = generateDeities();
    for (Deity* d : deities)
      for (EpithetId id : d->getEpithets())
        byEpithet[id] = d;
  }
  return deities;
}
示例#4
0
vector<Deity*> Deity::getDeities() {
  if (deities.empty())
    deities = generateDeities();
  return deities;
}
示例#5
0
vector<Deity*> Deity::getDeities() {
  static vector<Deity*> deities = generateDeities();
  return deities;
}