This repository has been archived by the owner on Oct 2, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
hobbies.go
99 lines (89 loc) · 1.82 KB
/
hobbies.go
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package chargen
import "math/rand"
// Hobby is a pasttime
type Hobby struct {
Name string
RequiresOthers bool
IsAdultOnly bool
IsChildOnly bool
}
func getAllHobbies() []Hobby {
hobbies := []Hobby{
Hobby{
Name: "whittling",
RequiresOthers: false,
IsAdultOnly: false,
IsChildOnly: false,
},
Hobby{
Name: "carving",
RequiresOthers: false,
IsAdultOnly: false,
IsChildOnly: false,
},
Hobby{
Name: "darts",
RequiresOthers: false,
IsAdultOnly: false,
IsChildOnly: false,
},
Hobby{
Name: "tournaments",
RequiresOthers: false,
IsAdultOnly: true,
IsChildOnly: false,
},
Hobby{
Name: "fishing",
RequiresOthers: false,
IsAdultOnly: false,
IsChildOnly: false,
},
Hobby{
Name: "hunting",
RequiresOthers: false,
IsAdultOnly: true,
IsChildOnly: false,
},
Hobby{
Name: "painting",
RequiresOthers: false,
IsAdultOnly: false,
IsChildOnly: false,
},
Hobby{
Name: "drinking",
RequiresOthers: false,
IsAdultOnly: true,
IsChildOnly: false,
},
}
return hobbies
}
func getHobbiesForAgeCategory(category string) []Hobby {
potentialHobbies := getAllHobbies()
hobbies := []Hobby{}
if category == "infant" {
hobbies = []Hobby{}
} else if category == "child" {
for _, h := range potentialHobbies {
if !h.IsAdultOnly {
hobbies = append(hobbies, h)
}
}
} else {
for _, h := range potentialHobbies {
if !h.IsChildOnly {
hobbies = append(hobbies, h)
}
}
}
return hobbies
}
func (character Character) getRandomHobby() Hobby {
hobbies := getHobbiesForAgeCategory(character.AgeCategory)
if len(hobbies) > 0 {
return hobbies[rand.Intn(len(hobbies)-1)]
}
return Hobby{}
}