* Returns a new random name (first + last) from the * lists of names contained within. * @param gender Returned gender of the name. * @return The soldier's name. */
| 91 | * @return The soldier's name. |
| 92 | */ |
| 93 | std::wstring SoldierNamePool::genName(SoldierGender *gender) const |
| 94 | { |
| 95 | std::wostringstream name; |
| 96 | int gen = RNG::generate(1, 10); |
| 97 | if (gen <= 5) |
| 98 | { |
| 99 | *gender = GENDER_MALE; |
| 100 | size_t first = RNG::generate(0, _maleFirst.size() - 1); |
| 101 | name << _maleFirst[first]; |
| 102 | if (!_maleLast.empty()) |
| 103 | { |
| 104 | size_t last = RNG::generate(0, _maleLast.size() - 1); |
| 105 | name << " " << _maleLast[last]; |
| 106 | } |
| 107 | } |
| 108 | else |
| 109 | { |
| 110 | *gender = GENDER_FEMALE; |
| 111 | size_t first = RNG::generate(0, _femaleFirst.size() - 1); |
| 112 | name << _femaleFirst[first]; |
| 113 | if (!_femaleLast.empty()) |
| 114 | { |
| 115 | size_t last = RNG::generate(0, _femaleLast.size() - 1); |
| 116 | name << " " << _femaleLast[last]; |
| 117 | } |
| 118 | } |
| 119 | return name.str(); |
| 120 | } |
| 121 | |
| 122 | /** |
| 123 | * Generates an int representing the index of the soldier's look, when passed the maximum index value. |