1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
6 #include "game-type.h"
7 #include "item-prop-enum.h"
8 #include "job-type.h"
9 #include "species-type.h"
10 
11 using std::string;
12 using std::vector;
13 
14 // Either a character definition, with real species, job, and
15 // weapon, book, wand as appropriate.
16 // Or a character choice, with possibly random/viable entries.
17 struct newgame_def
18 {
19     string name;
20     game_type type;
21     string filename;
22     uint64_t seed;
23     bool pregenerate;
24 
25     // map name for sprint (or others in the future)
26     // XXX: "random" means a random eligible map
27     string map;
28 
29     string arena_teams;
30 
31     vector<string> allowed_combos;
32     vector<species_type> allowed_species;
33     vector<job_type> allowed_jobs;
34     vector<weapon_type> allowed_weapons;
35 
36     species_type species;
37     job_type job;
38 
39     weapon_type weapon;
40 
41     // Only relevant for character choice, where the entire
42     // character was randomly picked in one step.
43     // If this is true, the species field encodes whether
44     // the choice was for a viable character or not.
45     bool fully_random;
46 
47     newgame_def();
48     void clear_character();
49 };
50