MCPcopy Create free account
hub / github.com/NetHack/NetHack / mswin_player_selection

Function mswin_player_selection

outdated/sys/wince/mswproc.c:207–274  ·  view source on GitHub ↗

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]. */

Source from the content-addressed store, hash-verified

205 the process. You need to fill in pl_character[0].
206*/
207void
208mswin_player_selection(void)
209{
210 logDebug("mswin_player_selection()\n");
211
212#if defined(WIN_CE_SMARTPHONE)
213 /* SmartPhone does not supprt combo-boxes therefor we cannot
214 use dialog for player selection */
215 prompt_for_player_selection();
216#else
217 if (iflags.wc_player_selection == VIA_DIALOG) {
218 int nRole;
219
220 /* pick player type randomly (use pre-selected
221 * role/race/gender/alignment) */
222 if (flags.randomall) {
223 if (flags.initrole < 0) {
224 flags.initrole = pick_role(flags.initrace, flags.initgend,
225 flags.initalign, PICK_RANDOM);
226 if (flags.initrole < 0) {
227 raw_print("Incompatible role!");
228 flags.initrole = randrole(FALSE);
229 }
230 }
231
232 if (flags.initrace < 0
233 || !validrace(flags.initrole, flags.initrace)) {
234 flags.initrace = pick_race(flags.initrole, flags.initgend,
235 flags.initalign, PICK_RANDOM);
236 if (flags.initrace < 0) {
237 raw_print("Incompatible race!");
238 flags.initrace = randrace(flags.initrole);
239 }
240 }
241
242 if (flags.initgend < 0
243 || !validgend(flags.initrole, flags.initrace,
244 flags.initgend)) {
245 flags.initgend = pick_gend(flags.initrole, flags.initrace,
246 flags.initalign, PICK_RANDOM);
247 if (flags.initgend < 0) {
248 raw_print("Incompatible gender!");
249 flags.initgend = randgend(flags.initrole, flags.initrace);
250 }
251 }
252
253 if (flags.initalign < 0
254 || !validalign(flags.initrole, flags.initrace,
255 flags.initalign)) {
256 flags.initalign = pick_align(flags.initrole, flags.initrace,
257 flags.initgend, PICK_RANDOM);
258 if (flags.initalign < 0) {
259 raw_print("Incompatible alignment!");
260 flags.initalign =
261 randalign(flags.initrole, flags.initrace);
262 }
263 }
264 } else {

Callers

nothing calls this directly

Calls 15

pick_roleFunction · 0.85
raw_printFunction · 0.85
randroleFunction · 0.85
validraceFunction · 0.85
pick_raceFunction · 0.85
randraceFunction · 0.85
validgendFunction · 0.85
pick_gendFunction · 0.85
randgendFunction · 0.85
validalignFunction · 0.85
pick_alignFunction · 0.85
randalignFunction · 0.85

Tested by

no test coverage detected