-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathevents.go
136 lines (98 loc) · 2.99 KB
/
events.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package notifier
import (
"fmt"
"math"
log "github.com/sirupsen/logrus"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
type eventFn func(*Notifier, journalEvent, bool) error
func (e *Notifier) notify(msg string, skipNotify bool) error {
if skipNotify {
return nil
}
if err := e.bot.Send(msg); err != nil {
return fmt.Errorf("error sending message: %v", err)
}
return nil
}
func hullDamageEvent(e *Notifier, j journalEvent, skipNotify bool) error {
if j.Fighter && !e.cfg.FighterNotifs {
return nil
}
prefix := "Ship"
if j.Fighter {
prefix = "Fighter"
}
h := int(math.Round(j.Health * 100))
return e.notify(fmt.Sprintf("%s hull damage detected, integrity is %d%%", prefix, h), skipNotify)
}
func diedEvent(e *Notifier, j journalEvent, skipNotify bool) error {
return e.notify("Your ship has been destroyed", skipNotify)
}
func shieldStateEvent(e *Notifier, j journalEvent, skipNotify bool) error {
var msg string
if j.ShieldsUp {
msg = "Shields are up again"
} else {
msg = "Shields are down!"
}
return e.notify(msg, skipNotify)
}
func bountyEvent(e *Notifier, j journalEvent, skipNotify bool) error {
e.totalPiratesReward += j.TotalPiratesReward
e.killedPirates++
j.printLog("Pirates killed:", e.killedPirates)
p := message.NewPrinter(language.Make("en"))
bounties := p.Sprintf("%d", e.totalPiratesReward)
j.printLog("Total bounty rewards:", bounties)
if !e.cfg.KillsNotifs {
return nil
}
if !e.cfg.KillsSilentNotifs || e.killedPirates%10 == 0 {
return e.notify(fmt.Sprintf("Total rewards: %s credits\nPirates killed: %d", bounties, e.killedPirates), skipNotify)
}
return nil
}
func missionAcceptedEvent(e *Notifier, j journalEvent, skipNotify bool) error {
e.activeMissions++
e.loggedMissions[j.MissionID] = false
j.printLog("Active missions:", e.activeMissions)
return nil
}
func missionRedirectedEvent(e *Notifier, j journalEvent, skipNotify bool) error {
if e.loggedMissions[j.MissionID] {
return nil
}
e.activeMissions--
e.loggedMissions[j.MissionID] = true
j.printLog("Active missions:", e.activeMissions)
if e.activeMissions == 0 {
return e.notify("No more active missions, go collect new ones!", skipNotify)
}
return nil
}
func missionCompletedEvent(e *Notifier, j journalEvent, skipNotify bool) error {
if e.loggedMissions[j.MissionID] {
return nil
}
e.activeMissions--
delete(e.loggedMissions, j.MissionID)
e.totalMissionsReward += j.MissionReward
j.printLog("Obtained reward for missions until now:", e.totalMissionsReward)
j.printLog("Active missions:", e.activeMissions)
if e.activeMissions == 0 {
return e.notify("No more active missions, go collect new ones!", skipNotify)
}
return nil
}
func missionAbandonedEvent(e *Notifier, j journalEvent, skipNotify bool) error {
e.activeMissions--
delete(e.loggedMissions, j.MissionID)
return nil
}
func missionsInitEvent(e *Notifier, j journalEvent, skipNotify bool) error {
log.Infoln("Found missions log message, running new initialization")
e.initNotifier()
return nil
}