//------------------------------------------------------------------------- public void update(float elapsed_tm) { // 定时向客户端广播消息 mfTotalSecond += elapsed_tm; if (mfTotalSecond - mfLastUpdateSecond > mfUpdateTimeSpan) { mfLastUpdateSecond = mfTotalSecond; // 5Hz同步所有玩家金币 Dictionary <uint, CLogicTurret> map_turret = mScene.getMapTurret(); List <string> vec_param_ret = new List <string>(); vec_param_ret.Add(((byte)_eProtocolDesktop.s2allcSyncAllPlayerGold).ToString()); vec_param_ret.Add(map_turret.Count.ToString()); foreach (var turret in map_turret) { uint et_player_rpcid = turret.Value.getScenePlayerInfo().et_player_rpcid; vec_param_ret.Add(et_player_rpcid.ToString()); int player_gold = mScene.getListener().onLogicSceneGetPlayerGold(et_player_rpcid); vec_param_ret.Add(player_gold.ToString()); } mQueProtocol.Enqueue(vec_param_ret); // 5Hz广播协议,每次最多发送10条 int per_msgcount = 10; if (per_msgcount > mQueProtocol.Count) { per_msgcount = mQueProtocol.Count; } List <string> vec_param = new List <string>(); vec_param.Add(((byte)_eProtocolDesktop.s2allcLogicUpdate).ToString()); vec_param.Add(per_msgcount.ToString()); while (per_msgcount > 0) { List <string> l = mQueProtocol.Dequeue(); vec_param.Add(l.Count.ToString()); vec_param.AddRange(l); --per_msgcount; } mScene.getListener().onLogicScene2RenderAll(vec_param); } }