Do a window-port specific player type selection. If player_selection() offers a Quit option, it is its responsibility to clean up and terminate the process. You need to fill in pl_character[0]. */
| 269 | the process. You need to fill in pl_character[0]. |
| 270 | */ |
| 271 | void |
| 272 | mswin_player_selection(void) |
| 273 | { |
| 274 | logDebug("mswin_player_selection()\n"); |
| 275 | |
| 276 | if (iflags.wc_player_selection == VIA_DIALOG) { |
| 277 | /* pick player type randomly (use pre-selected |
| 278 | * role/race/gender/alignment) */ |
| 279 | if (flags.randomall) { |
| 280 | if (flags.initrole < 0) { |
| 281 | flags.initrole = pick_role(flags.initrace, flags.initgend, |
| 282 | flags.initalign, PICK_RANDOM); |
| 283 | if (flags.initrole < 0) { |
| 284 | raw_print("Incompatible role!"); |
| 285 | flags.initrole = randrole(FALSE); |
| 286 | } |
| 287 | } |
| 288 | |
| 289 | if (flags.initrace < 0 |
| 290 | || !validrace(flags.initrole, flags.initrace)) { |
| 291 | flags.initrace = pick_race(flags.initrole, flags.initgend, |
| 292 | flags.initalign, PICK_RANDOM); |
| 293 | if (flags.initrace < 0) { |
| 294 | raw_print("Incompatible race!"); |
| 295 | flags.initrace = randrace(flags.initrole); |
| 296 | } |
| 297 | } |
| 298 | |
| 299 | if (flags.initgend < 0 |
| 300 | || !validgend(flags.initrole, flags.initrace, |
| 301 | flags.initgend)) { |
| 302 | flags.initgend = pick_gend(flags.initrole, flags.initrace, |
| 303 | flags.initalign, PICK_RANDOM); |
| 304 | if (flags.initgend < 0) { |
| 305 | raw_print("Incompatible gender!"); |
| 306 | flags.initgend = randgend(flags.initrole, flags.initrace); |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | if (flags.initalign < 0 |
| 311 | || !validalign(flags.initrole, flags.initrace, |
| 312 | flags.initalign)) { |
| 313 | flags.initalign = pick_align(flags.initrole, flags.initrace, |
| 314 | flags.initgend, PICK_RANDOM); |
| 315 | if (flags.initalign < 0) { |
| 316 | raw_print("Incompatible alignment!"); |
| 317 | flags.initalign = |
| 318 | randalign(flags.initrole, flags.initrace); |
| 319 | } |
| 320 | } |
| 321 | } else { |
| 322 | /* select a role */ |
| 323 | if (!mswin_player_selection_window()) { |
| 324 | bail(0); |
| 325 | } |
| 326 | } |
| 327 | } else { /* iflags.wc_player_selection == VIA_PROMPTS */ |
| 328 | prompt_for_player_selection(); |
nothing calls this directly
no test coverage detected