using System; using System.Collections.Generic; using System.Text; using CommonNetwork.Sockets; using CommonLang.Protocol; using RoomService.Net.BsServer; using CommonLang.Log; using RoomService.Net.BsClient; using CommonAI.ZoneClient; using CommonAI.Zone; using CommonLang.IO; using CommonAI.Zone.ZoneEditor; using CommonAI.ZoneServer; using CommonAI.Zone.Instance; using CommonLang.Concurrent; using CommonAI.Zone.Replay; namespace CommonAIClient.Client { public abstract class BattleLocal : AbstractBattle, InstanceZoneListener { private int mRecvPack = 0; private int mSendPack = 0; private BattleRecorder mRecorder; private InstanceUnit mSender; public override int CurrentPing { get { return 0; } } public override long RecvPackages { get { return mRecvPack; } } public override long SendPackages { get { return mSendPack; } } public override bool IsNet { get { return false; } } public override RoomService.Net.BsServer.KickedByServerNotifyB2C KickMessage { get { return null; } } public abstract EditorScene Zone { get; } public SceneData SceneData { get { return Zone.Data; } } public BattleLocal(EditorTemplates datas) : base(datas) { this.Layer.ActorSyncMode = SyncMode.ForceByServer; } protected override void Disposing() { base.Disposing(); mSender = null; mRecorder = null; } public override void SendAction(CommonAI.Zone.Action action) { if (mSender == null && Layer.Actor!=null) { mSender = Zone.getUnit(Layer.Actor.ObjectID); } action.sender = mSender; Zone.pushAction(action); mSendPack++; } public void onEventHandler(Event e) { mRecvPack++; if (mRecorder != null) { mRecorder.Record(e, Zone.PassTimeMS); } Layer.ProcessMessage(e as IMessage); } public void onResponseHandler(InstanceZoneObject obj, ActorRequest req, ActorResponse rsp) { mRecvPack++; if (mRecorder != null) { mRecorder.Record(rsp, Zone.PassTimeMS); } Layer.ProcessMessage(rsp as IMessage); } /// /// 设置战报录像记录器 /// /// public void SetRecoder(BattleRecorder recorder) { this.mRecorder = recorder; } public bool CheckDropItem() { return false; } } }