MaaFramework icon indicating copy to clipboard operation
MaaFramework copied to clipboard

把interface的部分option隐藏

Open Saratoga-Official opened this issue 11 months ago • 7 comments

我在一个任务里塞了十几个选项用来处理各种情况,这样会显得特别长,如果选项能有个隐藏功能,我没设置某个选项就不显示后续选项就好了,这样能节省不少设置时间,尤其是使用MaaPiCli,必须全选完才能用

Saratoga-Official avatar Jan 18 '25 01:01 Saratoga-Official

可以加个 default_case

MistEO avatar Jan 18 '25 15:01 MistEO

好像说的是下面的情况:

task: { “task1”: { "name": "", "entry": "", "option": ["op1","op2","op3","op4"] } }, "option": { "op1": { "cases": { "name": "", "pipeline_override": {} } }, "op2": { "cases": { "name": "", "pipeline_override": {} } }, "op3": { "cases": { "name": "", "pipeline_override": {} } }, "op4": { "cases": { "name": "", "pipeline_override": {} } }, }

假如设置了op1就不管op4,设置了op2就不管op3、op4这类的

Windsland52 avatar Jan 18 '25 19:01 Windsland52

对应m9a的话,就像

"task": {
        {
            "name": "局外演绎:黄昏的音序",
            "entry": "SeriesOfDusks",
            "option": [
                "触媒选择(非速刷)",
                "速刷第一层(需将“刻画生长-指引之歌”点满)"
            ]
        }
},
"option": {
        "触媒选择(非速刷)": {
            "cases": [
                {
                    "name": "术式神灯",
                    "pipeline_override": {}
                },
                {
                    "name": "石榴心血",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_PomegranateHeartBleeding.png"
                        }
                    }
                },
                {
                    "name": "精神视界",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_SpiritualVision.png"
                        }
                    }
                },
                {
                    "name": "仪式匕首",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_RitualDagger.png"
                        }
                    }
                },
                {
                    "name": "曳变灵摆",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_DragChangePendulum.png"
                        }
                    }
                },
                {
                    "name": "“一”的诫令",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_Commandment.png"
                        }
                    }
                },
                {
                    "name": "“全”的振歌",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_Song.png"
                        }
                    }
                },
                {
                    "name": "点金之石",
                    "pipeline_override": {
                        "SODStart_MediaSelect": {
                            "template": "OutsideDeduction/SODStart_Media_MidasStone.png"
                        }
                    }
                }
            ]
        },
        "速刷第一层(需将“刻画生长-指引之歌”点满)": {
            "cases": [
                {
                    "name": "No",
                    "pipeline_override": {}
                },
                {
                    "name": "Yes",
                    "pipeline_override": {
                        "SOD_UNOPENED": {
                            "next": "ODR_Start"
                        }
                    }
                }
            ]
        }

分成速刷和非速刷,如果选择速刷就不显示"触媒选择(非速刷)"这个选项

Windsland52 avatar Jan 18 '25 19:01 Windsland52

我是考虑到目前通用gui(比如mfa)只支持winx64设备,别的设备还是得用maapicil的,而且就算是用mfa,一个任务设置十几到二十几的选项也很麻烦,虽然不用都设置了,但是显得很长,如果要设置底下的也要来回翻,有些选项对于选择不同选项的人来说是完全没必要设置的,比如一个关卡有五个战斗节点,我只想打第一个节点就只显示第一个节点的设置,把后续节点的设置全部隐藏更好,只有五个节点全部打的人才显示全部的选项

Saratoga-Official avatar Jan 18 '25 22:01 Saratoga-Official

本质需要一个逻辑语句的eval(

neko-para avatar Feb 05 '25 11:02 neko-para

这里感觉核心问题是, 目前每个task的所有option是平等的, 而非递进的. 如果要比较好的实现这个的话, 逻辑上应该是让option之间有拓扑序, 然后再是让每个option可以添加前置条件.

另外, 还需要确认:

  1. 被限制条件禁用的选项, 是否要生效default_case/case[0]的override?

  2. 关于拓扑序, 要么是直接在interface中显式定义, 但这个不太好由json呈现; 要么是ui负责从条件中生成, 这个就需要各个ui都实现一套检查;

  3. 每个任务中, option数组的顺序是否还重要? 目前ui的实现应该都是会确保按照顺序进行pipeline合并, 但是如果添加了额外的拓扑序后, 可能会和option数组的顺序冲突, 这里需要确定是视为报错, 按数组顺序. 或者, 也可以选择强化选项顺序, 变成全序(比如直接让option对象变成数组), 然后按选项顺序.

@MistEO 玛丽看看

neko-para avatar Jun 20 '25 09:06 neko-para

@SweetSmellFox 屑佬也看看呢

neko-para avatar Jun 20 '25 09:06 neko-para