Ejemplo n.º 1
0
        /// <summary>
        /// 处理回应
        /// </summary>
        private void OnBattleInfoRet(NetSessionBase session_, Google.Protobuf.IMessage ret, object[] args)
        {
            BattleUser[]   users  = ( BattleUser[] )args[0];
            BattleUser[][] tUsers = ( BattleUser[][] )args[1];
            string         bsIP   = ( string )args[2];
            int            bsPort = ( int )args[3];
            uint           bsSID  = ( uint )args[4];
            uint           bsLID  = ( uint )args[5];

            Protos.BS2CS_BattleInfoRet battleInfoRet = (Protos.BS2CS_BattleInfoRet)ret;
            //检查是否成功创建战场
            if (battleInfoRet.Result != Protos.Global.Types.ECommon.Success)
            {
                this.NotifyGCEnterBattleFailed(users, Protos.CS2GC_EnterBattle.Types.Result.BattleCreateFailed);
                return;
            }

            Logger.Log($"battle:{battleInfoRet.Bid} created");

            CS.instance.battleStaging.OnBattleCreated(bsLID, battleInfoRet.Bid);

            //把所有玩家移动到战场暂存器里
            int count = users.Length;

            for (int i = 0; i < count; i++)
            {
                BattleUser matchUser = users[i];
                CSUser     user      = CS.instance.userMgr.GetUser(matchUser.id);
                CS.instance.battleStaging.Add(user, bsLID, bsSID, battleInfoRet.Bid);
            }

            //广播给玩家
            Protos.CS2GC_EnterBattle enterBattle = ProtoCreator.Q_CS2GC_EnterBattle();
            enterBattle.Ip   = bsIP;
            enterBattle.Port = bsPort;
            for (int i = 0; i < count; i++)
            {
                BattleUser matchUser = users[i];
                CSUser     user      = CS.instance.userMgr.GetUser(matchUser.id);
                enterBattle.GcNID = user.ukey | ( ulong )bsLID << 32;
                user.Send(enterBattle);
            }
        }
Ejemplo n.º 2
0
 private void NotifyGCEnterBattleFailed(MatchUser[] users, Protos.CS2GC_EnterBattle.Types.Result result)
 {
     Protos.CS2GC_EnterBattle bsInfo = ProtoCreator.Q_CS2GC_EnterBattle();
     bsInfo.Result = result;
     this.Broadcast(users, bsInfo);
 }