pioneer/src/FaceParts.h

61 lines
1.9 KiB
C++

// Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
#ifndef FACE_PARTS_H
#define FACE_PARTS_H
#include <SDL_stdinc.h>
// FaceParts deals with:
// - Scanning the data/facegen/ directory and loading all the face part images
// - Generating random faces from a particular seed and constraints
// - Building a combined face image from a face descriptor
struct SDL_Surface;
namespace FaceParts {
extern const int FACE_WIDTH;
extern const int FACE_HEIGHT;
// describes a face
// components can be set to -1 to indicate that the attribute should be chosen randomly,
// or set to a non-negative integer to specify a particular part
struct FaceDescriptor {
// selectors
int species = -1;
int race = -1;
int gender = -1;
// parts
int head = -1;
int eyes = -1;
int nose = -1;
int mouth = -1;
int hairstyle = -1;
int accessories = -1;
int clothes = -1;
int armour = -1;
};
void Init();
void Uninit();
int NumSpecies();
int NumGenders(const int speciesIdx);
int NumRaces(const int speciesIdx);
int NumHeads(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumEyes(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumNoses(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumMouths(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumHairstyles(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumClothes(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumAccessories(const int speciesIdx, const int raceIdx, const int genderIdx);
int NumArmour(const int speciesIdx, const int raceIdx, const int genderIdx);
void PickFaceParts(FaceDescriptor &inout_face, const Uint32 seed);
void BuildFaceImage(SDL_Surface *faceIm, const FaceDescriptor &face);
} // namespace FaceParts
#endif