protected override string MakeEventCommandMainSentence(
            EventCommandSentenceResolver resolver, EventCommandSentenceType type,
            EventCommandSentenceResolveDesc desc)
        {
            if (desc is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(desc)));
            }

            var forkStringsList = ConditionList.Select((x, idx) =>
            {
                var leftVarName  = resolver.GetNumericVariableAddressStringIfVariableAddress(x.LeftSide, type, desc);
                var rightVarName = x.IsNotReferX
                    ? x.RightSide.ToString()
                    : resolver.GetNumericVariableAddressStringIfVariableAddress(x.RightSide, type, desc);
                var myStr = string.Format(EventCommandSentenceFormatForkConditionForMe,
                                          leftVarName, rightVarName, x.Condition.EventCommandSentence);
                var branchStr = string.Format(EventCommandSentenceFormatForkConditionForBranch,
                                              leftVarName, rightVarName, x.Condition.EventCommandSentence);
                return(myStr, branchStr);
            }).ToList();

            desc.StartBranch(BranchType.ConditionNumber, forkStringsList.Select(x => x.branchStr).ToList());

            var forkStrList = forkStringsList.Select(x => x.myStr)
                              .Select((x, idx) =>
                                      string.Format(EventCommandSentenceFormatFork,
                                                    idx + 1, x)
                                      );

            return(string.Format(EventCommandSentenceFormatMain,
                                 string.Join("", forkStrList)));
        }
        protected override string MakeEventCommandMainSentence(
            EventCommandSentenceResolver resolver, EventCommandSentenceType type,
            EventCommandSentenceResolveDesc desc)
        {
            if (desc is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(desc)));
            }

            var forkStrList = ConditionList.Select((x, idx) =>
            {
                var leftVarName  = resolver.GetStringVariableAddressString(x.LeftSide, type, desc);
                var rightVarName = x.IsUseNumberVariable
                    ? resolver.GetStringVariableAddressString(x.RightSide.ToInt(), type, desc)
                    : $"\"{x.RightSide.ToStr()}\"";

                var myStr = string.Format(EventCommandSentenceFormatFork,
                                          idx + 1, leftVarName, rightVarName, x.Condition.EventCommandSentence);
                var branchStr = string.Format(EventCommandSentenceFormatForkCondition,
                                              leftVarName, rightVarName, x.Condition.EventCommandSentence);

                return(myStr, branchStr);
            }).ToList();
            var thisFortSrtList  = forkStrList.Select(x => x.myStr).ToList();
            var childForkStrList = forkStrList.Select(x => x.branchStr).ToList();

            desc.StartBranch(BranchType.ConditionString, childForkStrList);

            return(string.Format(EventCommandSentenceFormatMain,
                                 string.Join("", thisFortSrtList)));
        }
Exemple #3
0
        protected override string MakeEventCommandMainSentence(
            EventCommandSentenceResolver resolver, EventCommandSentenceType type,
            EventCommandSentenceResolveDesc desc)
        {
            if (desc is null)
            {
                throw new ArgumentNullException(
                          ErrorMessage.NotNull(nameof(desc)));
            }

            var caseStrList = Enumerable.Range(0, CaseValue)
                              .Select(idx => ChoiceCaseList[idx])
                              .ToList();

            // 以降の処理のために自身の選択肢をResolveDescに登録
            desc.StartBranch(BranchType.Choice, caseStrList);

            var casesStr = string.Join(" / ",
                                       caseStrList.Select((s, i) => $"【{i + 1}】{s}"));

            return(string.Format(EventCommandSentenceFormat,
                                 casesStr));
        }