player_gm.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package player
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/data"
  5. "f1-game/internal/enum"
  6. nameRemote "f1-game/internal/name/remote"
  7. "f1-game/internal/pb"
  8. "f1-game/nodes/game/player/asset"
  9. "f1-game/nodes/game/player/gm"
  10. "strings"
  11. cprofile "github.com/cherry-game/cherry/profile"
  12. )
  13. func (p *actorPlayer) initGM() {
  14. p.Remote().Register(nameRemote.Player_GMTimeOffset, p.gmTimeOffset)
  15. p.Remote().Register(nameRemote.Player_SendGM, p.sendGM)
  16. p.Remote().Register(nameRemote.Player_GetInfo, p.getPlayerInfo)
  17. }
  18. // gmTimeOffset 设置时间偏移
  19. func (p *actorPlayer) gmTimeOffset(req *pb.I64) {
  20. if !cprofile.Debug() || !data.NodeState.GmEnable {
  21. return
  22. }
  23. gm.Service().TimeOffset(req.Value)
  24. }
  25. // gm操作
  26. func (p *actorPlayer) sendGM(req *pb.Str) int32 {
  27. gmStr := req.Value
  28. if !strings.HasPrefix(gmStr, "/gm ") {
  29. return code.RequestParamsError
  30. }
  31. return gm.Service().SendGM(p.playerID, gmStr)
  32. }
  33. // 获取玩家信息
  34. func (p *actorPlayer) getPlayerInfo(req *pb.I64) (*pb.PlayerDetailInfo, int32) {
  35. playerDetail := &pb.PlayerDetailInfo{}
  36. playerTable := p.PlayerTable()
  37. // 获取账号信息
  38. account := &pb.AccountInfo{}
  39. account.AccountID = playerTable.OpenID
  40. playerDetail.Account = account
  41. // 获取玩家信息
  42. playerDetail.Player = playerTable.ToPlayerInfo()
  43. playerDetail.Player.IsOnline = p.isOnline
  44. // 获取玩家资产
  45. for _, itemID := range enum.OpsItemInfoList {
  46. count := asset.Service().Get(p.playerID, itemID)
  47. item := &pb.I32I64{
  48. Key: itemID,
  49. Value: count,
  50. }
  51. playerDetail.Items = append(playerDetail.Items, item)
  52. }
  53. // 获取英雄列表
  54. heroTable := p.HeroTable()
  55. playerDetail.Heroes = heroTable.Heroes.HeroGroupMap()
  56. // TODO 充值数据
  57. return playerDetail, code.OK
  58. }