Exemple #1
0
        public virtual void logic_rpc_Handle(GetZonesInfoRequest req, OnRpcReturn <GetZonesInfoResponse> cb)
        {
            GetZonesInfoResponse rsp = new GetZonesInfoResponse();
            //指定场景的所有线.
            var lt = GetZoneList(req.servergroupID, req.mapID);

            if (lt != null)
            {
                List <ZoneInfoSnap> snaps = new List <ZoneInfoSnap>();
                rsp.snaps = snaps;

                ZoneInfoSnap snap = null;
                ZoneInfo     info = null;
                for (int i = 0; i < lt.Count; i++)
                {
                    //获取所有线的信息.
                    info = lt[i];
                    if (info != null && info.close == false)
                    {
                        snap = new ZoneInfoSnap();
                        snap.curPlayerCount  = info.currentRoleCount;
                        snap.playerMaxCount  = info.map_data.max_players;
                        snap.lineIndex       = info.lineIndex;
                        snap.playerFullCount = info.map_data.full_players;
                        snap.uuid            = info.uuid;
                        snaps.Add(snap);
                    }
                }
            }

            cb(rsp);
        }
Exemple #2
0
 public virtual void logic_rpc_Handle(ISerializable msg, OnRpcReturn <ISerializable> cb)
 {
     if (mRpcHandleCall != null)
     {
         mRpcHandleCall(msg, (rsp, err) => { cb(rsp as ISerializable, err); });
     }
 }
Exemple #3
0
 public void rpc_PlayGame(PlayGameRequest req, OnRpcReturn <PlayGameResponse> callback)
 {
     // <--- 此处如果不加锁,假如同时两个PlayGameRequest过来,则可能会导致coinCount为负数
     this.coinLocker.LockAsync().ContinueWith((_lock) =>
     {
         //判断硬币数量够不够
         if (coinCount > req.count)
         {
             //异步调用,消耗硬币
             machine.Call <PlayGameResponse>(req, new OnRpcReturn <PlayGameResponse>((rsp, err) =>
             {
                 //消耗硬币
                 coinCount -= rsp.usedCoin;
                 //返回结果
                 callback(rsp);
                 _lock.Dispose();
             }));
         }
         else
         {
             //返回失败结果
             callback(new PlayGameResponse()
             {
                 s2c_code = Response.CODE_ERROR
             });
             _lock.Dispose();
         }
     });
 }
Exemple #4
0
        public virtual void logic_rpc_Handle(GetAllRoleRequest req, OnRpcReturn <GetAllRoleResponse> cb)
        {
            RoleInfo[] roleList = GetAllRoles();
            HashMap <string, OnlinePlayerData> uuidMap = new HashMap <string, OnlinePlayerData>();

            for (int i = 0; i < roleList.Length; ++i)
            {
                var rold = roleList[i];
                uuidMap.Add(rold.uuid, new OnlinePlayerData()
                {
                    name          = rold.enter.roleDisplayName,
                    serverGroupId = rold.enter.servergroupID
                });
            }
            cb(new GetAllRoleResponse()
            {
                uuidMap = uuidMap
            });
        }
Exemple #5
0
        public virtual void logic_rpc_Handle(GetBatchZonesInfoRequest req, OnRpcReturn <GetBatchZonesInfoResponse> cb)
        {
            GetBatchZonesInfoResponse rsp = new GetBatchZonesInfoResponse();

            rsp.snapDic = new HashMap <int, List <ZoneInfoSnap> >();

            foreach (var item in req.mapIDList)
            {
                var lt = GetZoneList(req.servergroupID, item);

                if (lt != null)
                {
                    ZoneInfoSnap snap = null;
                    ZoneInfo     info = null;

                    List <ZoneInfoSnap> snaps = new List <ZoneInfoSnap>();

                    for (int i = 0; i < lt.Count; i++)
                    {
                        //获取所有线的信息.
                        info = lt[i];
                        if (info != null && info.close == false)
                        {
                            snap = new ZoneInfoSnap();
                            snap.curPlayerCount  = info.currentRoleCount;
                            snap.playerMaxCount  = info.map_data.max_players;
                            snap.lineIndex       = info.lineIndex;
                            snap.playerFullCount = info.map_data.full_players;
                            snap.uuid            = info.uuid;
                            snaps.Add(snap);
                        }
                    }
                    rsp.snapDic.Add(item, snaps);
                }
            }
            cb(rsp);
        }
Exemple #6
0
 public virtual void logic_rpc_Call(ISerializable msg, OnRpcReturn <ISerializable> cb)
 {
     this.remote_logic?.Call <ISerializable>(msg, cb);
 }
Exemple #7
0
 public virtual void rpc_Call(ISerializable msg, OnRpcReturn <ISerializable> cb)
 {
 }
Exemple #8
0
 public virtual void rpc_Handle(ISerializable msg, OnRpcReturn <ISerializable> cb)
 {
     zone_rpc_call_handler?.Invoke(msg, (rsp, err) => { cb(rsp as ISerializable, err); });
 }