public new IEnumerator StartTheGame(float speed = 1f, string customMessage = "")
 {
     Debug.Log("[RDSRT] LET US START THE GAME");
     Debug.Log(String.Format("The Role is {0}", CurrentRole.ToString()));
     if (CurrentRole == RDSRT_Role.Sender)
     {
         Debug.Log("[RDSRT] We're in the role of a Sender");
         Utils.ClearInputFile();
     }
     else if (CurrentRole == RDSRT_Role.Receiver)
     {
         Debug.Log("[RDSRT] We're in the role of a Receiver");
         inputRecords       = Utils.loadInputRecordsFromFile();
         currentRecordIndex = 0;
     }
     return(orig_StartTheGame());
 }
        public new void Update()
        {
            if (this.gameState == GameState.PreStart && Input.GetKeyDown(KeyCode.R))
            {
                CurrentRole = CurrentRole == RDSRT_Role.Sender ? RDSRT_Role.Receiver : RDSRT_Role.Sender;
                HUD.status  = String.Format("Current Role: {0}", CurrentRole.ToString());
            }
            if (CurrentRole == RDSRT_Role.Sender)
            {
                Utils.CurrentTimePassed(); // to set the time at the start of the frame.
                // Compare last inputs to these inputs, if they've changed write to the file.
                P1BitfieldThisFrame = Utils.InputBitfield_P1;
                P2BitfieldThisFrame = Utils.InputBitfield_P2;

                // pretty sure this is how we avoid reading cutscene inputs, etc.
                if (P1BitfieldThisFrame > 0 && this.receptive && !this.paused)
                {
                    Utils.WriteEvent(Utils.GetCurrentSongName(), Utils.CurrentTimePassed(), 0, P1BitfieldThisFrame);
                }
            }

            orig_Update();
        }