Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        void OnConnected(IConnection connection)
        {
            trace.TraceInformation("OnConnected");

            Debug.Assert(m_connection == null);

            m_world.WorldChanged += HandleWorldChange;
            m_world.ReportReceived += HandleReport;

            m_connection = connection;

            Send(new Messages.LogOnReplyBeginMessage()
            {
                IsSeeAll = m_seeAll,
            });

            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.UserID, 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();
                }
            }
        }