Example #1
0
    private void OnReqEnterRoom(UserToken token, SocketModel model)
    {
        ReqEnterRoom req = SerializeUtil.Deserialize <ReqEnterRoom>(model.message);
        AccountData  acc = CacheManager.instance.GetAccount(token.accountid);

        if (acc.roomid != 0)
        {
            return;
        }

        Room r = CacheManager.instance.GetWaitRoom((EBattle)req.battleType, req.limitNumber);

        r.AddAccount(acc);

        RspEnterRoom rsp = new RspEnterRoom();

        rsp.roomid = r.roomid;
        NetworkManager.Send <RspEnterRoom>(token, (int)MsgID.RspEnterRoom, rsp);

        //房间满
        if (r.accounts.Count >= r.limtNum)
        {
            Battle b = null;
            if (req.battleType == (int)EBattle.Arena)
            {
                b = CacheManager.instance.CreateArena(r.limtNum, r.accounts);
            }
            else
            {
                b = CacheManager.instance.CreateSurvival(r.limtNum, r.accounts);
            }

            //清空roomid
            for (int i = 0; i < r.accounts.Count; i++)
            {
                r.accounts[i].roomid = 0;
            }

            //通知战斗开始
            NotifyBattleStart notify = new NotifyBattleStart();
            notify.battleid    = b.battleid;
            notify.battleType  = req.battleType;
            notify.numberLimit = req.limitNumber;

            List <Tank> tanks = b.GetALLTanks();

            for (int i = 0; i < tanks.Count; i++)
            {
                Tank    t1  = tanks[i];
                TankDTO dto = new TankDTO();
                dto.id       = t1.uid;
                dto.hp       = t1.hp;
                dto.nickName = t1.nickName;
                dto.pos      = Tools.ToVec_3(t1.pos);
                dto.color    = Tools.UC2TC(t1.color);
                dto.team     = (int)t1.team;
                notify.tanks.Add(dto);
            }
            MsgSender.SendAll <NotifyBattleStart>(r.accounts, (int)MsgID.NotifyBattleStart, notify);
            CacheManager.instance.RemoveRoom(r.roomid);
        }
    }