package online import ( "f1-game/internal/component/redis" facade "f1-game/internal/facade" nameRedis "f1-game/internal/name/redis" "f1-game/internal/sessions" "f1-game/nodes/game/internal/db" cproto "github.com/cherry-game/cherry/net/proto" ) var srv = &service{} func Service() *service { return srv } type service struct { facade.PlayerServiceBase[*db.PlayerTable] } func (p *service) OnLogin(playerTable *db.PlayerTable, session *cproto.Session) { fields := map[string]any{} fields[nameRedis.Player_IP] = session.Ip fields[nameRedis.Player_IsOnline] = true var ( isNewPlayer = session.Contains(sessions.IsNewPlayer) hasValue = redis.Game.GetPlayerDataHash(playerTable.PlayerID, nameRedis.Player_PlayerID) ) if isNewPlayer || hasValue == nil { fields[nameRedis.Player_PlayerID] = playerTable.PlayerID fields[nameRedis.Player_PlayerName] = playerTable.Lord.Name fields[nameRedis.Player_LordLevel] = playerTable.Lord.Level fields[nameRedis.Player_IconID] = playerTable.Lord.IconID fields[nameRedis.Player_FrameID] = playerTable.Lord.FrameID fields[nameRedis.Player_GameNodeID] = playerTable.NodeID fields[nameRedis.Player_MapNodeID] = playerTable.Map.MapNodeID fields[nameRedis.Player_UID] = session.Uid fields[nameRedis.Player_PID] = sessions.GetPID(session) } redis.Game.SavePlayerDataFields(playerTable.PlayerID, fields) } // func (p *service) OnLogined(playerTable *db.PlayerTable, session *cproto.Session) { // } func (p *service) OnLogout(playerTable *db.PlayerTable) { // 清除 redis 数据 redis.Game.SavePlayerDataFields(playerTable.PlayerID, map[string]any{ nameRedis.Player_IsOnline: false, }) } // func (p *service) OnReset(playerTable *db.PlayerTable, time *ctime.CherryTime, byLogin bool) { // } // func (p *service) Push(playerTable *db.PlayerTable, session *cproto.Session) { // }