/
handle_token.go
74 lines (64 loc) · 1.95 KB
/
handle_token.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
package game
import (
"context"
"errors"
"fmt"
"github.com/yokaiio/yokai_server/define"
pbGame "github.com/yokaiio/yokai_server/proto/game"
"github.com/yokaiio/yokai_server/services/game/player"
"github.com/yokaiio/yokai_server/transport"
)
func (m *MsgHandler) handleAddToken(ctx context.Context, sock transport.Socket, p *transport.Message) error {
msg, ok := p.Body.(*pbGame.C2M_AddToken)
if !ok {
return errors.New("handleAddToken failed: recv message body error")
}
return m.g.am.AccountExecute(sock, func(acct *player.Account) error {
pl, err := m.g.am.GetPlayerByAccount(acct)
if err != nil {
return fmt.Errorf("handleAddToken.AccountExecute failed: %w", err)
}
err = pl.TokenManager().TokenInc(msg.Type, msg.Value)
if err != nil {
return fmt.Errorf("handleAddToken.AccountExecute failed: %w", err)
}
reply := &pbGame.M2C_TokenList{}
for n := 0; n < define.Token_End; n++ {
v, err := pl.TokenManager().GetToken(int32(n))
if err != nil {
return fmt.Errorf("handleAddToken.AccountExecute failed: %w", err)
}
t := &pbGame.Token{
Type: v.ID,
Value: v.Value,
MaxHold: v.MaxHold,
}
reply.Tokens = append(reply.Tokens, t)
}
acct.SendProtoMessage(reply)
return nil
})
}
func (m *MsgHandler) handleQueryTokens(ctx context.Context, sock transport.Socket, p *transport.Message) error {
return m.g.am.AccountExecute(sock, func(acct *player.Account) error {
pl, err := m.g.am.GetPlayerByAccount(acct)
if err != nil {
return fmt.Errorf("handleQueryTokens.AccountExecute failed: %w", err)
}
reply := &pbGame.M2C_TokenList{}
for n := 0; n < define.Token_End; n++ {
v, err := pl.TokenManager().GetToken(int32(n))
if err != nil {
return fmt.Errorf("handleQueryTokens.AccountExecute failed: %w", err)
}
t := &pbGame.Token{
Type: v.ID,
Value: v.Value,
MaxHold: v.MaxHold,
}
reply.Tokens = append(reply.Tokens, t)
}
acct.SendProtoMessage(reply)
return nil
})
}