๐Ÿ“ฆ sleepyfran / duets

๐Ÿ“„ Skill.Types.fs ยท 39 lines
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