Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 66 additions & 4 deletions app/models/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@
from app.utils.constants import (
CYCLE_EMPTY_TIME,
MAA_STAGE_KEY,
MAAEND_AUTO_COLLECT_MODES,
MAAEND_AUTO_COLLECT_ROUTE_OPTIONS,
MAAEND_AUTO_COLLECT_TASK,
MAAEND_DELIVERY_COMMISSION_SOURCES,
MAAEND_DELIVERY_TASK,
MAAEND_PROTOCOL_SPACE_TASK_OPTIONS,
MAAEND_SANITY_TASK_DEFAULTS,
MAAEND_SANITY_TASK_DETAIL_LABELS,
Expand Down Expand Up @@ -126,6 +131,54 @@ def init_maaend_task_config(config) -> None:
StringValidator(),
)

## 抢委托送货最低接取价格(万)
config.Task_SeizeDeliveryJobsReward = ConfigItem(
"Task", "SeizeDeliveryJobsReward", 15.9, RangeValidator(0, 9999)
)
## 抢委托送货委托接收点
config.Task_SeizeDeliveryJobsCommissionSource = ConfigItem(
"Task",
"SeizeDeliveryJobsCommissionSource",
"Unlimited",
OptionsValidator(list(MAAEND_DELIVERY_COMMISSION_SOURCES)),
)
## 独立送货任务
setattr(
config,
f"Task_If{MAAEND_DELIVERY_TASK}",
ConfigItem("Task", f"If{MAAEND_DELIVERY_TASK}", True, BoolValidator()),
)

## 独立自动采集任务
config.Task_IfAutoCollect = ConfigItem(
"Task", f"If{MAAEND_AUTO_COLLECT_TASK}", True, BoolValidator()
)
## 自动采集路线安排:分散为三日轮换,集中为每三日执行一次
config.Task_AutoCollectMode = ConfigItem(
"Task",
"AutoCollectMode",
"Distributed",
OptionsValidator(list(MAAEND_AUTO_COLLECT_MODES)),
)
## 自动采集区域资源路线
config.Task_AutoCollectRoutes = ConfigItem(
"Task",
"AutoCollectRoutes",
list(MAAEND_AUTO_COLLECT_ROUTE_OPTIONS["AutoCollectRoutes"]),
MultipleOptionsValidator(
list(MAAEND_AUTO_COLLECT_ROUTE_OPTIONS["AutoCollectRoutes"])
),
)
## 自动采集通用资源路线
config.Task_AutoCollectCommonRoutes = ConfigItem(
"Task",
"AutoCollectCommonRoutes",
list(MAAEND_AUTO_COLLECT_ROUTE_OPTIONS["AutoCollectCommonRoutes"]),
MultipleOptionsValidator(
list(MAAEND_AUTO_COLLECT_ROUTE_OPTIONS["AutoCollectCommonRoutes"])
),
)

for task_name in MAAEND_TASKS:
setattr(
config,
Expand Down Expand Up @@ -973,6 +1026,18 @@ def __init__(self) -> None:
super().__init__()


class MaaEndConfigModeValidator(OptionsValidator):
"""兼容旧版来源名称,统一为脚本/用户/直控。"""

LEGACY_MODE_MAP = {"简洁": "脚本", "详细": "用户", "自定义": "用户"}

def __init__(self) -> None:
super().__init__(["脚本", "用户", "直控"])

def correct(self, value: Any) -> Any:
return self.LEGACY_MODE_MAP.get(value, super().correct(value))


class MaaEndUserConfig(ConfigBase):
"""MaaEnd用户配置"""

Expand All @@ -991,9 +1056,7 @@ def __init__(self) -> None:
## 密码
self.Info_Password = ConfigItem("Info", "Password", "", EncryptValidator())
## 配置文件来源
self.Info_Mode = ConfigItem(
"Info", "Mode", "脚本", ScriptUserModeValidator()
)
self.Info_Mode = ConfigItem("Info", "Mode", "脚本", MaaEndConfigModeValidator())
## 是否启用快速配置
self.Info_IfQuickConfig = ConfigItem(
"Info", "IfQuickConfig", True, BoolValidator()
Expand Down Expand Up @@ -1094,7 +1157,6 @@ async def load(self, data: dict):
):
info_data["Mode"] = "脚本"
info_data.pop("IfQuickConfig", None)

task_data = data.get("Task")
if isinstance(task_data, dict):
_normalize_maaend_sanity_task_type(task_data)
Expand Down
51 changes: 48 additions & 3 deletions app/models/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -1225,8 +1225,9 @@ class MaaEndUserConfig_Info(BaseModel):
Status: Optional[bool] = Field(default=None, description="用户状态")
Id: Optional[str] = Field(default=None, description="用户ID")
Password: Optional[str] = Field(default=None, description="密码")
Mode: Optional[Literal["脚本", "用户"]] = Field(
default=None, description="配置来源(脚本/用户)"
Mode: Optional[Literal["脚本", "用户", "直控"]] = Field(
default=None,
description="配置来源(脚本共享、用户独立、脚本直控)",
)
IfQuickConfig: Optional[bool] = Field(default=None, description="是否启用快速配置")
SanityMode: Optional[str] = Field(default=None, description="理智任务配置模式")
Expand All @@ -1244,6 +1245,35 @@ class MaaEndUserConfig_Info(BaseModel):
Tag: Optional[str] = Field(default=None, description="用户标签信息")


MaaEndAutoCollectRoute = Literal[
"Route1",
"Route2",
"Route3",
"Route4",
"Route5",
"Route6",
"Route7",
"Route8",
"Route9",
"Route10",
"Route11",
"Route12",
"Route13",
"Route14",
"Route15",
]
MaaEndAutoCollectCommonRoute = Literal[
"CommonRoute1",
"CommonRoute2",
"CommonRoute3",
"CommonRoute4",
"CommonRoute5",
"CommonRoute6",
"CommonRoute7",
"CommonRoute8",
]


class MaaEndUserConfig_Task(BaseModel):
SanityTaskType: Optional[
Literal["OperatorProgression", "WeaponProgression", "CrisisDrills", "Essence"]
Expand Down Expand Up @@ -1280,13 +1310,28 @@ class MaaEndUserConfig_Task(BaseModel):
IfAutoStockStaple: Optional[bool] = Field(default=None, description="购买稳定物资")
IfVisitFriends: Optional[bool] = Field(default=None, description="拜访好友")
IfCreditShoppingN2: Optional[bool] = Field(default=None, description="信用点购物")
IfSeizeEntrustTask: Optional[bool] = Field(default=None, description="抢委托")
SeizeDeliveryJobsReward: Optional[float] = Field(
default=None, ge=0, description="抢委托送货最低接取价格(万)"
)
SeizeDeliveryJobsCommissionSource: Optional[
Literal["Unlimited", "WulingCity", "TestArea"]
] = Field(default=None, description="抢委托送货委托接收点")
IfSeizeDeliveryJobs: Optional[bool] = Field(default=None, description="抢委托送货")
IfAutoEcoFarm: Optional[bool] = Field(default=None, description="生态农场")
IfAutoSell: Optional[bool] = Field(default=None, description="售卖弹性物资")
IfEnvironmentMonitoring: Optional[bool] = Field(
default=None, description="环境监测"
)
IfAutoCollect: Optional[bool] = Field(default=None, description="自动采集")
AutoCollectMode: Optional[Literal["Distributed", "Concentrated"]] = Field(
default=None, description="自动采集路线安排:分散或集中"
)
AutoCollectRoutes: Optional[list[MaaEndAutoCollectRoute]] = Field(
default=None, description="自动采集区域资源路线"
)
AutoCollectCommonRoutes: Optional[list[MaaEndAutoCollectCommonRoute]] = Field(
default=None, description="自动采集通用资源路线"
)
IfTrialOfSwordmancy: Optional[bool] = Field(default=None, description="选剑演武")
IfDailyRewards: Optional[bool] = Field(default=None, description="日常奖励领取")
IfResourceRecycleStation: Optional[bool] = Field(
Expand Down
Loading