| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package cache
- import (
- "f1-game/internal/extend/maps"
- "f1-game/internal/sessions"
- "github.com/cherry-game/cherry/net/parser/pomelo"
- )
- type (
- AgentSyncMap = maps.SyncMap[int64, *pomelo.Agent]
- )
- var (
- playerAgentsMap = &AgentSyncMap{} // key:(int64)playerID, value:*Agent
- gameAgentsMap = maps.SyncMap[string, *AgentSyncMap]{} // key:(string)gameNodeID, value:{key:playerID, value:*Agent}
- mapAgentsMap = maps.SyncMap[string, *AgentSyncMap]{} // key:(int64)mapNodeID, value:{key:playerID,value:*Agent}
- )
- func UpdateAgent(agent *pomelo.Agent) {
- playerID := sessions.GetPlayerID(agent.Session())
- if playerID < 1 {
- return
- }
- playerAgentsMap.Store(playerID, agent)
- if gameNodeID := sessions.GetGameNodeID(agent.Session()); gameNodeID != "" {
- gameMaps, _ := gameAgentsMap.LoadOrStore(gameNodeID, &AgentSyncMap{})
- gameMaps.Store(playerID, agent)
- }
- if mapNodeID := sessions.GetMapNodeID(agent.Session()); mapNodeID != "" {
- mapMaps, _ := mapAgentsMap.LoadOrStore(mapNodeID, &AgentSyncMap{})
- mapMaps.Store(playerID, agent)
- }
- }
- func RemoveAgent(agent *pomelo.Agent) {
- playerID := sessions.GetPlayerID(agent.Session())
- if playerID < 1 {
- return
- }
- playerAgentsMap.Delete(playerID)
- if gameNodeID := sessions.GetGameNodeID(agent.Session()); gameNodeID != "" {
- if gameMaps, found := gameAgentsMap.Load(gameNodeID); found {
- gameMaps.Delete(playerID)
- }
- }
- if mapNodeID := sessions.GetMapNodeID(agent.Session()); mapNodeID != "" {
- if mapMaps, found := mapAgentsMap.Load(mapNodeID); found {
- mapMaps.Delete(playerID)
- }
- }
- }
- func GetPlayerAgent(playerID int64) (*pomelo.Agent, bool) {
- return playerAgentsMap.Load(playerID)
- }
- func GetGameAgentsMap(gameNodeID string) (*AgentSyncMap, bool) {
- return gameAgentsMap.Load(gameNodeID)
- }
- func GetMapAgentsMap(mapNodeID string) (*AgentSyncMap, bool) {
- return mapAgentsMap.Load(mapNodeID)
- }
|