service.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package league
  2. import (
  3. actorRemote "f1-game/internal/actor_remote"
  4. "f1-game/internal/facade"
  5. "f1-game/internal/pb"
  6. "f1-game/internal/sessions"
  7. mapCall "f1-game/nodes/map/internal/call"
  8. "f1-game/nodes/map/internal/db"
  9. cproto "github.com/cherry-game/cherry/net/proto"
  10. )
  11. func Service() *service {
  12. return &service{}
  13. }
  14. type service struct {
  15. facade.PlayerServiceBase[*db.MapPlayerTable]
  16. }
  17. func (p *service) OnLogin(playerTable *db.MapPlayerTable, session *cproto.Session) {
  18. // 设置 session leagueID
  19. if playerTable.LeagueID > 0 {
  20. p.SetSession(session, playerTable.LeagueID)
  21. }
  22. }
  23. func (*service) OnLogined(playerTable *db.MapPlayerTable, session *cproto.Session) {
  24. // 触发联盟推送
  25. if playerTable.LeagueID > 0 {
  26. mapCall.League.LeagueOnLogin(playerTable.PlayerID, playerTable.LeagueID)
  27. }
  28. }
  29. func (*service) SetSession(session *cproto.Session, leagueID int64) {
  30. sessionProto := pb.StrStrList{}
  31. if leagueID == 0 {
  32. // 退盟时,leagueID为0 ==> 清空session
  33. sessionProto.Add(sessions.LeagueID, "")
  34. } else {
  35. sessionProto.Add(sessions.LeagueID, leagueID)
  36. }
  37. actorRemote.GateUser.SetSession(session.ActorPath(), &sessionProto)
  38. }