void OnConnected() { trace.TraceInformation("OnConnected"); m_world.WorldChanged += HandleWorldChange; m_world.ReportReceived += HandleReport; Send(new Messages.LogOnReplyBeginMessage() { PlayerID = this.PlayerID, IsSeeAll = m_seeAll, GameMode = m_engine.GameMode, }); m_world.SendWorldData(this); m_world.SendTo(this, m_seeAll ? ObjectVisibility.All : ObjectVisibility.Public); InitControllablesVisionTracker(m_controllables); SendAddControllables(m_controllables); Send(new Messages.ClientDataMessage() { ClientData = m_engine.LoadClientData(this.PlayerID, m_engine.LastLoadID), }); Send(new Messages.LogOnReplyEndMessage() { }); if (m_world.IsTickOnGoing) { if (m_world.TickMethod == WorldTickMethod.Simultaneous) { var change = new TurnStartChange(null); m_changeHandler.HandleWorldChange(change); } else { throw new NotImplementedException(); } } }