/// <summary>
        /// Initializes a new instance of the <see cref="TimeLineItemViewModel"/> class.
        /// </summary>
        /// <param name="parent">The parent <see cref="TimeLineViewModel"/>.</param>
        public TimeLineItemViewModel(TimeLineViewModel parent)
        {
            _parent = parent;

            _inputItemViewModel = new InputItemViewModel();

            InputItemViewModel.PropertyChanged += InputItemViewModel_PropertyChanged;
            _inputItemViewModel.WaitFrames      = 1;
        }
        /// <summary>
        /// Opens a new time line from file.
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="append"></param>
        public void OpenTimeLine(string filePath, bool append = false)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();

                openFileDialog.Filter           = "SF4 Combo|*.cmb";
                openFileDialog.RestoreDirectory = true;
                openFileDialog.ShowDialog();
                if (openFileDialog.FileName == "")
                {
                    return;
                }
                filePath = openFileDialog.FileName;
            }

            List <string> lines = File.ReadAllLines(filePath).ToList();

            if (!append)
            {
                ClearTimeLine();
            }

            if (lines.First().StartsWith("FTComboFile"))
            {
                lines.RemoveAt(0);
                foreach (String line in lines)
                {
                    TimeLineItemViewModel timeLineItemViewModel = new TimeLineItemViewModel(this);
                    InputItemViewModel    inputItem             = InputItemViewModel.Deserialize(line);

                    timeLineItemViewModel.PlaySound  = inputItem.PlaySound;
                    timeLineItemViewModel.WaitFrames = inputItem.WaitFrames;
                    timeLineItemViewModel.Direction  = inputItem.Direction;

                    timeLineItemViewModel.Light_Punch  = inputItem.Light_Punch;
                    timeLineItemViewModel.Medium_Punch = inputItem.Medium_Punch;
                    timeLineItemViewModel.Hard_Punch   = inputItem.Hard_Punch;

                    timeLineItemViewModel.Light_Kick  = inputItem.Light_Kick;
                    timeLineItemViewModel.Medium_Kick = inputItem.Medium_Kick;
                    timeLineItemViewModel.Hard_Kick   = inputItem.Hard_Kick;

                    TimeLineItems.Add(timeLineItemViewModel);
                }
            }
            else
            {
                OldDeserialize(lines);
            }

            NotifyOfPropertyChange(() => CanRemoveItem);
        }
示例#3
0
        /// <summary>
        /// The get commands.
        /// </summary>
        /// <param name="commands">
        /// The commands.
        /// </param>
        /// <returns>
        /// The <see cref="InputItemViewModel"/>.
        /// </returns>
        private static InputItemViewModel GetCommands(string commands)
        {
            InputItemViewModel input = new InputItemViewModel
            {
                Light_Punch  = commands.Contains("LP"),
                Medium_Punch = commands.Contains("MP"),
                Hard_Punch   = commands.Contains("HP"),
                Light_Kick   = commands.Contains("LK"),
                Medium_Kick  = commands.Contains("MK"),
                Hard_Kick    = commands.Contains("HK")
            };

            if (commands.Contains("UP, FORWARD"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.UpForward;
            }
            else if (commands.Contains("UP, BACK"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.UpBack;
            }
            else if (commands.Contains("DOWN, FORWARD"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.DownForward;
            }
            else if (commands.Contains("DOWN, BACK"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.DownBack;
            }
            else if (commands.Contains("FORWARD"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.Forward;
            }
            else if (commands.Contains("BACK"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.Back;
            }
            else if (commands.Contains("UP"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.Up;
            }
            else if (commands.Contains("DOWN"))
            {
                input.Direction = InputCommandModel.DirectionStateEnum.Down;
            }
            else
            {
                input.Direction = InputCommandModel.DirectionStateEnum.Neutral;
            }

            return(input);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TimeLineItemViewModel"/> class.
 /// </summary>
 public TimeLineItemViewModel()
 {
     _inputItemViewModel            = new InputItemViewModel();
     _inputItemViewModel.WaitFrames = 1;
 }
示例#5
0
        public void OldDeserialize(List <string> lines)
        {
            foreach (String line in lines)
            {
                List <Input> inputsOnHold = new List <Input>();
                String[]     tokens       = line.Split('#');

                InputItemModel item = new InputItemModel();
                int            numInputs;
                Input[]        inputs;

                string inputType = tokens[0].ToString().ToUpper();
                switch (inputType)
                {
                case "WAIT":
                    // Only hold inputs needed
                    item        = new InputItemModel();
                    item.Inputs = inputsOnHold.ToArray();
                    break;

                case "PRESS":

                    // Add hold inputs to given inputs
                    numInputs = int.Parse(tokens[2]);
                    inputs    = new Input[numInputs];
                    for (int i = 0; i < numInputs; i++)
                    {
                        inputs[i] = InputItemModel.ParseInput(tokens[3 + i]);
                    }

                    item        = new InputItemModel();
                    item.Inputs = inputsOnHold.Concat(inputs.ToList()).Distinct().ToArray();
                    break;

                case "HOLD":

                    numInputs = int.Parse(tokens[2]);
                    for (int i = 0; i < numInputs; i++)
                    {
                        inputsOnHold.Add(InputItemModel.ParseInput(tokens[3 + i]));
                    }

                    item        = new InputItemModel();
                    item.Inputs = inputsOnHold.Distinct().ToArray();
                    break;

                case "RELEASE":

                    // First remove released inputs from on hold list
                    numInputs = int.Parse(tokens[2]);
                    inputs    = new Input[numInputs];
                    for (int i = 0; i < numInputs; i++)
                    {
                        inputsOnHold.RemoveAll((x) => x == InputItemModel.ParseInput(tokens[3 + i]));
                    }

                    // Add remaining holds
                    item        = new InputItemModel();
                    item.Inputs = inputsOnHold.ToArray();
                    break;

                default:
                    throw new FormatException("Failed to deserialize TimelineItem, wrong string format: " + line);
                }

                item.PlaySound = Boolean.Parse(tokens[1]);
                item.Frames    = int.Parse(tokens[2].ToString());

                //Setup TimeLineItemViewModel
                InputItemViewModel result = new InputItemViewModel();
                result.InputItem = item;
                result.Index     = -1;

                TimeLineItemViewModel timeLineItemViewModel = new TimeLineItemViewModel(this);

                timeLineItemViewModel.PlaySound  = result.PlaySound;
                timeLineItemViewModel.WaitFrames = result.WaitFrames;
                timeLineItemViewModel.Direction  = result.Direction;

                timeLineItemViewModel.Light_Punch  = result.Light_Punch;
                timeLineItemViewModel.Medium_Punch = result.Medium_Punch;
                timeLineItemViewModel.Hard_Punch   = result.Hard_Punch;

                timeLineItemViewModel.Light_Kick  = result.Light_Kick;
                timeLineItemViewModel.Medium_Kick = result.Medium_Kick;
                timeLineItemViewModel.Hard_Kick   = result.Hard_Kick;

                TimeLineItems.Add(timeLineItemViewModel);
            }
        }