/// <summary> /// 服务准备好了 /// </summary> public void ServerReady(ServerInfo Server) { ConsoleEx.DebugLog(war.Side.ToString() + " Sub Received : Server is Ready ", ConsoleEx.YELLOW); //避免重复收听 if (proxyReady == false) { proxyReady = true; monitor.ServerReady(Server); proxyServer = new ProxyServer(war, () => { JoinInfo join = new JoinInfo() { ClientID = DeviceInfo.GUID, ClientName = "AW_Client", Charactor = war.Charactor, }; string plainJoin = JSON.Instance.ToJSON(join); proxyServer.Join(plainJoin); if (war.warMo == WarMode.NativeWar) { RoomCharactor vir = war.Charactor.DeepCopy(); vir.camp = WarCamp.SecondCamp; vir.UID = "-1"; vir.team = new DebugModel().getTeam(WarCamp.SecondCamp); /// /// 创建虚拟Client /// JoinInfo virtualJoin = new JoinInfo() { ClientID = "-1", ClientName = "AWClient", Charactor = vir, }; plainJoin = JSON.Instance.ToJSON(virtualJoin); proxyServer.Join(plainJoin); } }); register(); } /*else { * //Test purpose * JoinInfo join = new JoinInfo() { * ClientID = DeviceInfo.GUID, * ClientName = "AW_Client", * Charactor = war.Charactor, * }; * * string plainJoin = JSON.Instance.ToJSON(join); * proxyServer.Join(plainJoin); * }*/ }
public bool QuitJoin(JoinInfo joinin) { bool setOk = false; if (joinin != null) { VirtualClient client = null; setOk = ClientPool.TryGetValue(joinin.ClientID, out client); if (setOk) { CharactorPool.QuitRoom(joinin.Charactor); //申请写锁 readerWriterLock.EnterWriteLock(); ClientPool.Remove(joinin.ClientID); //释放写锁 readerWriterLock.ExitWriteLock(); ConnectedClientCount -= 1; if (client.curStatus.check(ClientStatus.Ready)) { ReadyClientCount -= 1; } if (client.curStatus.check(ClientStatus.UIReady)) { UIReadyClientCount -= 1; } //guard if (ConnectedClientCount < 0) { ConnectedClientCount = 0; } if (ReadyClientCount < 0) { ReadyClientCount = 0; } if (UIReadyClientCount < 0) { UIReadyClientCount = 0; } AsyncClient(); } } return(setOk); }
/// <summary> /// 加入战斗 /// </summary> /// <param name="ClientID">Client ID</param> public void Join(string ClientInfo) { JoinInfo join = JSON.Instance.ToObject <JoinInfo>(ClientInfo); ///加入监控 monitor.AddJoin(join); processedMsg = new NetMQMessage(); processedMsg.Append(WarMsgConsts.JOINRep); processedMsg.Append(join.ClientID); if (monitor.validateSyncClient) { proxyCli.SyncClient(monitor.getSyncMsg); } }
public void AddJoin(JoinInfo joinin) { if (joinin != null) { if (ClientPool.ContainsKey(joinin.ClientID) == false) { ConnectedClientCount += 1; VirtualClient client = new VirtualClient(joinin); CharactorPool.JoinRoom(joinin.Charactor); //申请写锁 readerWriterLock.EnterWriteLock(); ClientPool.Add(joinin.ClientID, client); //释放写锁 readerWriterLock.ExitWriteLock(); AsyncClient(); } } }
public void Quit(string ClientInfo) { JoinInfo join = JSON.Instance.ToObject <JoinInfo>(ClientInfo); processedMsg = new NetMQMessage(); ///加入监控 bool found = monitor.QuitJoin(join); if (found) { processedMsg.Append(WarMsgConsts.QuitRep); } else { processedMsg.Append(WarMsgConsts.QuitRepE); } if (monitor.validateSyncClient) { proxyCli.SyncClient(monitor.getSyncMsg); } }
public VirtualClient(JoinInfo info) { ClientID = info.ClientID; curStatus = curStatus.set(ClientStatus.Join); HeartTick = 0; }