void IZoneNodePlayer.ClientFlush(BattleCodec codec) { try { if (pause_logic == false) { lock (mLogicSendingQueue) { if (mLogicSendingQueue.Count > 0) { remote_logic?.BatchInvoke(mLogicSendingQueue); mLogicSendingQueue.Clear(); } } } if (pause_client == false) { if (mSendingQueue.events.Count > 0) { mSendingQueue.sequenceNo = node.ZoneNode.ZoneTick; using (var buffer = MemoryStreamObjectPool.AllocAutoRelease()) { try { if (codec.doEncodeWithHead(mSendingQueue, buffer)) { var notify = BinaryMessage.FromBuffer(client_event_route, buffer); remote_session?.WormholeTransport(notify); } } catch (Exception err) { log.Error(err.Message, err); } finally { mSendingQueue.events.Clear(); } } } } } catch (Exception err) { log.Error(err.Message, err); } }
public AreaService(ServiceStartInfo start) : base(start) { this.BattleClientCodec = new BattleCodec(RPGServerBattleManager.Templates); this.session_battle_codec = base.ServerCodec.Factory.GetCodec(typeof(SessionBattleAction)); }
/// <summary> /// 初始化所有模板以及工厂类,游戏启动时调用 /// </summary> public void Init(string data_path) { this.data_root = ZoneDataFactory.Factory.CreateEditorTemplates(data_path, true); this.data_root.LoadAllTemplates(); this.battle_codec = new BattleCodec(data_root.Templates); }