package actorRemote import ( capp "f1-game/internal/cherry_app" "f1-game/internal/code" "f1-game/internal/component/redis" nameActor "f1-game/internal/name/actor" nameRemote "f1-game/internal/name/remote" "f1-game/internal/pb" ccrypto "github.com/cherry-game/cherry/extend/crypto" cfacade "github.com/cherry-game/cherry/facade" clog "github.com/cherry-game/cherry/logger" "go.uber.org/zap/zapcore" ) type centerPlayer struct { } func newCenterPlayer() *centerPlayer { return ¢erPlayer{} } func (p *centerPlayer) GetUID(sdkID, pid int32, openID string) (cfacade.UID, int32) { if uid := redis.Center.GetUser(pid, openID); uid > 0 { return uid, code.OK } newUID, ok := redis.Center.BindUser(pid, openID) if !ok { return newUID, code.AccountLoginBindUserError } req := &pb.User{ Uid: newUID, SdkID: sdkID, PID: pid, OpenID: openID, } hashID := ccrypto.CRC32(openID) capp.Call(p.target(hashID), nameRemote.Player_BindUID, req) return newUID, code.OK } func (p *centerPlayer) UpdateLastPlayer(req *pb.UpdateLastPlayer) { if clog.PrintLevel(zapcore.InfoLevel) { clog.Debugf("[playerID = %d, gameNodeID = %s] update last player.", req.PlayerID, req.GameNodeID) } capp.Call(p.target(req.UID), nameRemote.Player_UpdateLastPlayer, req) } func (*centerPlayer) target(childID any) string { return cfacade.NewChildPath(centerNodeID(), nameActor.CenterPlayer, childID) }