void generatename(namest &name,int32_t language_index,short nametype,word_selectorst &major_selector,word_selectorst &minor_selector)
| 279 | |
| 280 | // void generatename(namest &name,int32_t language_index,short nametype,word_selectorst &major_selector,word_selectorst &minor_selector) |
| 281 | void Translation::generateName(df::language_name *name, int language_index, df::language_name_type nametype, df::language_word_table *major_selector, df::language_word_table *minor_selector) |
| 282 | { |
| 283 | CHECK_NULL_POINTER(name); |
| 284 | CHECK_NULL_POINTER(major_selector); |
| 285 | CHECK_NULL_POINTER(minor_selector); |
| 286 | if (!rng_inited) |
| 287 | { |
| 288 | rng.init(); |
| 289 | rng_inited = true; |
| 290 | } |
| 291 | for (int i = 0; i < 100; i++) |
| 292 | { |
| 293 | if ((nametype != language_name_type::LegendaryFigure) && (nametype != language_name_type::FigureNoFirst)) |
| 294 | { |
| 295 | *name = df::language_name(); |
| 296 | if (language_index == -1) |
| 297 | language_index = rng.df_trandom(world->raws.language.translations.size()); |
| 298 | name->type = nametype; |
| 299 | name->language = language_index; |
| 300 | } |
| 301 | name->has_name = 1; |
| 302 | if (name->language == -1) |
| 303 | name->language = rng.df_trandom(world->raws.language.translations.size()); |
| 304 | |
| 305 | int r; // persistent random number for various cases |
| 306 | switch (nametype) |
| 307 | { |
| 308 | case language_name_type::Figure: |
| 309 | case language_name_type::FigureNoFirst: |
| 310 | case language_name_type::FigureFirstOnly: |
| 311 | case language_name_type::TrueName: |
| 312 | if (nametype != language_name_type::FigureNoFirst) |
| 313 | { |
| 314 | name->first_name = ""; |
| 315 | int32_t index; |
| 316 | df::part_of_speech asp; |
| 317 | chooseWord(major_selector, index, asp, language_word_table_index::FirstName); |
| 318 | // language_handlerst::addnativesyllable(index, name->first_name, name->language) |
| 319 | if (name->language >= 0 && (size_t)name->language < world->raws.language.translations.size()) |
| 320 | { |
| 321 | auto trans = world->raws.language.translations[name->language]; |
| 322 | if (index >= 0 && (size_t)index < trans->words.size()) |
| 323 | name->first_name.append(trans->words[index]->c_str()); |
| 324 | } |
| 325 | } |
| 326 | if (nametype != language_name_type::FigureFirstOnly) |
| 327 | { |
| 328 | switch (rng.df_trandom(2)) |
| 329 | { |
| 330 | case 0: |
| 331 | chooseWord(major_selector, name->words[language_name_component::FrontCompound], name->parts_of_speech[language_name_component::FrontCompound], language_word_table_index::FrontCompound); |
| 332 | chooseWord(minor_selector, name->words[language_name_component::RearCompound], name->parts_of_speech[language_name_component::RearCompound], language_word_table_index::RearCompound); |
| 333 | break; |
| 334 | case 1: |
| 335 | chooseWord(minor_selector, name->words[language_name_component::FrontCompound], name->parts_of_speech[language_name_component::FrontCompound], language_word_table_index::FrontCompound); |
| 336 | chooseWord(major_selector, name->words[language_name_component::RearCompound], name->parts_of_speech[language_name_component::RearCompound], language_word_table_index::RearCompound); |
| 337 | break; |
| 338 | } |
nothing calls this directly
no test coverage detected