Pioneer
FaceParts.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef FACE_PARTS_H
5 #define FACE_PARTS_H
6 
7 #include <SDL_stdinc.h>
8 
9 // FaceParts deals with:
10 // - Scanning the data/facegen/ directory and loading all the face part images
11 // - Generating random faces from a particular seed and constraints
12 // - Building a combined face image from a face descriptor
13 
14 struct SDL_Surface;
15 
16 namespace FaceParts {
17  extern const int FACE_WIDTH;
18  extern const int FACE_HEIGHT;
19 
20  // describes a face
21  // components can be set to -1 to indicate that the attribute should be chosen randomly,
22  // or set to a non-negative integer to specify a particular part
23  struct FaceDescriptor {
24  // selectors
25  int species = -1;
26  int race = -1;
27  int gender = -1;
28 
29  // parts
30  int head = -1;
31  int eyes = -1;
32  int nose = -1;
33  int mouth = -1;
34  int hairstyle = -1;
35  int accessories = -1;
36  int clothes = -1;
37  int armour = -1;
38  };
39 
40  void Init();
41  void Uninit();
42 
43  int NumSpecies();
44  int NumGenders(const int speciesIdx);
45  int NumRaces(const int speciesIdx);
46 
47  int NumHeads(const int speciesIdx, const int raceIdx, const int genderIdx);
48  int NumEyes(const int speciesIdx, const int raceIdx, const int genderIdx);
49  int NumNoses(const int speciesIdx, const int raceIdx, const int genderIdx);
50  int NumMouths(const int speciesIdx, const int raceIdx, const int genderIdx);
51  int NumHairstyles(const int speciesIdx, const int raceIdx, const int genderIdx);
52  int NumClothes(const int speciesIdx, const int raceIdx, const int genderIdx);
53  int NumAccessories(const int speciesIdx, const int raceIdx, const int genderIdx);
54  int NumArmour(const int speciesIdx, const int raceIdx, const int genderIdx);
55 
56  void PickFaceParts(FaceDescriptor &inout_face, const Uint32 seed);
57  void BuildFaceImage(SDL_Surface *faceIm, const FaceDescriptor &face);
58 } // namespace FaceParts
59 
60 #endif
Definition: FaceParts.h:16
int NumClothes(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:355
int NumHeads(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:330
int NumMouths(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:345
int NumRaces(const int speciesIdx)
Definition: FaceParts.cpp:324
int NumAccessories(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:360
int NumSpecies()
Definition: FaceParts.cpp:313
void BuildFaceImage(SDL_Surface *faceIm, const FaceDescriptor &face)
Definition: FaceParts.cpp:412
int NumHairstyles(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:350
const int FACE_WIDTH
Definition: FaceParts.cpp:296
int NumNoses(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:340
int NumArmour(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:365
int NumGenders(const int speciesIdx)
Definition: FaceParts.cpp:318
void Uninit()
Definition: FaceParts.cpp:307
const int FACE_HEIGHT
Definition: FaceParts.cpp:297
void PickFaceParts(FaceDescriptor &inout_face, const Uint32 seed)
Definition: FaceParts.cpp:385
void Init()
Definition: FaceParts.cpp:299
int NumEyes(const int speciesIdx, const int raceIdx, const int genderIdx)
Definition: FaceParts.cpp:335
Definition: FaceParts.h:23
int race
Definition: FaceParts.h:26
int armour
Definition: FaceParts.h:37
int head
Definition: FaceParts.h:30
int species
Definition: FaceParts.h:25
int nose
Definition: FaceParts.h:32
int gender
Definition: FaceParts.h:27
int hairstyle
Definition: FaceParts.h:34
int mouth
Definition: FaceParts.h:33
int clothes
Definition: FaceParts.h:36
int accessories
Definition: FaceParts.h:35
int eyes
Definition: FaceParts.h:31