center_player.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package actorRemote
  2. import (
  3. capp "f1-game/internal/cherry_app"
  4. "f1-game/internal/code"
  5. "f1-game/internal/component/redis"
  6. nameActor "f1-game/internal/name/actor"
  7. nameRemote "f1-game/internal/name/remote"
  8. "f1-game/internal/pb"
  9. ccrypto "github.com/cherry-game/cherry/extend/crypto"
  10. cfacade "github.com/cherry-game/cherry/facade"
  11. clog "github.com/cherry-game/cherry/logger"
  12. "go.uber.org/zap/zapcore"
  13. )
  14. type centerPlayer struct {
  15. }
  16. func newCenterPlayer() *centerPlayer {
  17. return &centerPlayer{}
  18. }
  19. func (p *centerPlayer) GetUID(sdkID, pid int32, openID string) (cfacade.UID, int32) {
  20. if uid := redis.Center.GetUser(pid, openID); uid > 0 {
  21. return uid, code.OK
  22. }
  23. newUID, ok := redis.Center.BindUser(pid, openID)
  24. if !ok {
  25. return newUID, code.AccountLoginBindUserError
  26. }
  27. req := &pb.User{
  28. Uid: newUID,
  29. SdkID: sdkID,
  30. PID: pid,
  31. OpenID: openID,
  32. }
  33. hashID := ccrypto.CRC32(openID)
  34. capp.Call(p.target(hashID), nameRemote.Player_BindUID, req)
  35. return newUID, code.OK
  36. }
  37. func (p *centerPlayer) UpdateLastPlayer(req *pb.UpdateLastPlayer) {
  38. if clog.PrintLevel(zapcore.InfoLevel) {
  39. clog.Debugf("[playerID = %d, gameNodeID = %s] update last player.", req.PlayerID, req.GameNodeID)
  40. }
  41. capp.Call(p.target(req.UID), nameRemote.Player_UpdateLastPlayer, req)
  42. }
  43. func (*centerPlayer) target(childID any) string {
  44. return cfacade.NewChildPath(centerNodeID(), nameActor.CenterPlayer, childID)
  45. }