/// <summary>
        /// マップキャラID文字列を取得する。
        /// </summary>
        /// <param name="characterId">キャラID</param>
        /// <param name="type">[NotNull] イベントコマンド種別</param>
        /// <param name="desc">[Nullable] 付加情報</param>
        /// <returns>
        ///     マップイベントID文字列。
        ///     該当マップがプロジェクト内に読み込まれていない場合、空文字。
        /// </returns>
        public (bool, MapEventName) GetMapEventIdStr(MapCharacterId characterId,
                                                     EventCommandSentenceType type, EventCommandSentenceResolveDesc desc)
        {
            const string notFound = "";

            if (characterId == -1)
            {
                return(true, "このマップイベント");
            }
            if (characterId == -2)
            {
                return(true, "主人公");
            }
            if (characterId < -2)
            {
                var memberId = characterId * -1 - 2;
                return(true, $"仲間{memberId}");
            }

            if (characterId.ToInt().IsNumericVariableAddressSimpleCheck())
            {
                var varName = Master.GetNumericVariableAddressString(characterId, type, desc);
                return(true, $"キャラ[{varName}]");
            }

            var targetEvent = Master.MapData?.MapEvents.FirstOrDefault(x => x.MapEventId == characterId);

            if (targetEvent is null)
            {
                return(false, notFound);
            }

            return(true, $"Ev{characterId}");
        }
        /// <summary>
        /// キャラクター名を取得する。
        /// </summary>
        /// <param name="characterId">キャラクターID</param>
        /// <param name="type">[NotNull] イベントコマンド種別</param>
        /// <param name="desc">[Nullable] 付加情報</param>
        /// <returns>
        ///     マップイベント名。
        ///     該当マップがプロジェクト内に読み込まれていない場合、空文字。
        /// </returns>
        public MapEventName GetCharacterName(MapCharacterId characterId,
                                             EventCommandSentenceType type, EventCommandSentenceResolveDesc desc)
        {
            if (characterId == -1)
            {
                return("このイベント");
            }
            if (characterId == -2)
            {
                return("主人公");
            }
            if (characterId < -2)
            {
                return($"仲間{(characterId + 2) * -1}");
            }

            if (!characterId.ToInt().IsVariableAddressSimpleCheck())
            {
                return($"Ev{characterId}");
            }

            var varAddressSentence = Master.GetNumericVariableAddressString(characterId, type, desc);

            return($"キャラ[{varAddressSentence}]");
        }
Beispiel #3
0
        public static void ToIntTest(int value)
        {
            var instance = new MapCharacterId(value);

            var intValue = instance.ToInt();

            // セットした値と取得した値が一致すること
            Assert.AreEqual(intValue, value);
        }
        /// <summary>
        /// イベントコマンド文文字列を取得する。
        /// </summary>
        /// <param name="resolver">[NotNull] 名前解決クラスインスタンス</param>
        /// <param name="type">[NotNull] イベント種別</param>
        /// <param name="desc">[Nullable] 付加情報</param>
        /// <param name="characterId">キャラクターID</param>
        /// <param name="numArg1">引数1(R値またはXシェイク値)</param>
        /// <param name="numArg2">引数2(G値またはYシェイク値)</param>
        /// <param name="numArg3">引数3(B値または回数)</param>
        /// <param name="processTime">フレーム数</param>
        /// <returns>イベントコマンド文字列</returns>
        public string GetEventCommandSentence(
            EventCommandSentenceResolver resolver, EventCommandSentenceType type,
            EventCommandSentenceResolveDesc desc,
            MapCharacterId characterId, int numArg1,
            int numArg2, int numArg3, int processTime)
        {
            var eventSentence       = resolver.GetCharacterName(characterId, type, desc);
            var numArg1Sentence     = resolver.GetNumericVariableAddressStringIfVariableAddress(numArg1, type, desc);
            var numArg2Sentence     = resolver.GetNumericVariableAddressStringIfVariableAddress(numArg2, type, desc);
            var numArg3Sentence     = resolver.GetNumericVariableAddressStringIfVariableAddress(numArg3, type, desc);
            var processTimeSentence =
                resolver.GetNumericVariableAddressStringIfVariableAddress(processTime, type, desc);

            return(string.Format(EventCommandSentenceFormat,
                                 eventSentence, numArg1Sentence, numArg2Sentence, numArg3Sentence, processTimeSentence));
        }
Beispiel #5
0
        public static void ConstructorTest(int value, bool isError)
        {
            var errorOccured = false;

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

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

            var instance = new MapCharacterId(value);

            var errorOccured = false;

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

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

            // 元の値と一致すること
            Assert.AreEqual(castValue, value);
        }