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;
}
}
}