Exemplo n.º 1
0
        /// <summary>
        /// コピーコンストラクタ。
        /// </summary>
        /// <param name="src">コピー元。</param>
        public MovableValue(MovableValue <TConstants> src)
        {
            if (src == null)
            {
                throw new ArgumentNullException(nameof(src));
            }

            this.Begin          = src.Begin;
            this.End            = src.End;
            this.MoveMode       = src.MoveMode;
            this.IsAccelerating = src.IsAccelerating;
            this.IsDecelerating = src.IsDecelerating;
            this.Interval       = src.Interval;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 拡張編集オブジェクトファイルにおける文字列表現値のパースを試みる。
        /// </summary>
        /// <typeparam name="T">MovableValueBase 派生クラス型。</typeparam>
        /// <param name="value">文字列表現値。</param>
        /// <param name="result">パース結果の設定先。</param>
        /// <returns>パースに成功したならば true 。そうでなければ false 。</returns>
        public static bool TryParse(string value, out MovableValue <TConstants> result)
        {
            result = null;

            if (value == null)
            {
                return(false);
            }

            var vals = value.Split(',');

            if (vals.Length < 1)
            {
                return(false);
            }

            // 開始値
            if (!decimal.TryParse(vals[0], out decimal begin))
            {
                return(false);
            }

            if (vals.Length == 1)
            {
                result = new MovableValue <TConstants>(begin);
            }
            else if (vals.Length == 3 || vals.Length == 4)
            {
                // 終端値
                if (!decimal.TryParse(vals[1], out decimal end))
                {
                    return(false);
                }

                // 移動モード&加減速
                if (
                    !TryParseMoveMode(
                        vals[2],
                        out var moveMode,
                        out bool accel,
                        out bool decel))
                {
                    return(false);
                }

                // 追加パラメータ
                int param = 0;
                if (vals.Length == 4)
                {
                    if (!int.TryParse(vals[3], out param))
                    {
                        return(false);
                    }
                }

                result =
                    new MovableValue <TConstants>(
                        begin,
                        end,
                        moveMode,
                        accel,
                        decel,
                        param);
            }
            else
            {
                return(false);
            }

            return(true);
        }