package league import ( actorRemote "f1-game/internal/actor_remote" "f1-game/internal/facade" "f1-game/internal/pb" "f1-game/internal/sessions" mapCall "f1-game/nodes/map/internal/call" "f1-game/nodes/map/internal/db" cproto "github.com/cherry-game/cherry/net/proto" ) func Service() *service { return &service{} } type service struct { facade.PlayerServiceBase[*db.MapPlayerTable] } func (p *service) OnLogin(playerTable *db.MapPlayerTable, session *cproto.Session) { // 设置 session leagueID if playerTable.LeagueID > 0 { p.SetSession(session, playerTable.LeagueID) } } func (*service) OnLogined(playerTable *db.MapPlayerTable, session *cproto.Session) { // 触发联盟推送 if playerTable.LeagueID > 0 { mapCall.League.LeagueOnLogin(playerTable.PlayerID, playerTable.LeagueID) } } func (*service) SetSession(session *cproto.Session, leagueID int64) { sessionProto := pb.StrStrList{} if leagueID == 0 { // 退盟时,leagueID为0 ==> 清空session sessionProto.Add(sessions.LeagueID, "") } else { sessionProto.Add(sessions.LeagueID, leagueID) } actorRemote.GateUser.SetSession(session.ActorPath(), &sessionProto) }