示例#1
0
 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);
     }
 }
示例#2
0
 public AreaService(ServiceStartInfo start) : base(start)
 {
     this.BattleClientCodec    = new BattleCodec(RPGServerBattleManager.Templates);
     this.session_battle_codec = base.ServerCodec.Factory.GetCodec(typeof(SessionBattleAction));
 }
示例#3
0
 /// <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);
 }