1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39namespace Duets.Entities
[<AutoOpen>]
module SkillTypes =
/// Identifier of a skill which represents its internal type.
[<RequireQualifiedAccess>]
type SkillId =
(* Music. *)
| Composition
| Genre of Genre
| Instrument of InstrumentType
(* Production. *)
| MusicProduction
(* Character. *)
| Fitness
| Speech
| Cooking
(* Job. *)
| Barista
| Bartending
| Presenting
/// Defines all possible categories to which skills can be related to.
[<RequireQualifiedAccess>]
type SkillCategory =
| Character
| Job
| Music
| Production
/// Represents a skill that the character can have. This only includes the base
/// fields of the skill, more specific types are available depending on what
/// information we need.
type Skill =
{ Id: SkillId; Category: SkillCategory }
/// Defines the relation between a skill and its level.
type SkillWithLevel = Skill * int