Improved random name generation (now a random fort and random grave is choosen
from the available ones)
--- a/QTfrontend/hwform.cpp Wed Apr 06 22:55:22 2011 +0200
+++ b/QTfrontend/hwform.cpp Wed Apr 06 22:56:05 2011 +0200
@@ -635,7 +635,7 @@
void HWForm::RandomNames()
{
editedTeam->GetFromPage(this);
- namegen->TeamRandomNames(editedTeam,FALSE);
+ namegen->TeamRandomNames(editedTeam, true);
editedTeam->SetToPage(this);
}
--- a/QTfrontend/namegen.cpp Wed Apr 06 22:55:22 2011 +0200
+++ b/QTfrontend/namegen.cpp Wed Apr 06 22:56:05 2011 +0200
@@ -40,9 +40,9 @@
-void HWNamegen::TeamRandomName(HWTeam*& team, const int &i)
+void HWNamegen::TeamRandomName(HWTeam*& team, const int HedgehogNumber)
{
- RandomNameByHat(team,i);
+ RandomNameByHat(team, HedgehogNumber);
}
void HWNamegen::TeamRandomNames(HWTeam*& team, const bool changeteamname)
@@ -55,11 +55,13 @@
if (TypesTeamnames[kind].size() > 0){
team->TeamName = TypesTeamnames[kind][rand()%(TypesTeamnames[kind].size())];
}
- team->Grave = "Simple"; // Todo: make it semi-random
- team->Fort = "Island"; // Todo: make it semi-random
+ team->Grave = GetRandomGrave();
+ team->Fort = GetRandomFort();
team->Voicepack = "Default";
}
+ //give each hedgehog a random name:
+ //TODO: load the dictionary only once! (right now it's loaded once for each hedgehog)
for(int i = 0; i < 8; i++)
{
if ((TypesHatnames[kind].size()) > 0){
@@ -73,15 +75,15 @@
}
-void HWNamegen::RandomNameByHat(HWTeam*& team, const int &i)
+void HWNamegen::RandomNameByHat(HWTeam*& team, const int HedgehogNumber)
{
QStringList Dictionaries;
- HatCfgLoad(team->Hedgehogs[i].Hat,Dictionaries);
+ HatCfgLoad(team->Hedgehogs[HedgehogNumber].Hat,Dictionaries);
QStringList Dictionary;
DictLoad(Dictionaries[rand()%(Dictionaries.size())],Dictionary);
- team->Hedgehogs[i].Name = Dictionary[rand()%(Dictionary.size())];
+ team->Hedgehogs[HedgehogNumber].Name = Dictionary[rand()%(Dictionary.size())];
}
void HWNamegen::DictLoad(const QString filename, QStringList &list)
@@ -164,3 +166,45 @@
}
+
+QString HWNamegen::GetRandomGrave()
+{
+ QStringList Graves;
+
+ //list all available Graves
+ QDir tmpdir;
+ tmpdir.cd(datadir->absolutePath());
+ tmpdir.cd("Graphics/Graves");
+ tmpdir.setFilter(QDir::Files);
+ Graves.append(tmpdir.entryList(QStringList("*.png")).replaceInStrings(QRegExp("^(.*)\\.png"), "\\1"));
+
+ if(Graves.size()==0)
+ {
+ //do some serious error handling
+ return "Error";
+ }
+
+ //pick a random grave
+ return Graves[rand()%(Graves.size())];
+}
+
+QString HWNamegen::GetRandomFort()
+{
+ QStringList Forts;
+
+ //list all available Forts
+ QDir tmpdir;
+ tmpdir.cd(datadir->absolutePath());
+ tmpdir.cd("Forts");
+ tmpdir.setFilter(QDir::Files);
+ Forts.append(tmpdir.entryList(QStringList("*L.png")).replaceInStrings(QRegExp("^(.*)L\\.png"), "\\1"));
+
+ if(Forts.size()==0)
+ {
+ //do some serious error handling
+ return "Error";
+ }
+
+ //pick a random fort
+ return Forts[rand()%(Forts.size())];
+}
\ No newline at end of file
--- a/QTfrontend/namegen.h Wed Apr 06 22:55:22 2011 +0200
+++ b/QTfrontend/namegen.h Wed Apr 06 22:56:05 2011 +0200
@@ -31,9 +31,9 @@
HWNamegen();
~HWNamegen();
- void TeamRandomName(HWTeam*& team, const int &i);
+ void TeamRandomName(HWTeam*& team, const int HedgehogNumber);
void TeamRandomNames(HWTeam*& team, const bool changeteamname);
- void RandomNameByHat(HWTeam*& team, const int &i);
+ void RandomNameByHat(HWTeam*& team, const int HedgehogNumber);
private:
@@ -43,6 +43,9 @@
void TypesLoad();
void DictLoad(const QString filename, QStringList &list);
void HatCfgLoad(const QString hatname, QStringList &list);
+
+ QString GetRandomGrave();
+ QString GetRandomFort();
};