Exemple #1
0
        /// <summary>
        /// 销毁战场
        /// 主线程调用
        /// </summary>
        private void EndBattle(Battle battle)
        {
            battle.Stop();
            int count = battle.numChampions;

            //通知CS战场结束
            Protos.BS2CS_BattleEnd battleEnd = ProtoCreator.Q_BS2CS_BattleEnd();
            battleEnd.Bid = battle.id;
            for (int i = 0; i < count; ++i)
            {
                Champion champion = battle.GetChampionAt(i);
                var      info     = new Protos.BS2CS_BattleEndInfo
                {
                    Result       = (Protos.BS2CS_BattleEndInfo.Types.Result)champion.result,
                    Team         = champion.team,
                    Damage       = champion.damage,
                    Hurt         = champion.hurt,
                    Heal         = champion.heal,
                    OccupyTime   = champion.occupyTime,
                    Skill0Used   = champion.skill0Used,
                    Skill0Damage = champion.skill0Damage,
                    Skill1Used   = champion.skill1Used,
                    Skill1Damage = champion.skill1Damage,
                };
                battleEnd.Infos.Add(champion.user.gcNID, info);
            }
            BS.instance.netSessionMgr.Send(SessionType.ServerB2CS, battleEnd, RPCEntry.Pop(this.OnCSBattleEndRet, battle));
        }
Exemple #2
0
        /// <summary>
        /// 初始化
        /// </summary>
        internal void Init(Battle battle)
        {
            this._battle = battle;
            int count = battle.numChampions;

            for (int i = 0; i < count; i++)
            {
                ulong id = battle.GetChampionAt(i).rid;
                this._gcNIDToAction[id] = new FrameAction(id);
            }
        }
Exemple #3
0
        private void OnCSBattleEndRet(NetSessionBase session, Google.Protobuf.IMessage message, object[] args)
        {
            Battle battle = ( Battle )args[0];
            int    count  = battle.numChampions;

            for (int i = 0; i < count; i++)
            {
                Champion champion = battle.GetChampionAt(i);
                if (champion.user.isOnline)
                {
                    //断开玩家连接
                    BS.instance.netSessionMgr.CloseSession(champion.user.gcSID, "battle_end");
                    //玩家下线
                    BS.instance.userMgr.Offline(champion.user);
                }
                //销毁玩家
                BS.instance.userMgr.DestroyUser(champion.user);
            }
            this._finishBattles.Remove(battle);
            Logger.Log($"battle:{battle.id} destroied");
            POOL.Push(battle);
        }