private void OnNotifyBattleStart(SocketModel model) { NotifyBattleStart notify = SerializeUtil.Deserialize <NotifyBattleStart>(model.message); CacheManager.instance.battleid = notify.battleid; CacheManager.instance.battleType = (EBattle)notify.battleType; CacheManager.instance.limitNum = notify.numberLimit; UIManager.instance.CloseAll(); for (int i = 0; i < notify.tanks.Count; i++) { //修改缓存 //CacheManager.instance.tanks.Add(notify.tanks[i]); BaseTank tank = null; if (notify.tanks[i].id == CacheManager.instance.account) { //CacheManager.instance.myTank = notify.tanks[i]; tank = new Tank(notify.tanks[i]); } else { tank = new OtherTank(notify.tanks[i]); } TankManager.instance.AddTank(tank); } }
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); } }