sync.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package user
  2. import (
  3. nameActor "f1-game/internal/name/actor"
  4. nameRemote "f1-game/internal/name/remote"
  5. "f1-game/internal/pb"
  6. "f1-game/internal/sessions"
  7. cfacade "github.com/cherry-game/cherry/facade"
  8. cproto "github.com/cherry-game/cherry/net/proto"
  9. )
  10. func sync2Game(actor cfacade.IActor, session *cproto.Session, isBind bool) {
  11. gameNodeID := sessions.GetGameNodeID(session)
  12. playerID := sessions.GetPlayerID(session)
  13. if gameNodeID != "" {
  14. targetPath := cfacade.NewPath(gameNodeID, nameActor.GateSessions)
  15. if isBind {
  16. // 更新redis数据
  17. sessions.SendRedisBind(playerID, session)
  18. // 向游戏服发送session绑定
  19. actor.Call(targetPath, nameRemote.Sessions_Bind, session)
  20. } else {
  21. // 删除redis玩家session数据
  22. sessions.SendRedisUnbind(playerID)
  23. // 向游戏服发送session解绑
  24. actor.Call(targetPath, nameRemote.Sessions_Unbind, &pb.I64{
  25. Value: playerID,
  26. })
  27. }
  28. }
  29. }
  30. func sync2Map(actor cfacade.IActor, session *cproto.Session, isBind bool) {
  31. mapNodeID := sessions.GetMapNodeID(session)
  32. playerID := sessions.GetPlayerID(session)
  33. if mapNodeID != "" {
  34. targetPath := cfacade.NewPath(mapNodeID, nameActor.GateSessions)
  35. if isBind {
  36. actor.Call(targetPath, nameRemote.Sessions_Bind, session)
  37. } else {
  38. actor.Call(targetPath, nameRemote.Sessions_Unbind, &pb.I64{
  39. Value: playerID,
  40. })
  41. }
  42. }
  43. }