/// <summary>
 /// Creates a blank frame with only the name set.
 /// </summary>
 /// <param name="name">The display name for the frame.</param>
 private PlayFrame(PlayModel model, String name)
 {
     mPlayModel = model;
       Name = name;
       Notes = "";
       PlayerMovement = new Dictionary<Player, List<LinearMovement>>();
       Triggers = new List<Trigger>();
       DiscFrameMovement = new DiscMovement(this);
       UniqueId = NextUniqueId++;
 }
        /// <summary>
        /// Remove a single player from the frame including anything attached to 
        /// the player
        /// </summary>
        /// <param name="player"></param>
        public void RemovePlayer(Player player)
        {
            // If the player being removed was the one with the disc then we need
              // to remove the disc movement completely.
              //
              // If they were the one receiving the disc then we need to reset the
              // disc movement.
              if (this.DiscFrameMovement.Thrower != null &&
              this.DiscFrameMovement.Thrower.Equals(player))
              {
            DiscFrameMovement = new DiscMovement(this);
              }
              else if (DiscFrameMovement.ReceivingCut != null &&
               DiscFrameMovement.ReceivingCut.Player.Equals(player))
              {
            DiscFrameMovement.ReceivingCut = null;
            DiscFrameMovement.HasMoved = false;
              }

              // Delete any triggers which reference this player at all
              Triggers.RemoveAll(trigger => trigger.AffectedPlayer == player ||
                                    trigger.CausingCutRatio.Player == player);

              PlayerMovement.Remove(player);
        }
 public DesignToViewConverter(PlayFrame frame,
                          DiscMovement discMovement, 
                          Dictionary<Player, List<LinearMovement>> playerMovement,
                          List<Trigger> triggers)
 {
     mDiscFrameMovement = discMovement;
       mPlayerMovement = playerMovement;
       mTriggers = triggers;
       mFrame = frame;
       mFramePlayData = new FramePlayData();
       mFramePlayData.PlayData = new List<List<ItemPlayData>>();
       mFramePlayData.PauseTexts = new Dictionary<int, String>();
       mProcessedPlayers = new List<Player>();
       mPlayerDelays = new Dictionary<Player,int>();
 }