diff --git a/docs/zh-cn/protocol/integration.md b/docs/zh-cn/protocol/integration.md index 794ef4fffb..4d3eb6c15c 100644 --- a/docs/zh-cn/protocol/integration.md +++ b/docs/zh-cn/protocol/integration.md @@ -168,6 +168,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha "dorm_notstationed_enabled": bool, // 是否启用宿舍“未进驻”选项,可选,默认 false "dorm_trust_enabled": bool, // 是否将宿舍剩余位置填入信赖未满干员,可选,默认 false + "reception_message_board": bool, // 是否领取会客室信息板信用,可选,默认 true /* 以下参数仅在 mode=10000 时生效,否则会被忽略 */ "filename": string, // 自定义配置路径,必选。不支持运行中设置 diff --git a/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp b/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp index b112c45085..14a75d5fc5 100644 --- a/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp +++ b/src/MaaCore/Task/Infrast/InfrastReceptionTask.cpp @@ -19,7 +19,9 @@ bool asst::InfrastReceptionTask::_run() return false; } - receive_message_board(); + if (m_receive_message_board) { + receive_message_board(); + } click_bottom_left_tab(); close_end_of_clue_exchange(); diff --git a/src/MaaCore/Task/Infrast/InfrastReceptionTask.h b/src/MaaCore/Task/Infrast/InfrastReceptionTask.h index cb0d302d46..7afc45ed2c 100644 --- a/src/MaaCore/Task/Infrast/InfrastReceptionTask.h +++ b/src/MaaCore/Task/Infrast/InfrastReceptionTask.h @@ -11,6 +11,8 @@ public: virtual size_t max_num_of_opers() const noexcept override { return 2ULL; } + void set_receive_message_board(bool value) noexcept { m_receive_message_board = value; } + protected: virtual bool _run() override; @@ -27,5 +29,7 @@ private: bool back_to_reception_main(); bool send_clue(); bool shift(); + + bool m_receive_message_board = true; }; } diff --git a/src/MaaCore/Task/Interface/InfrastTask.cpp b/src/MaaCore/Task/Interface/InfrastTask.cpp index 07b4dc5585..b5fdd9a740 100644 --- a/src/MaaCore/Task/Interface/InfrastTask.cpp +++ b/src/MaaCore/Task/Interface/InfrastTask.cpp @@ -141,6 +141,9 @@ bool asst::InfrastTask::set_params(const json::value& params) bool dorm_trust_enabled = params.get("dorm_trust_enabled", false); m_dorm_task_ptr->set_trust_enabled(dorm_trust_enabled); + bool reception_message_board = params.get("reception_message_board", true); + m_reception_task_ptr->set_receive_message_board(reception_message_board); + bool replenish = params.get("replenish", false); m_replenish_task_ptr->set_enable(replenish); diff --git a/src/MaaWpfGui/Constants/ConfigurationKeys.cs b/src/MaaWpfGui/Constants/ConfigurationKeys.cs index 698850a8b9..0cc07a969a 100644 --- a/src/MaaWpfGui/Constants/ConfigurationKeys.cs +++ b/src/MaaWpfGui/Constants/ConfigurationKeys.cs @@ -102,6 +102,7 @@ namespace MaaWpfGui.Constants public const string DormThreshold = "Infrast.DormThreshold"; public const string UsesOfDrones = "Infrast.UsesOfDrones"; + public const string InfrastReceptionMessageBoardReceive = "Infrast.ReceptionMessageBoardReceive"; public const string ContinueTraining = "Infrast.ContinueTraining"; public const string DefaultInfrast = "Infrast.DefaultInfrast"; public const string IsCustomInfrastFileReadOnly = "Infrast.IsCustomInfrastFileReadOnly"; diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index 28eb88f442..f84e8024a9 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -2167,17 +2167,7 @@ namespace MaaWpfGui.Main return MaaService.AsstBackToHome(_handle); } - public bool AsstSetInfrastTaskParams( - IEnumerable order, - string usesOfDrones, - bool continueTraining, - double dormThreshold, - bool dormFilterNotStationedEnabled, - bool dormDormTrustEnabled, - bool originiumShardAutoReplenishment, - bool isCustom, - string filename, - int planIndex) + public bool AsstSetInfrastTaskParams() { const TaskType Type = TaskType.Infrast; int id = _taskStatus.FirstOrDefault(i => i.Value == Type).Key; @@ -2186,19 +2176,7 @@ namespace MaaWpfGui.Main return false; } - var taskParams = new AsstInfrastTask - { - Facilitys = order.ToList(), - UsesOfDrones = usesOfDrones, - ContinueTraining = continueTraining, - DormThreshold = dormThreshold, - DormFilterNotStationedEnabled = dormFilterNotStationedEnabled, - DormDormTrustEnabled = dormDormTrustEnabled, - OriginiumShardAutoReplenishment = originiumShardAutoReplenishment, - IsCustom = isCustom, - Filename = filename, - PlanIndex = planIndex, - }.Serialize().Params; + var taskParams = InfrastSettingsUserControlModel.Instance.Serialize().Params; return AsstSetTaskParamsWithEncoding(id, taskParams); } diff --git a/src/MaaWpfGui/Models/AsstTasks/AsstInfrastTask.cs b/src/MaaWpfGui/Models/AsstTasks/AsstInfrastTask.cs index 6a8eddd310..4b4f3af4ea 100644 --- a/src/MaaWpfGui/Models/AsstTasks/AsstInfrastTask.cs +++ b/src/MaaWpfGui/Models/AsstTasks/AsstInfrastTask.cs @@ -68,6 +68,11 @@ public class AsstInfrastTask : AsstBaseTask /// public bool OriginiumShardAutoReplenishment { get; set; } + /// + /// Gets or sets a value indicating whether 领取基建会客室留言板奖励 + /// + public bool ReceptionMessageBoard { get; set; } = true; + /// /// Gets or sets a value indicating whether 是否开启自定义配置 /// @@ -94,6 +99,7 @@ public class AsstInfrastTask : AsstBaseTask ["dorm_notstationed_enabled"] = DormFilterNotStationedEnabled, ["dorm_trust_enabled"] = DormDormTrustEnabled, ["replenish"] = OriginiumShardAutoReplenishment, + ["reception_message_board"] = ReceptionMessageBoard, ["mode"] = IsCustom ? 10000 : 0, }; diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index aa8f1c8e3d..e70b186098 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -92,6 +92,7 @@ Do not put stationed operators in Dormitory Checking this box will not remove operators like Irene from the Training Room,this will also prevent operators from the Workshop from entering the Dormitory. Originium Shard auto replenishment + Credit collection from message board in Reception Room After training is complete, try to continue mastering the current skill Training room is vacant Training completed diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index a83419d308..9216c0e691 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -92,6 +92,7 @@ 作業中の人員を宿舎に移動しない(例:訓練所でのアイリーニなど) チェックした場合、アイリーニのようなオペレーターが訓練室から外れなくなり、また、加工所のオペレーターが宿舎に送られることを防止します。 源石の欠片を自動で補充 + 受付室の掲示板からのクレジット収集 訓練完了後に現在スキルの継続特化を試みます 訓練室は空いています 訓練が完了しました diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index 8dee7131f6..8eafd9bb3a 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -92,6 +92,7 @@ 이미 배치된 오퍼레이터 숙소 배치 X 체크할 경우 아이린과 같은 오퍼레이터를 훈련실에서 제거하지 않고, 가공소의 오퍼레이터가 숙소에 배치되는 것을 방지합니다. 오리지늄 조각 자동 보충 + 접견실 게시판에서 크레딧 수집 훈련 완료 시 스킬 마스터리를 훈련 훈련실이 비어 있습니다 훈련 완료 diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index d34558a26c..2f54476897 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -92,6 +92,7 @@ 不将已进驻的干员放入宿舍 勾选则不会将艾丽妮等干员从训练室移除,但也会导致加工站干员不能进入宿舍。 源石碎片自动补货 + 会客室信息板收取信用 训练完成后继续尝试专精当前技能 训练室空闲中 训练完成 diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 06b2cc140d..009cdf2973 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -92,6 +92,7 @@ 不將已進駐的幹員放入宿舍 勾選則不會將艾麗妮等幹員從訓練室移除,但也會導致加工站幹員不能進入宿舍。 源石碎片自動補貨 + 會客室資訊板收取信用 訓練完成後繼續嘗試專精當前技能 訓練室空閒中 訓練完成 diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index ff7991d01c..3513b5dc6f 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -27,7 +27,6 @@ using MaaWpfGui.Extensions; using MaaWpfGui.Helper; using MaaWpfGui.Main; using MaaWpfGui.Models; -using MaaWpfGui.Models.AsstTasks; using MaaWpfGui.Services; using MaaWpfGui.States; using MaaWpfGui.Utilities; @@ -1684,18 +1683,7 @@ namespace MaaWpfGui.ViewModels.UI return; } - var order = InfrastTask.GetInfrastOrderList(); - Instances.AsstProxy.AsstSetInfrastTaskParams( - order, - InfrastTask.UsesOfDrones, - InfrastTask.ContinueTraining, - InfrastTask.DormThreshold / 100.0, - InfrastTask.DormFilterNotStationedEnabled, - InfrastTask.DormTrustEnabled, - InfrastTask.OriginiumShardAutoReplenishment, - InfrastTask.CustomInfrastEnabled, - InfrastTask.CustomInfrastFile, - InfrastTask.CustomInfrastPlanIndex); + Instances.AsstProxy.AsstSetInfrastTaskParams(); } private bool AppendInfrast() @@ -1707,20 +1695,7 @@ namespace MaaWpfGui.ViewModels.UI return false; } - var (type, param) = new AsstInfrastTask - { - Facilitys = InfrastTask.GetInfrastOrderList(), - UsesOfDrones = InfrastTask.UsesOfDrones, - ContinueTraining = InfrastTask.ContinueTraining, - DormThreshold = InfrastTask.DormThreshold / 100.0, - DormFilterNotStationedEnabled = InfrastTask.DormFilterNotStationedEnabled, - DormDormTrustEnabled = InfrastTask.DormTrustEnabled, - OriginiumShardAutoReplenishment = InfrastTask.OriginiumShardAutoReplenishment, - IsCustom = InfrastTask.CustomInfrastEnabled, - Filename = InfrastTask.CustomInfrastFile, - PlanIndex = InfrastTask.CustomInfrastPlanIndex, - }.Serialize(); - + var (type, param) = InfrastTask.Serialize(); return Instances.AsstProxy.AsstAppendTaskWithEncoding(AsstProxy.TaskType.Infrast, type, param); } diff --git a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/InfrastSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/InfrastSettingsUserControlModel.cs index c06bbae5c5..0903932f66 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/InfrastSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/InfrastSettingsUserControlModel.cs @@ -20,6 +20,8 @@ using System.Linq; using MaaWpfGui.Constants; using MaaWpfGui.Helper; using MaaWpfGui.Models; +using MaaWpfGui.Models.AsstTasks; +using MaaWpfGui.Services; using MaaWpfGui.Utilities.ValueType; using Microsoft.Win32; using Newtonsoft.Json; @@ -221,6 +223,18 @@ public class InfrastSettingsUserControlModel : TaskViewModel } } + private bool _receptionMessageBoardReceive = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.InfrastReceptionMessageBoardReceive, bool.TrueString)); + + public bool ReceptionMessageBoardReceive + { + get => _receptionMessageBoardReceive; + set + { + SetAndNotify(ref _receptionMessageBoardReceive, value); + ConfigurationHelper.SetValue(ConfigurationKeys.InfrastReceptionMessageBoardReceive, value.ToString()); + } + } + private bool _continueTraining = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.ContinueTraining, bool.FalseString)); /// @@ -620,4 +634,22 @@ public class InfrastSettingsUserControlModel : TaskViewModel ++CustomInfrastPlanIndex; } + + public override (AsstTaskType Type, JObject Params) Serialize() + { + return new AsstInfrastTask + { + Facilitys = GetInfrastOrderList(), + UsesOfDrones = UsesOfDrones, + ContinueTraining = ContinueTraining, + DormThreshold = DormThreshold / 100.0, + DormFilterNotStationedEnabled = DormFilterNotStationedEnabled, + DormDormTrustEnabled = DormTrustEnabled, + OriginiumShardAutoReplenishment = OriginiumShardAutoReplenishment, + IsCustom = CustomInfrastEnabled, + ReceptionMessageBoard = ReceptionMessageBoardReceive, + Filename = CustomInfrastFile, + PlanIndex = CustomInfrastPlanIndex, + }.Serialize(); + } } diff --git a/src/MaaWpfGui/Views/UserControl/TaskQueue/InfrastSettingsUserControl.xaml b/src/MaaWpfGui/Views/UserControl/TaskQueue/InfrastSettingsUserControl.xaml index e03a879cff..d21d759bf8 100644 --- a/src/MaaWpfGui/Views/UserControl/TaskQueue/InfrastSettingsUserControl.xaml +++ b/src/MaaWpfGui/Views/UserControl/TaskQueue/InfrastSettingsUserControl.xaml @@ -50,6 +50,9 @@ + + +