Пример #1
0
        public static void ToIntTest(int value)
        {
            var instance = new CommonEventId(value);

            var intValue = instance.ToInt();

            // セットした値と取得した値が一致すること
            Assert.AreEqual(intValue, value);
        }
        /// <summary>
        /// コモンイベント名を返す。
        /// </summary>
        /// <param name="id">コモンイベントID</param>
        /// <returns>コモンイベント名(存在しない場合専用の文字列)</returns>
        public (bool, CommonEventName) GetCommonEventName(CommonEventId id)
        {
            if (Master.CommonEventList.Count <= id)
            {
                return(false, CommonEventNameNotFound);
            }

            return(true, Master.CommonEventList[id].Name);
        }
        /// <summary>
        /// コモンイベントIDとインデックスからコモンイベントセルフ変数名を取得する。
        /// </summary>
        /// <param name="commonEventId">コモンイベントID</param>
        /// <param name="index">インデックス</param>
        /// <returns>コモンイベントセルフ変数名(存在しないコモンイベントの場合空文字)</returns>
        public CommonEventSelfVariableName GetCommonEventSelfVariableName(
            CommonEventId commonEventId, CommonEventVariableIndex index)
        {
            if (Master.CommonEventList.Count <= commonEventId)
            {
                return(string.Empty);
            }
            var commonEvent = Master.CommonEventList[commonEventId];

            return(commonEvent.SelfVariableNameList[index]);
        }
Пример #4
0
        public static void ConstructorIntTest(int value, bool isError)
        {
            var errorOccured = false;

            try
            {
                var _ = new CommonEventId(value);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);
        }
Пример #5
0
        public static void CastToIntTest(int value)
        {
            var castValue = 0;

            var instance = new CommonEventId(value);

            var errorOccured = false;

            try
            {
                castValue = instance;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            // 元の値と一致すること
            Assert.AreEqual(castValue, value);
        }
        /// <summary>
        /// コモンイベント数値引数の文字列を取得する。
        /// </summary>
        /// <param name="id">コモンイベントID</param>
        /// <param name="intArgIndex">[Range(0, 0~4)]引数インデックス</param>
        /// <param name="value">引数設定値</param>
        /// <param name="type">[NotNull] イベントコマンド種別</param>
        /// <param name="desc">[Nullable] 付加情報</param>
        /// <returns>コモンイベント数値引数の文字列</returns>
        public string GetCommonEventIntArgSentence(CommonEventId id,
                                                   CommonEventNumberArgIndex intArgIndex, int value,
                                                   EventCommandSentenceType type, EventCommandSentenceResolveDesc desc)
        {
            // 値が変数アドレス値の場合は引数の設定によらず変数アドレスの文字列だけを表示
            if (value.IsVariableAddressSimpleCheck())
            {
                return(Master.GetNumericVariableAddressString(value, type, desc));
            }

            // 該当コモンイベントが存在しないときは値をそのまま表示
            var target = Master.CommonEventList.FirstOrDefault(x => x.Id == id);

            if (target is null)
            {
                return(value.ToString());
            }

            // 該当引数が設定されていないときは値をそのまま表示
            if (intArgIndex >= target.NumberArgsLength)
            {
                return(value.ToString());
            }
            var argDesc = target.NumberArgDescList[intArgIndex];

            // 引数の値種別によって表示内容を決定
            if (argDesc.ArgType == CommonEventArgType.Normal)
            {
                return(value.ToString());
            }
            if (argDesc.ArgType == CommonEventArgType.ReferDatabase)
            {
                // -1以下の場合は手動指定した文字列
                if (value < 0)
                {
                    var targetCase = argDesc.GetAllSpecialCase()
                                     .FirstOrDefault(x => x.CaseNumber == value);

                    return(targetCase is null
                        ? value.ToString()
                        : $"{value.ToString()}:{targetCase.Description}");
                }

                // 0以上の場合はデータ名
                var(isFind, dataName) = Master.GetDatabaseDataName(argDesc.DatabaseUseDbKind,
                                                                   argDesc.DatabaseDbTypeId, value);
                if (!isFind)
                {
                    return(value.ToString());
                }

                return($"{value.ToString()}:{dataName}");
            }

            if (argDesc.ArgType == CommonEventArgType.Manual)
            {
                var targetCase = argDesc.GetAllSpecialCase()
                                 .LastOrDefault(x => x.CaseNumber == value);

                return(targetCase is null
                    ? value.ToString()
                    : $"{value.ToString()}:{targetCase.Description}");
            }

            // 通常ここへは来ない
            throw new InvalidOperationException();
        }
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     Constructor
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="value">[Range(15000000, 15999999)] 変数アドレス値</param>
        /// <exception cref="ArgumentOutOfRangeException">valueがコモンイベントセルフ変数アドレス値として不適切な場合</exception>
        public CommonEventVariableAddress(int value) : base(value)
        {
            Index         = value.SubInt(0, 2);
            CommonEventId = value.SubInt(2, 3);
        }
 /// <summary>
 /// コモンイベント名を返す。
 /// </summary>
 /// <param name="id">コモンイベントID</param>
 /// <returns>コモンイベント名(存在しない場合専用の文字列)</returns>
 public (bool, CommonEventName) GetCommonEventName(CommonEventId id)
 => CommonEvent.GetCommonEventName(id);