using CommonAI.Zone; using CommonAI.Zone.ZoneEditor; using CommonAI.ZoneServer; using CommonAIClient.Client; using CommonLang.IO; using CommonLang.Protocol; using RoomService.Net.BsClient; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CommonAIServer.Connector.Client { public class NetTestClient : IDisposable { public BattleClient Client { get { return mClient; } } public EditorTemplates DataRoot { get { return mDataRoot; } } private readonly BattleClient mClient; private readonly EditorTemplates mDataRoot; public NetTestClient( string playerUUID, string roomID, string netDirver, string connectString, int intervalMS, int syncRange, CreateUnitInfoR2B unit, EditorTemplates data_root) : this(playerUUID, roomID, netDirver, connectString, intervalMS, syncRange, unit, false, null, data_root) { } public NetTestClient( string playerUUID, string roomID, string netDirver, string connectString, int intervalMS, int syncRange, CreateUnitInfoR2B unit, bool isProxy, string proxyConnectString, EditorTemplates data_root) { Console.WriteLine(" PlayerUUID = " + playerUUID); Console.WriteLine(" RoomID = " + roomID); Console.WriteLine(" NetDirver = " + netDirver); Console.WriteLine(" ConnectString = " + connectString); Console.WriteLine(" IntervalMS = " + intervalMS); Console.WriteLine(" SyncRange = " + syncRange); Console.WriteLine(" UnitTemplateID = " + unit.UnitTemplateID); Console.WriteLine(" Force = " + unit.Force); Console.WriteLine(" IsProxy = " + isProxy); //UnitInfo temp = TemplateManager.Instance.getUnit(unit.UnitTemplateID); MessageFactoryGenerator factory = TemplateManager.MessageCodec; this.mDataRoot = data_root; if (unit.UnitPropData == null) { UnitInfo temp = mDataRoot.Templates.getUnit(unit.UnitTemplateID); unit.UnitPropData = IOUtil.Clone(factory, temp.Properties); } PlayerWillConnectResponseB2R room = new PlayerWillConnectResponseB2R(); room.PlayerUUID = playerUUID; room.Room = new RoomInfo(); room.Room.ClientConnectString = connectString; room.Room.NetDriverString = netDirver; room.Room.Dummy = 0; room.Room.RoomID = roomID; PlayerWillConnectRequestR2B enter = new PlayerWillConnectRequestR2B(); { enter.PlayerUUID = playerUUID; enter.PlayerDisplayName = playerUUID; enter.Token = playerUUID; enter.TokenValidTimeSec = int.MaxValue; enter.RoomID = roomID; enter.Data = unit; //IOUtil.ObjectToBin(factory, unit); } if (isProxy) { this.mClient = new BattleClientProxy( new TestProxySession(), proxyConnectString, mDataRoot, factory, room, enter, playerUUID); } else { this.mClient = new BattleClientDirect( mDataRoot, factory, room, enter, playerUUID); } } public void Start() { this.mClient.Start(); } public void Stop() { this.mClient.Stop(); } public void Dispose() { this.mClient.Dispose(); } public void Update(int intervalMS) { this.mClient.BeginUpdate(intervalMS); this.mClient.Update(); } //-------------------------------------------------------------------------------------------- class TestProxySession : BattleClientProxy.ProxyNetSession { public override bool IsMessageTypeGS(object msg) { return false; } } } }