diff -r 2e7a32c44ab3 -r 92c597704e57 QTfrontend/util/namegen.cpp --- a/QTfrontend/util/namegen.cpp Sat Sep 23 07:45:18 2017 +0200 +++ b/QTfrontend/util/namegen.cpp Sat Sep 23 09:12:35 2017 +0200 @@ -77,8 +77,7 @@ // pick team name based on hat if (mode == HWNamegen::rtmEverything) - { - team.setName(getRandomTeamName(kind)); + { team.setName(getRandomTeamName(kind)); team.setGrave(getRandomGrave()); team.setFort(getRandomFort()); team.setFlag(getRandomFlag()); @@ -88,7 +87,7 @@ QStringList dicts; QStringList dict; - if ((TypesHatnames[kind].size()) <= 0) + if ((mode == HWNamegen::rtmHogNames || mode == HWNamegen::rtmEverything) && (TypesHatnames[kind].size()) <= 0) { dicts = dictsForHat(team.hedgehog(0).Hat); dict = dictContents(dicts[rand()%(dicts.size())]); @@ -96,15 +95,20 @@ for(int i = 0; i < HEDGEHOGS_PER_TEAM; i++) { - if (((TypesHatnames[kind].size()) > 0) && (mode == HWNamegen::rtmEverything || mode == HWNamegen::rtmHats)) + if (mode == HWNamegen::rtmEverything && (TypesHatnames[kind].size()) > 0) { HWHog hh = team.hedgehog(i); hh.Hat = TypesHatnames[kind][rand()%(TypesHatnames[kind].size())]; team.setHedgehog(i,hh); } + else if (mode == HWNamegen::rtmHats) + { + HWNamegen::teamRandomHat(team,i); + } + // there is a chance that this hog has the same hat as the previous one // let's reuse the hat-specific dict in this case - if ((i == 0) || (team.hedgehog(i).Hat != team.hedgehog(i-1).Hat)) + if ( (mode == HWNamegen::rtmHogNames || mode == HWNamegen::rtmEverything) && ((i == 0) || (team.hedgehog(i).Hat != team.hedgehog(i-1).Hat))) { dicts = dictsForHat(team.hedgehog(i).Hat); dict = dictContents(dicts[rand()%(dicts.size())]); @@ -117,6 +121,24 @@ } +void HWNamegen::teamRandomHat(HWTeam & team, const int HedgehogNumber, bool withDLC) +{ + HWHog hh = team.hedgehog(HedgehogNumber); + + hh.Hat = getRandomHat(withDLC); + + team.setHedgehog(HedgehogNumber, hh); +} + +void HWNamegen::teamRandomHat(HWTeam & team, const int HedgehogNumber, const QStringList & dict) +{ + HWHog hh = team.hedgehog(HedgehogNumber); + + hh.Name = dict[rand()%(dict.size())]; + + team.setHedgehog(HedgehogNumber, hh); +} + void HWNamegen::teamRandomHogName(HWTeam & team, const int HedgehogNumber) { QStringList dicts = dictsForHat(team.hedgehog(HedgehogNumber).Hat); @@ -291,6 +313,29 @@ return QString(); } +QString HWNamegen::getRandomHat(bool withDLC) +{ + QStringList Hats; + + // list all available hats + Hats.append(DataManager::instance().entryList( + "Graphics/Hats", + QDir::Files, + QStringList("*.png"), + withDLC + ).replaceInStrings(QRegExp("\\.png$"), "") + ); + + if(Hats.size()==0) + { + // TODO do some serious error handling + return "Error"; + } + + // pick a random hat + return Hats[rand()%(Hats.size())]; +} + QString HWNamegen::getRandomGrave(bool withDLC) { QStringList Graves;