-
Notifications
You must be signed in to change notification settings - Fork 143
/
effect.go
41 lines (38 loc) · 891 Bytes
/
effect.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
package playerdb
import "github.com/df-mc/dragonfly/server/entity/effect"
func effectsToData(effects []effect.Effect) []jsonEffect {
data := make([]jsonEffect, len(effects))
for key, eff := range effects {
id, ok := effect.ID(eff.Type())
if !ok {
continue
}
data[key] = jsonEffect{
ID: id,
Duration: eff.Duration(),
Level: eff.Level(),
Ambient: eff.Ambient(),
}
}
return data
}
func dataToEffects(data []jsonEffect) []effect.Effect {
effects := make([]effect.Effect, len(data))
for i, d := range data {
e, ok := effect.ByID(d.ID)
if !ok {
continue
}
switch eff := e.(type) {
case effect.LastingType:
if d.Ambient {
effects[i] = effect.NewAmbient(eff, d.Level, d.Duration)
continue
}
effects[i] = effect.New(eff, d.Level, d.Duration)
default:
effects[i] = effect.NewInstant(eff, d.Level)
}
}
return effects
}