Example #1
0
        private void Multiplayer_ModMessageReceived(object sender, ModMessageReceivedEventArgs e)
        {
            if (e.FromModID != ModEntry.Instance.PongId)
            {
                return;
            }
            if (e.Type == typeof(GameState).Name && !this.isLeader)
            {
                GameState newState = e.ReadAs <GameState>();
                double    diff     = GetTimestamp() - newState.CurrentTime;

                newState.BallVelocityState.Invert();
                newState.BallPositionState.Invert();
                newState.PaddlePositionState.Invert();

                this.state.SetState(newState);

                //diff milli seconds, 60 frames per second -> need to run diff * 60

                //for (int i = 0; i < (diff * 60) / 1000; i++)
                //    this.Update();

                //if ((int)((diff * 60) / 1000) > 0)
                //    ModEntry.Instance.Monitor.Log($"Follower updated {(int)((diff * 60) / 1000)} times");
            }
            else if (e.Type == typeof(PositionState).Name && this.isLeader)
            {
                PositionState newState = e.ReadAs <PositionState>();
                newState.Invert();
                this.followerPaddlePosition.SetState(newState);
            }
        }