public void ConnectToGameServer(Msg_C2G_Hello helloBody, IPEndInfo _gameTcpEnd, bool isReconnect) { Log("ConnectToGameServer " + helloBody + " isReconnect=" + isReconnect); IsReconnecting = isReconnect; ResetStatus(); this.helloBody = helloBody.Hello; InitNetClient(ref _netTcp, _gameTcpEnd.Ip, _gameTcpEnd.Port, () => { HasConnGameTcp = true; CurGameState = EGameState.Loading; _netTcp.SendMessage(EMsgSC.C2G_Hello, helloBody, (status, respond) => { if (status != EResponseStatus.Failed) { var rMsg = respond.Parse <Msg_G2C_Hello>(); _curMapId = rMsg.MapId; _localId = rMsg.LocalId; _gameUdpEnd = rMsg.UdpEnd; _handler.OnTcpHello(rMsg); ConnectUdp(); } else { _handler.OnGameStartFailed(); } } ); }); }
public void ConnectToGameServer(Msg_C2G_Hello helloBody, IPEndInfo _gameTcpEnd, bool isReconnect) { IsReconnecting = isReconnect; ResetStatus(); this.helloBody = helloBody.Hello; ConnectUdp(); SendTcp(EMsgSC.C2L_JoinRoom, new Msg_C2L_JoinRoom { RoomId = 0 }); }
private async ValueTask OnNewConnection(NewConnectionEventArgs e) { MessageHello.Deserialize(e.HandshakeData, out int announcementVersion, out int id, out Language language); _logger.LogDebug("Client requested announcement (version: {Version}, id: {Id}, language: {Language})", announcementVersion, id, language); if (announcementVersion != 2) { await e.Connection.Disconnect("Unsupported announcement version"); return; } var @event = new AnnouncementRequestEvent(id, language); await _eventManager.CallAsync(@event); var response = @event.Response; if (response.UseCached) { using var writer = MessageWriter.Get(MessageType.Reliable); Message00UseCache.Serialize(writer); await e.Connection.SendAsync(writer); _logger.LogDebug("Sent UseCache response"); } if (response.Announcement != null) { using var writer = MessageWriter.Get(MessageType.Reliable); Announcement announcement = response.Announcement.Value; Message01Update.Serialize(writer, announcement.Id, announcement.Message); await e.Connection.SendAsync(writer); _logger.LogDebug("Sent ({Id}) {Message}", announcement.Id, announcement.Message); } if (response.FreeWeekendState != FreeWeekendState.NotFree) { using var writer = MessageWriter.Get(MessageType.Reliable); Message02SetFreeWeekend.Serialize(writer, response.FreeWeekendState); await e.Connection.SendAsync(writer); _logger.LogDebug("Sent {FreeWeekendState} weekend state", response.FreeWeekendState); } await e.Connection.Disconnect(null); }
public void AddWorker(Person person, int hour) { workers.Add(person); person.Came += new EventHandler(Person_Came); person.OnCame(); if (greetByUs != null) { greetByUs(person, hour); } MessageHello greetByPerson = new MessageHello(person.Greet); greetByUs += greetByPerson; MessageBye byeByPerson = new MessageBye(person.GoodBye); byeByUs += byeByPerson; }
public void RemoveWorker(Person person) { MessageHello greetByPerson = new MessageHello(person.Greet); greetByUs -= greetByPerson; person.Came -= new EventHandler(Person_Came); workers.Remove(person); person.Gone += new EventHandler(Person_Gone); person.IsGone(); MessageBye byeByPerson = new MessageBye(person.GoodBye); byeByUs -= byeByPerson; if (byeByUs != null) { byeByUs(person); } person.Gone -= new EventHandler(Person_Gone); }
private async ValueTask OnNewConnection(NewConnectionEventArgs e) { MessageHello.Deserialize(e.HandshakeData, out var announcementVersion, out var id, out var language); if (announcementVersion != 2) { await e.Connection.Disconnect("Unsupported announcement version"); return; } var @event = new AnnouncementRequestEvent(id, language); await _eventManager.CallAsync(@event); var response = @event.Response; if (response.UseCached) { using var writer = MessageWriter.Get(MessageType.Reliable); Message00UseCache.Serialize(writer); await e.Connection.SendAsync(writer); } if (response.Announcement != null) { using var writer = MessageWriter.Get(MessageType.Reliable); var announcement = response.Announcement.Value; Message01Update.Serialize(writer, announcement.Id, announcement.Message); await e.Connection.SendAsync(writer); } if (response.FreeWeekendState != FreeWeekendState.NotFree) { using var writer = MessageWriter.Get(MessageType.Reliable); Message02SetFreeWeekend.Serialize(writer, response.FreeWeekendState); await e.Connection.SendAsync(writer); } await e.Connection.Disconnect(null); }