| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- package sessions
- import (
- cherryApp "f1-game/internal/cherry_app"
- "f1-game/internal/constant"
- nameActor "f1-game/internal/name/actor"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/pb"
- cherryFacade "github.com/cherry-game/cherry/facade"
- clog "github.com/cherry-game/cherry/logger"
- "github.com/cherry-game/cherry/net/parser/pomelo"
- cproto "github.com/cherry-game/cherry/net/proto"
- )
- func PushWithSession(session *cproto.Session, route string, v any) {
- pomelo.PushWithUID(actor, session.AgentPath, session.Uid, route, v)
- }
- func PushPlayer(playerID int64, route string, v any) {
- session, found := GetSession(playerID)
- if !found {
- clog.Warnf("[PushPlayer] Session not found. [playerID = %d, route = %s]", playerID, route)
- return
- }
- pomelo.PushWithUID(actor, session.AgentPath, session.Uid, route, v)
- }
- func PushPlayers(playerIDS []int64, route string, v any) {
- agentPathUIDMaps := GetAgentPathWithPlayerIDS(playerIDS)
- for agentPath, uids := range agentPathUIDMaps {
- pomelo.PushWithUIDS(actor, agentPath, uids, false, route, v)
- }
- }
- func PushGame(gameNodeID string, route string, v any) {
- data, err := cherryApp.Serializer().Marshal(v)
- if err != nil {
- clog.Warnf("[PushGame] Marshal error. data = %+v", v)
- return
- }
- rsp := &pb.GatePusher{
- Type: pb.GatePusher_GameNode,
- StrValue: gameNodeID,
- Route: route,
- Data: data,
- }
- cherryApp.CallType(constant.NodeGate, nameActor.GateUser, nameRemote.User_PlayerPush, rsp)
- }
- func PushMap(mapNodeID string, route string, v any) {
- data, err := cherryApp.Serializer().Marshal(v)
- if err != nil {
- clog.Warnf("[PushMap] Marshal error. data = %+v", v)
- return
- }
- rsp := &pb.GatePusher{
- Type: pb.GatePusher_Map,
- StrValue: mapNodeID,
- Route: route,
- Data: data,
- }
- cherryApp.CallType(constant.NodeGate, nameActor.GateUser, nameRemote.User_PlayerPush, rsp)
- }
- func KickPlayer(playerID int64, reason any, closed bool) {
- session, found := GetSession(playerID)
- if !found {
- clog.Debugf("[KickPlayer] Kick fail,session not found. [playerID = %d, reason = %s, close = %v]",
- playerID, reason, closed,
- )
- return
- }
- pomelo.KickUID(actor, session.AgentPath, session.Uid, reason, closed)
- }
- func KickPlayers(playerIDS []int64, reason any, closed bool) {
- reasonData, err := cherryApp.Serializer().Marshal(reason)
- if err != nil {
- clog.Warnf("[KickPlayers] Marshal error. reason = %+v", reason)
- return
- }
- rsp := &pb.GateKick{
- Type: pb.GateKick_Player,
- I64List: playerIDS,
- Reason: reasonData,
- Closed: closed,
- }
- cherryApp.ActorSystem().CallType(
- constant.NodeGate,
- nameActor.GateUser,
- nameRemote.User_PlayerKick,
- rsp,
- )
- }
- func KickUIDS(uids []cherryFacade.UID, reason any, closed bool, filterNodeID ...string) {
- reasonData, err := cherryApp.Serializer().Marshal(reason)
- if err != nil {
- clog.Warnf("[KickUIDS] Marshal error. reason = %+v", reason)
- return
- }
- rsp := &pb.GateKick{
- Type: pb.GateKick_UID,
- I64List: uids,
- Reason: reasonData,
- Closed: closed,
- FilterNodeIDS: filterNodeID,
- }
- cherryApp.ActorSystem().CallType(
- constant.NodeGate,
- nameActor.GateUser,
- nameRemote.User_PlayerKick,
- rsp,
- )
- }
- func KickGame(gameNodeID string, reason any, closed bool) {
- reasonData, err := cherryApp.Serializer().Marshal(reason)
- if err != nil {
- clog.Warnf("[KickGame] Marshal error. reason = %+v", reason)
- return
- }
- rsp := &pb.GateKick{
- Type: pb.GateKick_GameNode,
- StrValue: gameNodeID,
- Reason: reasonData,
- Closed: closed,
- }
- cherryApp.CallType(
- constant.NodeGate,
- nameActor.GateUser,
- nameRemote.User_PlayerKick,
- rsp,
- )
- }
- func KickMap(mapNodeID string, reason any, closed bool) {
- reasonData, err := cherryApp.Serializer().Marshal(reason)
- if err != nil {
- clog.Warnf("[KickMap] Marshal error. reason = %+v", reason)
- return
- }
- rsp := &pb.GateKick{
- Type: pb.GateKick_MapNode,
- StrValue: mapNodeID,
- Reason: reasonData,
- Closed: closed,
- }
- cherryApp.CallType(
- constant.NodeGate,
- nameActor.GateUser,
- nameRemote.User_PlayerKick,
- rsp,
- )
- }
|