贡献者:https://github.com/Because66666
BetterGenshinImpact/
├── App.xaml.cs:这段代码是一个C#应用程序的主类,它使用.NETGenericHost来创建一个具有依赖注入、配置、日志记录和其他服务的应用程序宿主。它配置了多个服务和视图模型,用于构建一个名为“BetterGenshinImpact”的桌面应用程序,该应用程序可能是一个用于辅助《原神》游戏的功能增强工具。总结来说,这份代码的功能是构建一个用于辅助《原神》游戏的桌面应用程序。
├── AssemblyInfo.cs:这段C#代码使用了几个特性(attributes)来配置Windows应用程序的DPI感知和主题信息。-`usingSystem.Windows;`和`usingSystem.Windows.Media;`是命名空间导入,它们允许代码使用Windows客户端UI框架(WPF)和媒体框架中的类。-`[assembly:DisableDpiAwareness]`特性用于指示应用程序不启用DPI(dotsperinch,每英寸点数)感知。这意味着应用程序的UI元素不会根据显示器的分辨率自动缩放,这可能会导致在高清显示器上显示的UI元素过于小。-`[assembly:ThemeInfo(ResourceDictionaryLocation.None,ResourceDictionaryLocation.SourceAssembly)]`特性用于指定应用程序的主题资源字典的位置。`ResourceDictionaryLocation.None`表示主题资源字典不包含在应用程序的资源中,而`ResourceDictionaryLocation.SourceAssembly`表示主题资源字典位于应用程序的源代码所在的程序集内。总结这句话概括这份代码的功能是:这段代码配置了一个Windows应用程序,禁用了DPI感知并指定了主题资源字典的位置。
├── Assets/
│ ├── Audios/
│ ├── Fonts/
│ ├── Highlighting/
│ ├── Images/
│ │ ├── Anniversary/
│ ├── Model/
│ │ ├── Common/
│ │ ├── Domain/
│ │ ├── Fish/
│ │ ├── PaddleOCR/
│ │ │ ├── ch_PP-OCRv4_det/
│ │ │ ├── ch_PP-OCRv4_rec/
│ │ │ ├── ch_ppocr_mobile_v2.0_cls/
│ │ ├── World/
│ │ └── Yap/
│ └── Strings/
├── Core/
│ ├── Config/
│ │ ├── AllConfig.cs:这段代码是一个C#类,用于配置一个名为“BetterGenshinImpact”的辅助工具,该工具旨在自动化《原神》游戏中的各种任务和功能。
│ │ ├── CommonConfig.cs:这段代码定义了一个名为`CommonConfig`的C#类,它继承自`ObservableObject`,用于在WPF应用程序中管理配置信息。该类包含多个可观察属性,用于控制遮罩窗口的启用状态、UID遮盖、退出行为、主题以及应用程序的运行状态。总结:这份代码的功能是定义一个用于存储和观察WPF应用程序配置信息的类。
│ │ ├── GenshinStartConfig.cs:这段代码定义了一个名为`GenshinStartConfig`的C#类,它使用`ObservableObject`来支持数据绑定。该类包含几个属性,用于配置原神游戏的启动参数,如是否自动进入游戏、启动参数字符串、原神安装路径以及是否联动启动原神本体。总结来说,这份代码的功能是提供一个用于配置原神游戏启动的类。
│ │ ├── Global.cs:这段代码定义了一个名为`Global`的静态类,它提供了与文件操作、版本比较和JSON序列化相关的静态方法。该类的主要功能是提供全局配置和工具方法,用于处理文件路径、版本检查和JSON数据操作。总结:该代码提供了一组全局配置和工具方法,用于文件路径管理、版本比较和JSON序列化。
│ │ ├── HotKeyConfig.cs:这段代码定义了一个名为`HotKeyConfig`的C#类,它使用`ObservableObject`来支持数据绑定,并包含多个属性,每个属性都关联一个快捷键和快捷键类型,用于配置游戏中的各种快捷操作。总结来说,这份代码的功能是配置游戏《原神》中的各种快捷键设置。
│ │ ├── KeyBindingsConfig.cs:这份代码的功能是提供一个用于原神游戏的按键绑定配置系统,允许玩家自定义游戏中的按键操作,包括移动、攻击、交互等,并支持多语言显示和与Windows输入事件解耦。
│ │ ├── MacroConfig.cs:这段代码定义了一个名为`MacroConfig`的C#类,它似乎用于配置一个名为“BetterGenshinImpact”的游戏辅助工具的宏功能。该类包含多个可观察属性,用于设置不同的宏参数,如技能间隔时间、按键模式、战斗宏的启用状态和优先级等。总结:这份代码的功能是配置“BetterGenshinImpact”游戏辅助工具的宏功能。
│ │ ├── MaskWindowConfig.cs:这段代码定义了一个名为`MaskWindowConfig`的C#类,它使用CommunityToolkit的MVVM(Model-View-ViewModel)框架来创建一个配置类,用于管理一个遮罩窗口的各种设置。该类包含多个属性,如是否锁定控件、是否显示方向提示、是否显示识别结果、日志窗口的位置和大小、是否启用遮罩窗口等,以及一些与UID遮盖和状态指示相关的配置。总结:这份代码的功能是定义一个用于配置遮罩窗口的类,用于管理原神游戏中的辅助功能设置。
│ │ ├── OneDragonFlowConfig.cs:这段代码定义了一个C#类`OneDragonFlowConfig`,它是一个用于配置《原神》游戏内自动战斗和任务设置的模型。该类包含了一系列属性,用于存储不同的配置信息,如合成树脂的国家、冒险者协会的国家、自动战斗的队伍和策略名称,以及每周不同日子的秘境配置。通过`GetDomainConfig`方法,可以根据当前日期返回相应的队伍和秘境配置。
│ │ ├── PathingConditionConfig.cs:这段代码是一个配置类,用于配置GenshinImpact游戏中的地图追踪条件,包括队伍和角色的条件配置,以及特殊动作和采集物的匹配规则,最终生成队伍配置用于游戏中的自动战斗。
│ │ ├── PathingPartyConfig.cs:这段代码定义了一个C#类`PathingPartyConfig`,它是一个用于配置地图追踪和自动战斗设置的模型。这个类使用了`ObservableObject`来支持数据绑定,并且包含了多个属性来配置队伍名称、角色编号、战斗策略等,以及一些辅助配置,如是否仅在某些情况下复活、是否启用自动战斗等。总结:这份代码的功能是配置《原神》游戏中的地图追踪和自动战斗设置。
│ │ ├── RecordConfig.cs:这段代码定义了一个名为`RecordConfig`的C#类,它使用CommunityToolkit的MVVM(Model-View-ViewModel)库来创建一个可观察的对象。该类包含三个私有字段,分别用于存储视角移动与鼠标移动距离的转换系数、视角移动与DirectInput移动单位的转换系数,以及一个布尔值用于标记是否记录相机视角朝向。这个类似乎是为了配置和存储与游戏《原神》相关的视角和输入设置。总结:这份代码的功能是定义一个用于存储和配置游戏《原神》视角和输入设置的配置类。
│ │ ├── RectConfig.cs:这段代码定义了一个名为`RectConfig`的类,它用于封装一个矩形区域,包含矩形的左上角坐标(X,Y)和矩形的宽度和高度。该类提供了一个从`RectConfig`到`OpenCvSharp.Rect`的转换方法,以便与OpenCV库兼容。总结:这段代码的功能是提供一个用于表示和转换OpenCV矩形区域的配置类。
│ │ └── ScriptConfig.cs:这段C#代码定义了一个名为`ScriptConfig`的类,它使用`CommunityToolkit.Mvvm.ComponentModel`命名空间中的`ObservableObject`来支持数据绑定。该类包含几个属性,用于存储与脚本配置相关的数据,如自动更新脚本仓库的周期、上次更新时间、脚本仓库按钮红点是否可见以及已订阅的脚本路径列表。总结:这份代码的功能是定义一个用于存储和跟踪GenshinImpact脚本配置的类。
│ ├── Monitor/
│ │ ├── DirectInputMonitor.cs:这段代码的功能是创建一个用于监控和控制鼠标输入的类,它能够捕获鼠标状态并通过钩子函数模拟鼠标移动,同时支持启动和停止监控。概括总结:该代码实现了一个用于记录和模拟鼠标输入的监控器。
│ │ └── MouseKeyMonitor.cs:这段C#代码的功能是创建一个全局的鼠标和键盘监听器,用于模拟游戏中的按键和鼠标操作,例如实现长按F键进行连发攻击和长按空格键进行连跳。总结来说,这份代码是一个游戏辅助宏脚本,用于自动执行游戏中的特定动作。
│ ├── Recognition/
│ │ ├── OCR/
│ │ │ ├── IOcrService.cs:这段C#代码定义了一个名为`IOcrService`的接口,该接口包含三个方法,用于执行光学字符识别(OCR)操作。以下是代码内容的详细分析:1.`usingOpenCvSharp;`-引入了OpenCvSharp命名空间,这是一个用于图像处理和计算机视觉的库,它提供了许多与OpenCV(一个开源的计算机视觉库)兼容的C#类。2.`usingSdcb.PaddleOCR;`-引入了Sdcb.PaddleOCR命名空间,这可能是用于PaddleOCR(一个基于PaddlePaddle的OCR库)的C#封装或接口。3.`namespaceBetterGenshinImpact.Core.Recognition.OCR;`-定义了一个命名空间,表明这段代码是用于“BetterGenshinImpact”项目中的核心部分,具体是识别模块下的OCR(光学字符识别)。4.`publicinterfaceIOcrService`-定义了一个公共接口`IOcrService`,它包含以下方法:-`publicstringOcr(Matmat);`-这个方法接收一个`Mat`对象作为参数,返回识别出的文本字符串。`Mat`是OpenCvSharp中用于表示图像的类。-`publicstringOcrWithoutDetector(Matmat);`-这个方法同样接收一个`Mat`对象,但返回的文本是通过不使用检测器的方式识别得到的,可能意味着直接对图像中的文本进行识别。-`publicPaddleOcrResultOcrResult(Matmat);`-这个方法接收一个`Mat`对象,并返回一个`PaddleOcrResult`对象,该对象可能包含了识别结果以及相关的元数据。总结:这份代码的功能是定义了一个光学字符识别服务接口,用于在“BetterGenshinImpact”项目中识别图像中的文本。
│ │ │ ├── OcrFactory.cs:这段C#代码定义了一个名为`OcrFactory`的类,该类用于创建不同类型的OCR(光学字符识别)服务实例。它包含一个静态方法`Create`,该方法根据传入的`OcrEngineTypes`枚举值来决定创建哪种类型的OCR服务。代码中使用了模式匹配(switch表达式)来根据枚举值实例化相应的OCR服务类。如果传入的枚举值不是预期的类型,则会抛出一个`ArgumentOutOfRangeException`异常。总结:这份代码的功能是创建不同类型的OCR服务实例。
│ │ │ ├── PaddleOcrResultExtension.cs:这段代码是一个C#扩展方法类,它扩展了`PaddleOcrResult`类,增加了几个静态方法来处理OCR(光学字符识别)结果。这些方法允许用户检查特定文本是否出现在OCR结果中,根据文本查找区域,将区域转换为矩形并绘制,以及将区域转换为具有文本和得分的矩形对象。总结:这段代码的功能是扩展PaddleOCR结果类,提供文本搜索、区域查找和矩形绘制等功能。
│ │ │ └── PaddleOcrService.cs:这段代码是一个C#类,名为`PaddleOcrService`,它实现了`IOcrService`接口。该类使用PaddleOCR库来执行光学字符识别(OCR)操作,主要功能是从图像中提取文本内容。总结:该代码的功能是使用PaddleOCR库实现图像文本识别服务。
│ │ ├── ONNX/
│ │ │ ├── BgiSessionOption.cs:这段代码定义了一个名为`BgiSessionOption`的C#类,该类继承自`Singleton<BgiSessionOption>`,这意味着它是单例模式,确保全局只有一个实例。这个类用于配置和设置ONNX推理引擎的选项。代码的主要功能包括:-定义了一个静态数组`InferenceDeviceTypes`,包含了支持的推理设备类型,如CPU和GPU_DirectML。-`Options`属性用于存储会话选项,根据配置文件中的`InferenceDevice`设置来初始化。-`MakeSessionOptionWithDirectMlProvider`方法用于创建一个具有DirectML提供程序的会话选项。-类中还有一个未实现的`RefreshInference`方法,注释中提到这个方法用于重新加载推理器,但实际代码中没有实现。总结这句话概括这份代码的功能是:该代码定义了一个用于配置ONNX推理引擎的选项的单例类,支持CPU和GPU_DirectML两种推理设备。
│ │ │ ├── BgiYoloV8Predictor.cs:这段代码的功能是使用ONNX模型通过YOLOv8库在GenshinImpact游戏中检测图像中的对象,并将检测结果转换为矩形框,最后将这些矩形框绘制到游戏视图中。
│ │ │ ├── BgiYoloV8PredictorFactory.cs:这段代码定义了一个名为`BgiYoloV8PredictorFactory`的类,该类用于创建和管理`BgiYoloV8Predictor`实例。它使用一个静态字典来存储已经创建的预测器实例,以便在需要时重用。`GetPredictor`方法接受一个模型路径作为参数,如果该路径对应的预测器尚未创建,则创建一个新的实例并将其添加到字典中;如果已经存在,则直接返回该实例。总结:该代码的功能是创建和管理GenshinImpact游戏中的YOLOV8预测器实例。
│ │ │ ├── SVTR/
│ │ │ │ ├── ITextInference.cs:这段C#代码定义了一个名为`ITextInference`的接口,该接口包含一个名为`Inference`的方法,该方法接收一个`Mat`类型的参数,并返回一个`string`类型的结果。`Mat`类型是OpenCvSharp库中的一个类,用于表示图像数据。根据代码的命名空间和注释,可以推测这个接口是用来进行基于SVTR(SpatialTransformerNetworks)网络的文字识别推理。总结:这份代码的功能是定义一个用于基于SVTR网络进行文字识别推理的接口。
│ │ │ │ ├── PickTextInference.cs:这段代码是一个C#类,它实现了对图像中的文字进行识别的功能。具体来说,它使用了一个ONNX模型(Yap模型)来识别图像中的文字,并将识别结果转换为字符串返回。
│ │ │ │ └── TextInferenceFactory.cs:这段C#代码定义了一个名为`TextInferenceFactory`的类,该类用于创建和选择文本识别(OCR)引擎的实例。它包含一个静态方法`Pick`,该方法返回一个`ITextInference`接口的实现,该实现由`OcrEngineTypes`枚举类型决定。如果指定的OCR引擎类型不是`YapModel`,则会抛出一个`ArgumentOutOfRangeException`异常。总结:这段代码的功能是创建一个文本识别引擎的实例,并根据指定的OCR引擎类型来选择合适的实现。
│ │ │ └── YOLO/
│ │ │ │ └── Predictor.cs:这段代码的功能是创建一个用于预测的类,该类使用ONNX模型来识别图像中的对象,具体应用于“BetterGenshinImpact”游戏中的自动钓鱼功能。
│ │ ├── OcrEngineTypes.cs:这段代码定义了一个名为`OcrEngineTypes`的枚举类型,它用于表示不同的OCR(光学字符识别)引擎类型。代码中包含了几个枚举值,分别是`Paddle`、`YasModel`和`YapModel`,这些值可能代表了不同的OCR引擎实现或配置。以下是代码的详细分析:-`namespaceBetterGenshinImpact.Core.Recognition;`:这行代码定义了一个命名空间,名为`BetterGenshinImpact.Core.Recognition`,这表明该枚举是`BetterGenshinImpact`项目的一部分,属于`Core`层下的`Recognition`子模块。-`publicenumOcrEngineTypes`:这行代码声明了一个名为`OcrEngineTypes`的公共枚举类型。-枚举值:-`Paddle`:可能表示使用PaddlePaddle框架实现的OCR引擎。-`YasModel`:可能表示一个特定的OCR模型,名为Yas。-`YapModel`:可能表示另一个特定的OCR模型,名为Yap。总结:这份代码的功能是定义了一个枚举类型,用于区分不同的OCR引擎类型。
│ │ ├── OpenCv/
│ │ │ ├── ArithmeticHelper.cs:这段代码定义了一个名为`ArithmeticHelper`的类,其中包含两个静态方法:`HorizontalProjection`和`VerticalProjection`。这两个方法都接受一个`Mat`类型的参数`gray`,这是OpenCvSharp库中用于表示图像的类。这两个方法分别用于计算图像的水平投影和垂直投影。水平投影方法遍历图像的每一行,计算每行中像素值为255(通常是白色或前景色)的数量,并返回一个包含这些数量的数组。垂直投影方法遍历图像的每一列,计算每列中像素值为255的数量,并返回一个包含这些数量的数组。总结这句话概括这份代码的功能是:该代码实现了对图像进行水平和垂直投影的计算。
│ │ │ ├── CommonExtension.cs:这段代码是一个C#扩展方法类,它提供了对OpenCvSharp库中的Point和Rect类型与System.Drawing和System.Windows命名空间中的相应类型之间的转换方法。它还包括了一些额外的几何操作,如获取中心点、缩放矩形和颜色转换。总结:这份代码的功能是提供OpenCvSharp与System.Drawing和System.Windows之间的类型转换和几何操作扩展方法。
│ │ │ ├── CommonRecognition.cs:这段代码的功能是使用OpenCvSharp库在给定的图像中寻找特定颜色的游戏内按钮,并返回这些按钮的边界框列表。
│ │ │ ├── ContoursHelper.cs:这段代码的功能是使用OpenCvSharp库在给定的图像中查找特定颜色和尺寸的矩形区域。
│ │ │ ├── CropHelper.cs:这段C#代码定义了一个名为`CropHelper`的类,该类提供了多个静态方法来裁剪OpenCV中的`Mat`对象,即图像。这些方法允许用户从图像的顶部、底部、左侧或右侧裁剪出指定大小的区域。代码使用了OpenCvSharp库,这是一个用于C#的OpenCV封装库。总结这句话概括这份代码的功能是:该代码提供了一系列裁剪图像的功能,允许用户从图像的任意边缘裁剪出指定大小的区域。
│ │ │ ├── FeatureMatch/
│ │ │ │ ├── DescriptorMatcherType.cs:这段C#代码定义了一个名为`DescriptorMatcherType`的枚举,它用于表示不同的特征匹配器类型。这个枚举包含了两种匹配器:`BruteForce`(暴力匹配器)和`FlannBased`(基于Flann的匹配器)。代码中还包含了关于这两种匹配器的优缺点描述以及选择建议,但没有实际的实现代码。总结来说,这份代码的功能是定义了一个枚举,用于选择不同的特征匹配器类型以用于图像处理中的特征匹配。
│ │ │ │ ├── Feature2DType.cs:这段代码定义了一个名为`Feature2DType`的枚举,用于表示不同的二维特征检测算法类型。具体来说,它包含了两个枚举值:`SURF`和`SIFT`,这两个值分别代表两种不同的图像特征检测方法——SURF(SpeededUpRobustFeatures)和SIFT(Scale-InvariantFeatureTransform)。这些特征检测算法通常用于计算机视觉中的图像匹配任务。总结:这份代码的功能是定义了一个枚举,用于选择不同的二维图像特征检测算法类型。
│ │ │ │ ├── FeatureMatcher.cs:这段代码是一个C#类,名为`FeatureMatcher`,它使用OpenCV库进行图像特征匹配。该类的主要功能是从训练图像中提取特征点,并能够匹配查询图像中的特征点,从而确定查询图像在训练图像中的位置。总结来说,这份代码的功能是“实现基于特征的图像匹配”。
│ │ │ │ ├── FeatureStorage.cs:这段代码定义了一个名为`FeatureStorage`的类,用于存储和检索GenshinImpact游戏中的特征点(KeyPoint)和描述矩阵(Mat)数据。它使用OpenCV库来处理图像特征和描述矩阵,并提供方法来加载和保存这些数据到文件系统中。总结:该代码的功能是用于存储和检索GenshinImpact游戏中的图像特征点和描述矩阵数据。
│ │ │ │ └── KeyPointFeatureBlockHelper.cs:这段C#代码的功能是使用OpenCV库对图像中的关键点进行特征匹配,并将图像分割成多个块,以便于进行特征提取和匹配。
│ │ │ ├── MatchTemplateHelper.cs:这段代码是一个C#类,它使用OpenCvSharp库进行图像处理,主要功能是模板匹配,用于在一张图像中查找和匹配多个模板图像,并返回匹配的位置信息。
│ │ │ ├── Model/
│ │ │ │ └── KeyPointFeatureBlock.cs:这段C#代码定义了一个名为`KeyPointFeatureBlock`的类,该类用于处理图像中的特征点(KeyPoints)。它包含以下功能:-存储特征点的列表`KeyPointList`和对应的数组`KeyPointArray`。-存储特征点在完整数组中的索引列表`KeyPointIndexList`。-存储特征描述符`Descriptor`,可能用于后续的特征匹配或识别。-存储合并的中心单元格的列和行索引`MergedCenterCellCol`和`MergedCenterCellRow`。总结:这份代码的功能是用于存储和操作图像中的特征点及其相关信息。
│ │ │ ├── OpenCvCommonHelper.cs:这段代码是一个C#类,名为`OpenCvCommonHelper`,它使用OpenCvSharp库来处理图像。该类提供了几个静态方法,用于计算灰度图中特定颜色或颜色范围内的像素数量,以及创建基于颜色阈值或HSV颜色空间的掩码。总结:该代码的功能是提供一系列使用OpenCvSharp库进行图像处理和颜色识别的辅助方法。
│ │ │ └── ResizeHelper.cs:这段代码定义了一个名为`ResizeHelper`的类,它包含三个静态方法,用于处理OpenCV中的图像缩放操作。具体来说,这些方法可以等比例缩放图像、按指定宽高缩放图像,以及将图像缩放到一个特定的宽度和高度。总结:该代码的功能是提供图像缩放的帮助方法。
│ │ ├── RecognitionObject.cs:这段C#代码定义了一个名为`RecognitionObject`的类,用于表示识别对象,包括识别类型、感兴趣的区域、名称、模板匹配设置、颜色匹配设置和OCR文字识别设置。该类提供了初始化模板、创建遮罩、设置颜色转换代码、设置颜色范围、设置OCR引擎和识别区域的方法。总结:这份代码的功能是定义一个用于图像识别的对象模型,支持模板匹配、颜色匹配和OCR文字识别等多种识别方式。
│ │ └── RecognitionTypes.cs:这段代码定义了一个名为`RecognitionTypes`的枚举类型,它用于表示不同的识别类型。每个枚举值代表一种识别方法,包括无识别、模板匹配、颜色匹配、OCR匹配、仅OCR识别、提取指定颜色后进行OCR识别以及检测。总结:这份代码的功能是定义了一个枚举,用于区分不同的图像识别类型。
│ ├── Recorder/
│ │ ├── DirectInputCalibration.cs:这段代码的功能是校准DirectInput、鼠标移动距离和视角度数之间的关系,以便在游戏中更准确地控制角色移动和视角。
│ │ ├── GlobalKeyMouseRecord.cs:这段C#代码实现了一个全局键盘和鼠标记录器,用于记录用户在游戏《原神》中的操作,以便于自动化或分析用户的行为模式。
│ │ ├── KeyMouseMacroPlayer.cs:这段代码是一个C#类,名为`KeyMouseMacroPlayer`,它提供了一个异步方法`PlayMacro`,用于播放一个宏脚本,该脚本包含键盘和鼠标事件。这个宏脚本可以用来自动化游戏中的操作。总结:该代码的功能是播放宏脚本,自动化键盘和鼠标操作以模拟用户输入。
│ │ ├── KeyMouseRecorder.cs:这段代码的功能是记录和序列化玩家在游戏中的键盘和鼠标操作,以便于自动化或回放。
│ │ └── Model/
│ │ │ ├── KeyMouseScript.cs:这段代码定义了一个名为`KeyMouseScript`的类,它用于处理宏事件,特别是与鼠标移动和点击相关的事件。该类包含一个方法`Adapt`,该方法将原始脚本中的鼠标位置坐标转换为适应当前屏幕分辨率和DPI缩放比例的坐标。总结:该代码的功能是调整宏脚本中的鼠标位置坐标以适应不同的屏幕分辨率和DPI设置。
│ │ │ ├── KeyMouseScriptInfo.cs:这段代码定义了一个名为`KeyMouseScriptInfo`的C#类,该类用于存储与键鼠脚本相关的信息,包括名称、描述、作者、版本、BetterGI版本、位置坐标以及记录时的DPI值。这个类被标记为`Serializable`,意味着它可以被序列化,以便于存储和传输。概括总结:这份代码的功能是定义一个用于存储键鼠脚本配置信息的模型类。
│ │ │ └── MacroEvent.cs:这段代码定义了一个名为`MacroEvent`的类,用于记录宏事件,例如键盘按键和鼠标操作。它包含事件类型、按键代码、鼠标位置、鼠标按钮和事件发生的时间等信息。此外,还有一个枚举`MacroEventType`,用于定义不同类型的宏事件。总结:这段代码的功能是定义一个用于记录游戏宏操作的模型类。
│ ├── Script/
│ │ ├── CancellationContext.cs:这段代码定义了一个名为`CancellationContext`的类,它继承自`Singleton`,这意味着它是单例模式。这个类用于管理一个`CancellationTokenSource`,它允许外部代码请求取消一个操作。以下是代码的详细功能:-`CancellationContext`类是一个单例,确保全局只有一个实例。-它包含一个`CancellationTokenSource`属性,用于生成和取消一个取消令牌。-`Set`方法用于创建一个新的`CancellationTokenSource`实例,并重置`disposed`标志。-`Cancel`方法用于取消当前关联的`CancellationTokenSource`,前提是`disposed`标志为`false`。-`Clear`方法用于释放`CancellationTokenSource`资源,并设置`disposed`标志为`true`。总结:这份代码的功能是提供一个单例模式的环境来管理取消令牌,以便在需要时可以取消一个操作。
│ │ ├── Dependence/
│ │ │ ├── AutoPathingScript.cs:这段代码的功能是创建一个用于自动路径导航的脚本,它可以从JSON配置文件中读取路径信息,并执行路径导航任务。
│ │ │ ├── Dispatcher.cs:这段代码的功能是创建一个任务调度器,用于管理并执行不同的游戏辅助任务,如自动召唤、伐木、战斗和秘境探索等。
│ │ │ ├── Genshin.cs:这段代码是一个用于自动化的GenshinImpact游戏脚本,它提供了多种方法来控制游戏,包括传送、切换队伍、自动点击、选择对话选项、领取奖励以及导航到游戏中的特定位置。总结来说,这份代码的功能是自动化执行GenshinImpact游戏中的各种任务。
│ │ │ ├── GlobalMethod.cs:这段代码是一个C#类,名为`GlobalMethod`,它提供了对游戏《原神》的自动化操作功能,包括键盘和鼠标操作、设置游戏分辨率、移动鼠标、点击以及截图等。总结来说,这份代码的功能是提供一个自动化工具,用于模拟用户在《原神》游戏中的键盘和鼠标操作。
│ │ │ ├── KeyMouseScript.cs:这段代码定义了一个名为`KeyMouseScript`的类,它用于处理宏事件,特别是与鼠标移动和点击相关的事件。该类包含一个方法`Adapt`,该方法将原始脚本中的鼠标位置坐标转换为适应当前屏幕分辨率和DPI缩放比例的坐标。总结:该代码的功能是调整宏脚本中的鼠标位置坐标以适应不同的屏幕分辨率和DPI设置。
│ │ │ ├── LimitedFile.cs:这段代码定义了一个名为`LimitedFile`的类,它提供了同步和异步的方法来读取文本文件,并且包含了一个路径规范化的私有方法。该类似乎是为了在BetterGenshinImpact项目中使用,用于处理文件依赖。总结:该代码的功能是提供一个文件读取工具类,用于规范化路径并同步或异步地从文件中读取文本内容。
│ │ │ ├── Log.cs:这段代码定义了一个名为`Log`的类,它使用`Microsoft.Extensions.Logging`库来提供不同级别的日志记录功能,包括调试(Debug)、信息(Info)、警告(Warn)和错误(Error)。该类通过构造函数注入一个`ILogger<Log>`实例,用于调用不同的日志方法来记录不同级别的日志信息。总结:这段代码的功能是提供一个日志记录工具类,用于在GenshinImpact的脚本中记录不同级别的日志信息。
│ │ │ ├── Model/
│ │ │ │ ├── RealTimeTimer.cs:这段C#代码定义了一个名为`RealtimeTimer`的类,该类用于管理实时任务触发器的配置和时间间隔。它包含名称、时间间隔和配置属性,并提供构造函数来初始化这些属性。总结:该代码的功能是定义一个实时任务触发器的配置模型。
│ │ │ │ ├── SoloTask.cs:这段C#代码定义了一个名为`SoloTask`的类,它代表一个独立任务。这个类有两个属性:`Name`用于存储任务的名称,`Config`用于存储与任务相关的配置信息。构造函数接受任务名称,并可选地接受一个动态类型的配置对象。代码中有一个注释掉的分支,它似乎是一个条件语句,用于将配置对象转换为特定的类型`AutoPickExternalConfig`,但这个分支被注释掉了。总结来说,这份代码的功能是定义一个用于表示独立任务的模型。
│ │ │ │ └── TimerConfig/
│ │ │ │ │ └── AutoPickExternalConfig.cs:这段C#代码定义了一个名为`AutoPickExternalConfig`的类,该类用于配置自动拾取功能的外部参数。以下是代码内容的详细解释:1.`namespaceBetterGenshinImpact.Core.Script.Dependence.Model.TimerConfig;`:这行代码定义了代码所属的命名空间,表明这个类是`BetterGenshinImpact`项目的一部分,位于`Core.Script.Dependence.Model.TimerConfig`子命名空间下。2.`publicclassAutoPickExternalConfig`:这行代码定义了一个公共类`AutoPickExternalConfig`,表示这是一个可以在其他代码中访问的类。3.`publicboolDisabledBlackWhiteList{get;set;}=false;`:这个属性表示是否禁用黑白名单功能。`get;set;`表示这个属性有getter和setter方法,可以获取和设置其值。默认值设置为`false`。4.`publicstring[]TextList{get;set;}=[];`:这个属性是一个字符串数组,用于存储需要F(可能是指某种特定的交互或条件)的文本列表。默认值为一个空数组。5.`publicboolForceInteraction{get;set;}=false;`:这个属性表示是否强制进行交互,即使遇到不匹配的文本和图标。默认值设置为`false`。总结这句话概括总结这份代码的功能是:定义了一个配置类,用于设置自动拾取功能的外部参数,如是否禁用黑白名单、需要F的文本列表以及是否强制交互。
│ │ │ └── Simulator/
│ │ │ │ └── PostMessage.cs:这段代码定义了一个名为`PostMessage`的类,它提供了模拟键盘按键(按下、释放、按下并释放)和鼠标点击的方法。该类使用`BetterGenshinImpact`库中的`PostMessageSimulator`来发送键盘和鼠标事件,以便在游戏中模拟用户输入。总结:该代码的功能是模拟游戏中的键盘和鼠标输入。
│ │ ├── EngineExtend.cs:这段代码的功能是初始化一个脚本引擎,向其中添加各种宿主对象和类型,以便在脚本中可以使用这些对象和类型来执行游戏辅助操作,如按键、鼠标操作、图像识别等。
│ │ ├── Group/
│ │ │ ├── ScriptGroup.cs:这段代码定义了一个名为`ScriptGroup`的类,它是一个用于管理GenshinImpact脚本配置组的C#类。它包含索引、名称、配置和项目列表,支持将配置组序列化为JSON格式,并可以从JSON字符串反序列化配置组。此外,它还提供了添加项目到配置组的方法,并确保每个项目都与配置组相关联。总结:该代码的功能是管理GenshinImpact脚本配置组,支持序列化和反序列化配置信息,并允许添加项目到配置组中。
│ │ │ ├── ScriptGroupConfig.cs:这段C#代码定义了一个名为`ScriptGroupConfig`的类,它继承自`ObservableObject`,这表明它使用了CommunityToolkit的MVVM(Model-View-ViewModel)模式,使得其属性可以轻松地通知视图层的变化。该类包含一个名为`_pathingConfig`的私有属性,它是一个`PathingPartyConfig`类型的实例。`PathingPartyConfig`类没有被直接展示,但根据上下文推测,它可能是一个配置类,用于存储与路径规划或玩家团体相关的配置信息。总结这句话概括这份代码的功能是:定义了一个用于存储和通知视图层关于路径规划配置信息的MVVM模式类。
│ │ │ └── ScriptGroupProject.cs:这段代码的功能是定义了一个名为`ScriptGroupProject`的类,用于管理GenshinImpact辅助工具中的脚本项目,包括脚本的类型、状态、执行周期等,并提供执行脚本的方法。
│ │ ├── Project/
│ │ │ ├── Author.cs:这段C#代码定义了一个名为`Author`的类,该类包含两个属性:`Name`和`Link`。`Name`属性用于存储作者的姓名,而`Link`属性用于存储作者的链接(可能是个人网站或社交媒体链接)。每个属性都有一个默认值,`Name`默认为空字符串`string.Empty`,`Link`也默认为空字符串。总结:这段代码的功能是定义一个用于存储作者姓名和链接的类。
│ │ │ ├── Manifest.cs:这段代码定义了一个名为`Manifest`的类,用于表示BetterGenshinImpact脚本项目的配置信息,包括版本、名称、作者、主脚本文件等,并提供了解析JSON字符串、验证配置文件和加载设置项的方法。总结:该代码实现了BetterGenshinImpact脚本项目的配置文件解析和验证功能。
│ │ │ └── ScriptProject.cs:这段代码的功能是创建一个用于加载和执行GenshinImpact辅助脚本的项目类,它负责解析脚本配置文件、构建脚本引擎、加载脚本代码并在一个异步上下文中执行它。
│ │ ├── ScriptRepoUpdater.cs:这段C#代码是一个名为`ScriptRepoUpdater`的类,它负责更新和导入GenshinImpact的脚本仓库。具体功能包括自动检查更新周期,下载并解压脚本仓库,从剪切板导入脚本,以及通过WebView查看本地脚本仓库。总结来说,这份代码的功能是管理GenshinImpact脚本的更新和导入。
│ │ ├── Utils/
│ │ │ └── ScriptUtils.cs:这段代码定义了一个名为`ScriptUtils`的类,其中包含一个静态方法`NormalizePath`。该方法接受两个字符串参数:`root`和`path`。它的功能是将`path`相对于`root`路径进行规范化,并验证该路径是否在`root`路径的范围内。如果`path`超出了`root`的范围,则会抛出一个`ArgumentException`。总结:该代码的功能是规范化并验证路径,确保路径不会超出指定的根目录。
│ │ └── WebView/
│ │ │ └── RepoWebBridge.cs:这段代码定义了一个名为`RepoWebBridge`的类,它是一个用于WebView的桥接类,允许从WebView调用C#方法。该类提供了两个方法:`GetRepoJson`用于获取仓库的JSON数据,`ImportUri`用于从指定的URL导入脚本。总结来说,这份代码的功能是提供一个与WebView交互的桥梁,用于更新和导入GenshinImpact脚本仓库信息。
│ └── Simulator/
│ │ ├── Extensions/
│ │ │ ├── Enums.cs:这段代码定义了两个枚举类型,`KeyType`和`GIActions`。`KeyType`枚举定义了按键的不同状态,如按下、释放和长按等。`GIActions`枚举定义了一系列与游戏《原神》相关的动作,包括移动、攻击、交互、界面操作等。这些枚举类型可能用于构建一个自动化脚本或模拟器,用于在游戏中执行特定的动作序列。总结:这段代码的功能是定义一组枚举,用于在《原神》游戏中模拟和自动化各种用户操作。
│ │ │ ├── InputSimulatorExtension.cs:这段代码的功能是扩展`InputSimulator`类,提供模拟玩家在游戏中进行按键操作的方法,包括按键按下、释放、保持和点击等,以实现自动化游戏操作。
│ │ │ ├── PostMessageSimulatorExtension.cs:这段代码的功能是扩展了`PostMessageSimulator`类,提供了模拟玩家在游戏《原神》中各种操作的方法,包括按键和鼠标点击,以及这些操作的背景执行版本。总结来说,这份代码的功能是“为《原神》游戏中的自动化操作提供扩展和背景执行支持”。
│ │ │ └── SimulateKeyHelper.cs:这段代码的功能是提供一个扩展方法`ToActionKey`,它可以将游戏中的动作枚举`GIActions`转换为对应的键盘绑定键码`KeyId`。代码通过查找配置文件中的键绑定设置,将每个动作映射到相应的键盘按键上。总结来说,这份代码实现了游戏动作与键盘按键的映射功能。
│ │ ├── MouseEventSimulator.cs:这段代码的功能是模拟鼠标事件,包括移动鼠标、点击和双击,用于在游戏《原神》中自动执行鼠标操作。
│ │ ├── PostMessageSimulator.cs:这段代码的功能是创建一个用于模拟用户输入(如鼠标点击和键盘按键)的类,以便在Windows应用程序中执行自动化操作。
│ │ └── Simulation.cs:这段代码的功能是创建一个用于模拟输入的类,它能够模拟鼠标和键盘操作,并能够释放所有被按下的键盘按键。概括总结:该代码实现了一个模拟输入的类,用于模拟鼠标和键盘操作并释放所有按键。
├── GameTask/
│ ├── AutoCook/
│ │ ├── AutoCookTrigger.cs:这段代码的功能是自动检测游戏中的烹饪界面,并在检测到烹饪完成时自动点击结束烹饪的按钮。
│ │ └── AutoPickConfig.cs:这段C#代码定义了一个名为`AutoCookConfig`的类,它继承自`ObservableObject`,这表明它使用了CommunityToolkit库中的MVVM(Model-View-ViewModel)模式,以便于数据绑定。该类包含一个名为`_enabled`的私有布尔属性,用于表示自动烹饪功能是否启用,并且这个属性通过`ObservableProperty`属性装饰器暴露给视图模型,以便于观察者可以订阅其变化。总结:这份代码的功能是定义了一个用于控制自动烹饪功能是否启用的配置类。
│ ├── AutoDomain/
│ │ ├── AutoDomainConfig.cs:这段代码定义了一个名为`AutoDomainConfig`的C#类,它使用CommunityToolkit的MVVM(Model-View-ViewModel)库来创建一个可观察的对象。这个类包含了多个配置属性,用于配置一个自动化的游戏任务,比如在《原神》游戏中自动寻找石化古树、自动吃药、设置队伍名称和副本名称,以及自动分解圣遗物等。总结:这份代码的功能是配置一个自动化游戏任务,用于在《原神》游戏中自动执行特定任务。
│ │ ├── AutoDomainParam.cs:这段C#代码定义了一个名为`AutoDomainParam`的类,它继承自`BaseTaskParam`类。这个类用于配置自动刷取游戏《原神》中的领域任务的参数。以下是代码的详细功能:-`DomainRoundNum`:表示要刷取领域的轮数,默认为9999,如果设置为0则使用默认值。-`CombatStrategyPath`:表示战斗策略文件的路径。-`PartyName`:表示刷副本时使用的队伍名称,默认为空字符串。-`DomainName`:表示需要刷取的副本名称,默认为空字符串。-`AutoArtifactSalvage`:表示是否在任务结束后自动分解圣遗物,默认为`false`。-`MaxArtifactStar`:表示分解圣遗物的最大星级,默认为4。-构造函数`AutoDomainParam`接受领域轮数和战斗策略路径作为参数,并设置了默认值。-`SetDefault`方法用于从配置中获取默认值并设置到相应的属性中。总结:这份代码的功能是定义一个用于配置《原神》游戏自动领域任务的参数模型。
│ │ └── AutoDomainTask.cs:这段代码是一个用于自动完成游戏《原神》中秘境任务的C#程序。它通过模拟用户操作,自动进行角色切换、战斗、寻找目标、领取奖励等操作,以实现秘境任务的自动化完成。
│ ├── AutoFight/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ ├── AutoFightAssets.cs:这段代码定义了一个名为`AutoFightAssets`的类,它是一个用于自动战斗的辅助类,用于识别游戏中的各种元素和按钮的位置,以便自动执行游戏任务。
│ │ ├── AutoFightConfig.cs:这段代码是一个C#类,用于配置自动战斗的行为,包括战斗策略、队伍角色、战斗结束检测、战斗结束后拾取掉落物品的设置等。总结:该代码的功能是配置一个自动战斗系统,以自动化执行游戏中的战斗和拾取掉落物品。
│ │ ├── AutoFightContext.cs:这段C#代码定义了一个名为`AutoFightContext`的类,它继承自`Singleton<AutoFightContext>`,这意味着它是一个单例类,确保全局只有一个实例。这个类用于管理自动战斗的上下文。代码中包含以下内容:1.引用了几个命名空间,这些命名空间可能包含与模拟、游戏任务、资产和模型相关的类。2.类的注释说明了这是一个自动战斗上下文,并建议在启动BetterGI(可能是一个游戏或工具的名称)之后再进行初始化。3.构造函数是私有的,并且初始化了一个名为`Simulator`的字段,该字段是一个`PostMessageSimulator`类型的实例,用于模拟键鼠操作。4.`FightAssets`属性返回一个`AutoFightAssets`实例,这可能是用于自动战斗的资源或配置。5.`Simulator`字段被声明为`readonly`,这意味着它的值在初始化后不能被改变。总结这句话概括这份代码的功能是:这段代码定义了一个用于自动战斗的上下文类,它管理着自动战斗所需的资源和模拟操作。
│ │ ├── AutoFightParam.cs:这段代码定义了一个名为`AutoFightParam`的C#类,该类继承自`BaseTaskParam`类。这个类用于配置自动战斗的参数,包括战斗策略路径、超时时间、是否启用战斗完成检测、是否在战斗后拾取掉落物等。它还包含了一个嵌套的`FightFinishDetectConfig`类,用于配置战斗完成检测的相关参数,如战斗结束进度条颜色、颜色容差、快速检测启用状态等。总结这句话概括这份代码的功能是:定义了自动战斗的参数配置类,用于控制游戏中的自动战斗行为。
│ │ ├── AutoFightTask.cs:这段C#代码实现了一个名为“自动战斗”的任务,它使用YOLO模型进行图像识别,以自动执行游戏《原神》中的战斗操作,包括角色切换、技能释放和战斗结束检测。
│ │ ├── Config/
│ │ │ ├── CombatAvatar.cs:这段代码定义了一个名为`CombatAvatar`的C#类,用于表示《原神》游戏中的一位战斗角色。该类包含了角色的唯一标识、中文名、英文名、武器类型、元素战技和元素爆发的冷却时间,以及角色的别名列表。总结:这份代码的功能是定义一个用于存储《原神》游戏中角色战斗配置信息的类。
│ │ │ └── DefaultAutoFightConfig.cs:这段代码的功能是从一个JSON配置文件中加载角色信息,并提供一个方法将角色的别名转换为标准名称。总结来说,这份代码实现了从配置文件中读取角色数据并支持通过别名查找角色标准名称的功能。
│ │ ├── Model/
│ │ │ ├── Avatar.cs:这段C#代码定义了一个名为`Avatar`的类,用于模拟《原神》游戏中角色的自动战斗行为。该类包含了角色的基本信息、状态、技能使用、移动和交互等操作,以及与游戏界面交互的方法。总结来说,这份代码的功能是模拟《原神》游戏中角色的自动战斗。
│ │ │ ├── AvatarMacro.cs:这段代码定义了一个名为`AvatarMacro`的类,它似乎用于存储和操作与游戏《原神》自动战斗相关的宏脚本内容。该类具有五个属性,分别用于存储五个不同的脚本内容,并提供方法来获取指定索引的脚本内容或根据配置获取优先级的脚本内容。此外,它还包含一个`LoadCommands`方法,该方法从脚本内容中解析出战斗命令并返回一个命令列表。总结:该代码的功能是存储和解析《原神》自动战斗宏脚本内容。
│ │ │ └── CombatScenes.cs:这段C#代码的功能是用于识别和初始化《原神》游戏中战斗场景中的队伍角色,并支持通过YOLO分类器和OCR技术进行角色识别,同时提供队伍角色的选择和切换功能。
│ │ ├── OneKeyFightTask.cs:这段C#代码实现了一个名为“一键战斗宏”的功能,它允许用户通过按键来触发宏命令,自动执行游戏中的战斗操作。
│ │ └── Script/
│ │ │ ├── CombatCommand.cs:这段代码定义了一个名为`CombatCommand`的类,用于解析和执行来自GenshinImpact游戏中的自动战斗脚本命令。它能够识别命令名称、方法以及参数,并根据这些信息执行相应的游戏操作,如移动、攻击、使用技能等。
│ │ │ ├── CombatScript.cs:这段代码定义了一个名为`CombatScript`的类,它用于管理游戏《原神》中的自动战斗脚本。该类包含以下属性:-`Name`:战斗脚本的名称。-`Path`:战斗脚本所在的路径。-`AvatarNames`:一个HashSet,包含与战斗脚本相关的角色名称。-`CombatCommands`:一个List,包含战斗指令。-`MatchCount`:一个int,用于记录与队伍角色匹配到的数量。总结:这份代码的功能是定义一个用于管理《原神》游戏自动战斗脚本配置的类。
│ │ │ ├── CombatScriptBag.cs:这段代码定义了一个名为`CombatScriptBag`的类,该类用于管理战斗脚本并能够根据传入的角色列表找到合适的战斗脚本。具体功能是:根据角色名称匹配战斗脚本,如果没有完全匹配则返回匹配度最高的战斗脚本。总结:管理战斗脚本并基于角色匹配找到合适的战斗脚本。
│ │ │ ├── CombatScriptParser.cs:这段代码的功能是解析和读取GenshinImpact游戏中的战斗脚本,将脚本文件转换为可执行的指令列表,并存储相关信息。
│ │ │ └── Method.cs:这段代码定义了一个名为`Method`的类,用于表示游戏中的各种操作,如技能、攻击、移动等,并提供了一个方法来通过操作代码获取对应的`Method`实例。它还包含了一个静态属性`Values`,用于存储所有可能的`Method`实例,以及一个静态方法`GetEnumByCode`,用于根据操作代码查找对应的`Method`实例。总结:这份代码的功能是定义并管理游戏中的各种操作方法,并提供了一个查找方法实例的机制。
│ ├── AutoFishing/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ │ ├── bait/
│ │ │ └── AutoFishingAssets.cs:这段C#代码定义了一个名为`AutoFishingAssets`的类,该类继承自`BaseAssets<AutoFishingAssets>`。这个类用于在游戏《原神》中自动化钓鱼任务。它包含多个`RecognitionObject`实例,每个实例代表一个游戏界面上的按钮,如空间键、诱饵键、等待咬钩键、提竿键和退出钓鱼键。这些按钮通过模板匹配的方式进行识别,并且定义了它们在屏幕上的感兴趣区域(ROI)和阈值。代码的功能是初始化和配置用于自动化钓鱼任务所需的识别资源。总结:该代码的功能是初始化用于《原神》游戏自动化钓鱼任务的识别资源。
│ │ ├── AutoFishingConfig.cs:这段代码定义了一个名为`AutoFishingConfig`的C#类,它用于配置自动钓鱼的功能。该类继承自`ObservableObject`,这意味着它支持数据绑定,并且包含几个属性来控制自动钓鱼的行为,如是否启用自动钓鱼、是否启用自动抛竿以及自动抛竿的超时时间等。总结:这份代码的功能是配置自动钓鱼的参数。
│ │ ├── AutoFishingImageRecognition.cs:这段代码的功能是使用OpenCvSharp库进行图像识别,以自动识别游戏《原神》中的钓鱼条和“鱼儿上钩拉!”文字区域,从而实现自动钓鱼的功能。
│ │ ├── AutoFishingTrigger.cs:这段C#代码实现了一个名为“自动钓鱼”的功能,它通过图像识别和模拟输入,自动控制游戏中的钓鱼过程,包括抛竿、等待上钩、提竿等操作。
│ │ ├── Model/
│ │ │ ├── BaitType.cs:这段代码定义了一个名为`BaitType`的类,用于表示钓鱼的不同诱饵类型。它包含了多个静态只读实例,每个实例都有英文名称和中文名称。此外,它还提供了一个`Values`属性,用于获取所有可能的诱饵类型,以及一个`FromName`静态方法,用于通过名称查找特定的诱饵类型。总结:这段代码的功能是定义并管理一个钓鱼游戏中的诱饵类型枚举。
│ │ │ ├── BigFishType.cs:这段代码定义了一个名为`BigFishType`的枚举类,用于表示原神游戏中的不同鱼类及其对应的诱饵类型和中文名称。该枚举类包含了多种鱼类,并提供了一个静态属性`Values`来获取所有鱼类的集合,以及静态方法`FromName`和`GetIndex`来根据鱼类的名称获取对应的枚举实例和索引。总结:这份代码的功能是定义一个用于原神游戏中鱼类分类的枚举类。
│ │ │ ├── FishType.cs:这段代码定义了一个名为`FishType`的枚举类,用于表示《原神》游戏中的鱼类类型,包括鱼名、诱饵类型和中文翻译。它还提供了一个静态方法`FromName`,用于通过鱼名查找对应的`FishType`实例。总结:该代码实现了《原神》游戏中鱼类类型的枚举定义和查找功能。
│ │ │ ├── Fishpond.cs:这段代码定义了一个名为`Fishpond`的C#类,用于处理和识别游戏《原神》中的鱼塘信息。该类可以从检测结果中提取鱼塘位置、抛竿落点位置和鱼的信息,并提供方法来过滤鱼、计算鱼塘位置以及确定最匹配的鱼饵名称。总结来说,这份代码的功能是模拟《原神》游戏中的自动钓鱼任务。
│ │ │ └── OneFish.cs:这段代码定义了一个名为`OneFish`的C#类,它用于表示游戏中捕获到的单个鱼的信息。这个类包含以下属性:-`FishType`:表示鱼的类型,它是一个枚举类型`BigFishType`,通过名称来获取对应的鱼类型。-`Rect`:表示鱼在屏幕上的位置,它是一个`Rect`结构,通常用于描述一个矩形区域。-`Confidence`:表示检测到鱼的置信度,通常是一个介于0和1之间的浮点数。构造函数`OneFish`接受三个参数:鱼的名称、鱼在屏幕上的矩形区域和置信度,并使用这些参数来初始化类的属性。总结这句话概括这份代码的功能是:定义了一个用于表示游戏中捕获到的单个鱼信息的模型类。
│ │ ├── RodInput.cs:这段代码定义了一个名为`RodInput`的记录(record)类型,它用于存储与钓鱼相关的坐标信息和鱼标签。具体来说,它包含了钓鱼竿和鱼在游戏中的坐标范围,以及一个表示鱼种类的标签。总结:这份代码的功能是定义一个用于存储钓鱼任务中坐标和鱼标签的数据结构。
│ │ └── RodNet.cs:这段C#代码是一个用于自动钓鱼的辅助工具,它通过计算鱼的位置和钓竿的状态来确定最佳的钓鱼动作。具体来说,它使用牛顿-拉夫森迭代法来求解钓鱼过程中的数学模型,并最终根据计算结果给出钓鱼动作的建议。
│ ├── AutoGeniusInvokation/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ │ ├── dice/
│ │ │ │ └── other/
│ │ │ ├── AutoGeniusInvokationAssets.cs:这段代码的功能是定义了一个用于自动召唤师召唤游戏(可能是一款名为《原神》的游戏)的辅助工具类,该类负责加载和存储游戏中的各种识别对象和资源,以便于进行图像识别和游戏状态检测。
│ │ ├── AutoGeniusInvokationConfig.cs:这段代码定义了一个C#类`AutoGeniusInvokationConfig`,它用于配置自动召唤(可能是指游戏中的召唤角色)的相关参数。该类继承自`ObservableObject`,这意味着它支持数据绑定,并且包含多个私有字段,这些字段通过属性暴露出来,以便在MVVM(Model-View-ViewModel)架构中可以轻松地与视图同步。以下是代码中定义的一些关键配置项:-`_strategyName`:策略名称,例如"1.莫娜砂糖琴"。-`_sleepDelay`:延迟时间,可能用于控制代码执行的速度。-`DefaultCharacterCardRects`:一个包含三个`Rect`对象的列表,每个`Rect`对象定义了角色卡牌在屏幕上的位置和大小。-`MyDiceCountRect`:一个`Rect`对象,定义了识别骰子数量的文字区域。-`ActiveCharacterCardSpace`:出战角色卡牌区域向上或向下的距离差。-`CharacterCardExtendHpRect`:一个`Rect`对象,定义了HP区域在角色卡牌区域中的相对位置。总结这句话概括这份代码的功能是:定义了自动召唤游戏角色配置的参数和数据结构。
│ │ ├── AutoGeniusInvokationTask.cs:这段代码定义了一个名为`AutoGeniusInvokationTask`的类,它继承自`ISoloTask`接口,用于执行一个名为“自动七圣召唤”的任务。该任务通过解析传入的策略内容来运行一个游戏策略,并在执行过程中处理异常。总结:该代码的功能是自动执行游戏中的七圣召唤任务。
│ │ ├── Config/
│ │ │ ├── CharacterCard.cs:这段代码的功能是定义和解析《原神》游戏中的角色卡牌配置,包括角色的属性、技能和消耗的资源。
│ │ │ └── DefaultTcgConfig.cs:这段代码的功能是从一个名为`tcg_character_card.json`的JSON文件中读取角色卡片配置数据,并将其存储在静态字段中,以便在应用程序的其他部分可以访问这些数据。具体来说,它将JSON文件中的数据反序列化为`CharacterCard`对象列表,并创建一个以角色名称为键的字典,以便快速查找特定的角色卡片。总结来说,这份代码的功能是加载和缓存GenshinImpact游戏中的角色卡片配置。
│ │ ├── GeniusInvokationControl.cs:这份C#代码的功能是用于自动操控游戏《原神》中的自动召唤任务,通过图像识别和模拟用户操作来执行游戏内的任务,如选择角色、使用技能、重投骰子等。
│ │ ├── GeniusInvokationTaskParam.cs:这段C#代码定义了一个名为`GeniusInvokationTaskParam`的类,它继承自`BaseTaskParam`类。这个类有一个构造函数,它接受一个名为`strategyContent`的字符串参数,并将其赋值给类的`StrategyContent`属性。`StrategyContent`属性被标记为`get;set;`,这意味着它既可以通过getter方法访问,也可以通过setter方法修改。总结来说,这份代码的功能是创建一个用于存储和访问召唤天才任务策略内容的参数类。
│ │ ├── Model/
│ │ │ ├── ActionCommand.cs:这段代码定义了一个名为`ActionCommand`的C#类,用于表示游戏中角色的动作命令。它包含角色的信息、动作类型、目标编号,并提供了一系列方法来获取特定元素骰子的使用次数、所有骰子的使用次数、使用骰子的元素类型、切换角色以及使用技能。总结:该代码的功能是定义一个游戏中的动作命令模型,用于处理角色使用技能和切换角色的逻辑。
│ │ │ ├── ActionEnum.cs:这段代码定义了一个名为`ActionEnum`的枚举,用于表示游戏中的不同动作类型,如“出战”、“切换”和“使用技能”。同时,它还包含了一个名为`ActionEnumExtension`的静态类,该类提供了两个扩展方法:`ChineseToActionEnum`和`ToChinese`。`ChineseToActionEnum`方法将中文动作类型字符串转换为枚举值,而`ToChinese`方法则将枚举值转换回对应的中文动作类型字符串。这两个方法都使用了模式匹配(switch表达式)来实现转换。总结:这份代码的功能是提供了一种将中文动作类型字符串与枚举值之间进行转换的方法。
│ │ │ ├── Character.cs:这段代码定义了一个C#类`Character`,用于表示《原神》游戏中的一名角色,包括角色的索引、名称、元素类型、技能、是否被打败、充能点、血量、负面状态、区域等信息。该类还提供了方法来选择角色、切换角色、在角色被打败时重新出战以及使用技能。总结来说,这份代码的功能是模拟《原神》游戏中角色的操作。
│ │ │ ├── CharacterStatusEnum.cs:这段代码定义了一个名为`BetterGenshinImpact`的命名空间,在这个命名空间内,有一个名为`GameTask.AutoGeniusInvokation.Model`的子命名空间。在`Model`子命名空间中,定义了一个名为`CharacterStatusEnum`的枚举类型,该枚举包含两个成员:`Frozen`和`Dizziness`。这些成员可能代表游戏中角色的不同状态。总结这句话概括这份代码的功能是:定义了游戏《原神》中角色可能的状态枚举。
│ │ │ ├── Duel.cs:这段代码的功能是模拟玩家在游戏《原神》中的自动召唤(AutoGeniusInvokation)过程,通过识别屏幕上的元素和角色信息,自动执行游戏中的行动指令,以实现自动化的游戏体验。
│ │ │ ├── ElementalType.cs:这段代码定义了一个名为`ElementalType`的枚举,用于表示原神游戏中的元素类型,并提供了一个静态类`ElementalTypeExtension`,其中包含将字符串转换为枚举值、将枚举值转换为中文表示以及将枚举值转换为小写字符串的方法。总结:这份代码的功能是提供原神游戏元素类型的枚举定义和字符串转换扩展方法。
│ │ │ ├── RollPhaseDice.cs:这段代码定义了一个名为`RollPhaseDice`的C#类,它似乎用于表示游戏中的投掷阶段骰子。该类包含一个元素类型`Type`和一个中心点位置`CenterPosition`,以及一个构造函数用于初始化这些属性。它还重写了`ToString`方法以便于打印对象信息,并提供了一个`Click`方法,该方法可能用于模拟鼠标点击操作,但注释中提到了`MouseUtils.Click`,这可能意味着这个方法在实际的游戏中是通过调用一个名为`MouseUtils`的工具类的`Click`方法来实现的。总结这句话概括这份代码的功能是:定义了一个表示游戏投掷阶段骰子的模型类。
│ │ │ ├── RoundStrategy.cs:这段代码定义了一个名为`RoundStrategy`的类,它似乎用于管理游戏《原神》中的回合策略。该类包含两个列表属性:`RawCommandList`和`ActionCommands`,分别用于存储原始命令列表和动作命令列表。`MaybeNeedElement`方法用于根据当前回合的动作命令列表和角色信息,推测可能需要的元素类型。总结:该代码的功能是用于推测在《原神》游戏中进行角色召唤时可能需要的元素类型。
│ │ │ └── Skill.cs:这段C#代码定义了一个名为`Skill`的类,用于表示游戏中技能的相关信息。该类包含以下属性:-`Index`:技能的索引,用于标识技能的位置。-`Name`:技能的中文名称。-`Type`:技能所属的元素类型。-`SpecificElementCost`:消耗指定元素骰子的数量。-`AnyElementCost`:消耗杂色骰子的数量。-`AllCost`:消耗的总骰子数量,是`SpecificElementCost`和`AnyElementCost`的和。总结这句话概括这份代码的功能是:定义了一个用于表示游戏技能信息的模型类。
│ │ └── ScriptParser.cs:这段代码的功能是解析GenshinImpact游戏中的自动召唤脚本,用于自动执行游戏中的角色召唤和技能释放策略。
│ ├── AutoMusicGame/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ └── AutoMusicAssets.cs:这段代码定义了一个名为`AutoMusicAssets`的类,它继承自`BaseAssets<AutoMusicAssets>`。该类用于存储和初始化在《原神》游戏中自动音乐模式中使用的识别对象,这些对象用于识别游戏界面上的特定元素,如暂停按钮、专辑图标、音乐完成标志和音乐难度等级。总结:该代码的功能是初始化《原神》自动音乐模式中用于界面元素识别的对象。
│ │ ├── AutoAlbumTask.cs:这段代码的功能是自动化完成GenshinImpact游戏中的音乐专辑任务,包括自动选择难度、开始演奏、完成乐曲并切换到下一首,直到整个专辑的所有乐曲都完成演奏。
│ │ ├── AutoMusicGameConfig.cs:这段代码定义了一个名为`AutoMusicGameConfig`的C#类,它继承自`ObservableObject`,这意味着它支持数据绑定。该类包含两个属性:`_mustCanorusLevel`和`_musicLevel`,分别用于表示是否必须达到大音天籁级别以及乐曲的级别。这个类似乎用于配置一个名为“BetterGenshinImpact”的游戏中的自动音乐游戏功能。总结:这份代码的功能是定义一个用于配置自动音乐游戏设置的类。
│ │ ├── AutoMusicGameParam.cs:根据提供的C#代码片段,我们可以推测以下内容:1.这段代码使用了`BetterGenshinImpact`命名空间,这表明代码可能与一个名为“BetterGenshinImpact”的项目或库有关,该项目或库可能是为《原神》游戏(GenshinImpact)提供额外功能的。2.`GameTask.Model`是另一个命名空间,这表明代码可能涉及到游戏任务模型的相关部分。3.`System.Threading`命名空间的使用表明代码可能涉及到多线程编程,可能用于处理并发任务。4.`AutoMusicGameParam`是一个公共类,继承自`BaseTaskParam`,这表明`AutoMusicGameParam`类可能是用于定义自动音乐游戏任务参数的,而`BaseTaskParam`可能是基类,包含了任务参数的通用属性或方法。5.类的命名空间`BetterGenshinImpact.GameTask.AutoMusicGame`进一步确认了类与自动音乐游戏任务相关的功能。总结这句话概括这份代码的功能是:这段代码定义了一个用于自动音乐游戏任务的参数类,继承自通用任务参数基类,可能用于配置和管理游戏中的自动音乐游戏任务。
│ │ └── AutoMusicGameTask.cs:这段C#代码的功能是创建一个名为“自动音游”的任务,该任务能够自动在游戏中演奏音游,通过检测屏幕上的颜色变化来控制按键,从而实现自动演奏。
│ ├── AutoPathing/
│ │ ├── CameraRotateTask.cs:这段代码的功能是使用BetterGenshinImpact游戏辅助工具,通过模拟鼠标移动来控制游戏中的摄像机旋转到指定的目标角度,并在达到目标角度或尝试次数超过限制时停止旋转。
│ │ ├── Handler/
│ │ │ ├── ActionFactory.cs:这段代码的功能是创建一个用于处理游戏动作的工厂类,它能够根据不同的动作类型动态地生成相应的动作处理器实例。
│ │ │ ├── AutoFightHandler.cs:这段C#代码是一个名为`AutoFightHandler`的类,它实现了`IActionHandler`接口,并提供了自动战斗的功能。该类通过读取配置文件和地图追踪配置来控制游戏中的自动战斗行为。总结:该代码的功能是提供一个自动战斗的处理器,用于在游戏中自动执行战斗任务。
│ │ │ ├── CombatScriptHandler.cs:这段C#代码定义了一个名为`CombatScriptHandler`的类,它实现了`IActionHandler`接口。该类包含一个异步方法`RunAsync`,用于执行一个战斗策略脚本。该方法接收一个`CancellationToken`、一个可选的`WaypointForTrack`对象和一个可选的配置对象。如果`WaypointForTrack`对象包含一个有效的战斗策略,该方法将获取战斗场景信息,并尝试执行策略中的每个命令。如果发生异常,它将记录错误信息。如果`WaypointForTrack`对象为空,它将记录一个错误日志。总结:该代码的功能是执行一个为GenshinImpact游戏中的战斗场景设计的策略脚本。
│ │ │ ├── ElementalCollectHandler.cs:这段代码的功能是自动化处理《原神》游戏中的元素采集任务,通过识别和切换游戏中的角色,使用他们的元素技能或普通攻击来收集对应的元素。
│ │ │ ├── ElementalSkillHandler.cs:这段代码定义了一个名为`ElementalSkillHandler`的类,它实现了`IActionHandler`接口。该类用于在游戏《原神》中触发元素战技。具体来说,它通过调用`Simulation.SendInput.SimulateAction`方法发送一个模拟动作,该动作对应于游戏中的元素战技,并在执行后等待1000毫秒。总结:该代码的功能是模拟在游戏《原神》中释放元素战技。
│ │ │ ├── IActionHandler.cs:这段C#代码定义了一个名为`IActionHandler`的接口,该接口包含一个异步方法`RunAsync`。这个方法接受一个`CancellationToken`用于取消操作,一个可选的`WaypointForTrack`对象用于路径跟踪,以及一个可选的`config`对象用于配置信息。这个接口似乎是为了在游戏自动化任务中处理动作而设计的。总结:这份代码的功能是定义一个用于处理游戏自动化任务中动作的接口。
│ │ │ ├── MiningHandler.cs:这段代码是一个C#类,名为`MiningHandler`,它实现了`IActionHandler`接口。该类的主要功能是处理游戏中的挖矿和拾取任务。具体来说,它通过执行预定义的战斗脚本在游戏中进行挖矿,并在挖矿后启动一个任务来拾取矿藏。总结:该代码的功能是自动化处理游戏《原神》中的挖矿和拾取任务。
│ │ │ ├── NahidaCollectHandler.cs:这段代码的功能是使用游戏模拟器控制纳西妲角色在游戏中长按E技能进行360°球形无死角扫描,以收集资源,并且只在`type=target`的情况下有效。
│ │ │ ├── NormalAttackHandler.cs:这段C#代码定义了一个名为`NormalAttackHandler`的类,它实现了`IActionHandler`接口。该类包含一个异步方法`RunAsync`,用于触发游戏中的普通攻击。具体来说,它通过调用`Simulation.SendInput.SimulateAction`方法发送一个模拟普通攻击的动作,并在执行后等待1000毫秒。总结:该代码的功能是模拟游戏中的普通攻击动作。
│ │ │ ├── PickAroundHandler.cs:这段代码的功能是:实现一个自动拾取系统,用于在《原神》游戏中自动拾取任务点附近的资源。
│ │ │ └── UpDownGrabLeaf.cs:这段代码是一个C#类,名为`UpDownGrabLeaf`,实现了`IActionHandler`接口。它定义了一个异步方法`RunAsync`,用于在游戏中执行一个名为“须弥四叶印”的操作。该操作通过模拟鼠标移动和点击来控制游戏视角的上下晃动,以触发游戏中的特定交互,例如抓取物品。代码中使用了`BetterGenshinImpact`库中的功能来发送输入和延迟,以及使用`Debug.WriteLine`来输出调试信息。总结:该代码的功能是模拟游戏中的视角上下晃动,以触发特定游戏交互。
│ │ ├── Model/
│ │ │ ├── Enum/
│ │ │ │ ├── ActionEnum.cs:这段代码定义了一个名为`ActionEnum`的枚举,用于表示游戏中的不同动作类型,如“出战”、“切换”和“使用技能”。同时,它还包含了一个名为`ActionEnumExtension`的静态类,该类提供了两个扩展方法:`ChineseToActionEnum`和`ToChinese`。`ChineseToActionEnum`方法将中文动作类型字符串转换为枚举值,而`ToChinese`方法则将枚举值转换回对应的中文动作类型字符串。这两个方法都使用了模式匹配(switch表达式)来实现转换。总结:这份代码的功能是提供了一种将中文动作类型字符串与枚举值之间进行转换的方法。
│ │ │ │ ├── MoveModeEnum.cs:这段代码定义了一个名为`MoveModeEnum`的枚举类,用于表示游戏中的移动模式,包括步行、奔跑、持续冲刺、攀爬、飞行、跳跃和游泳。它提供了枚举值的代码和描述,以及一个静态方法来通过代码获取对应的描述信息。总结来说,这份代码的功能是定义并管理游戏中的移动模式枚举。
│ │ │ │ ├── PathingTaskType.cs:这段C#代码定义了一个名为`PathingTaskType`的枚举类,用于表示路径规划任务类型,包括采集、挖矿和锄地。它提供了获取所有枚举值的方法以及根据代码获取对应消息的方法。总结:该代码定义了一个枚举类,用于表示和获取路径规划任务类型及其对应的描述信息。
│ │ │ │ └── WaypointType.cs:这段代码定义了一个名为`WaypointType`的枚举类,用于表示在游戏《原神》中自动路径规划模型中的不同类型的路径点。它包含了四个静态只读字段,分别代表路径点、目标点、传送点和方位点,并且提供了获取所有枚举值的`Values`属性。此外,它还包含了一个`GetMsgByCode`静态方法,用于根据路径点的代码获取对应的描述信息。总结:这份代码的功能是定义并管理《原神》游戏中自动路径规划模型中不同类型路径点的枚举。
│ │ │ ├── PathingTask.cs:这段代码定义了一个名为`PathingTask`的C#类,用于处理与地图追踪任务相关的数据。它包含任务信息、位置点列表、文件名和文件路径,并提供方法来从文件路径或JSON字符串构建任务对象,以及将任务对象保存到文件中。此外,它还包含检查任务是否包含特定动作和获取采集物名称的方法。总结:该代码的功能是管理GenshinImpact游戏中的地图追踪任务数据。
│ │ │ ├── PathingTaskConfig.cs:这段C#代码定义了一个名为`PathingTaskConfig`的类,它似乎用于配置路径导航任务。以下是代码的详细分析:1.引入了几个命名空间,包括用于枚举的`Enum`,`System`(用于基础类库),以及`System.Text.Json.Serialization`(用于JSON序列化)。2.`PathingTaskConfig`类被标记为`[Serializable]`,这意味着该类可以被序列化为JSON格式,这通常用于配置文件或网络传输。3.类中没有任何属性或方法,但是有注释说明了一些可能的配置选项:-持续操作:切换某个角色,执行长E或短E技能。-持续疾跑。-边跳边走。根据这些信息,可以推测这段代码的功能是:**概括总结:**这份代码定义了一个用于配置游戏内自动路径导航任务的配置类,允许用户设置角色操作和移动方式。
│ │ │ ├── PathingTaskInfo.cs:这段代码定义了一个名为`PathingTaskInfo`的C#类,用于表示路径规划任务的信息。该类包含任务名称、描述、作者、版本、BetterGI版本、任务类型以及一些与任务参数和配置相关的字段。任务类型通过一个枚举`PathingTaskType`来定义,并且有一个方法`GetMsgByCode`用于获取类型描述。总结:这份代码的功能是定义一个用于存储和表示GenshinImpact游戏中的路径规划任务的类。
│ │ │ ├── Waypoint.cs:这段代码定义了一个名为`Waypoint`的C#类,用于表示游戏中的路径点。它包含坐标(X和Y),以及与路径点相关的类型(Type)、移动模式(MoveMode)和可选的动作(Action)及其参数(ActionParams)。这个类可能用于自动路径导航系统,帮助玩家在游戏中自动移动和执行特定动作。总结:这段代码的功能是定义一个用于游戏自动路径导航的路径点模型。
│ │ │ └── WaypointForTrack.cs:这段代码定义了一个名为`WaypointForTrack`的类,它继承自`Waypoint`类。这个类用于在游戏《原神》中处理路径规划,它包含了原神游戏坐标系和全地图图像坐标系中的位置信息,以及与战斗脚本相关的数据。具体来说,它将原神游戏坐标系中的位置转换为全地图图像坐标系,并能够解析与战斗相关的脚本和日志信息。总结:这份代码的功能是创建一个用于《原神》游戏路径规划的坐标点类,包含坐标转换和战斗脚本解析功能。
│ │ ├── Navigation.cs:这段代码的功能是用于《原神》游戏中自动导航,通过图像识别和地图匹配来获取玩家的当前位置,计算目标方向和距离,并将当前位置发送给其他组件。总结:该代码实现了《原神》游戏中的自动路径导航功能。
│ │ ├── PathExecutor.cs:这段代码的功能是:实现一个自动地图追踪系统,用于在游戏《原神》中自动执行路径点,包括切换队伍、处理异常、自动跳过剧情等操作。
│ │ ├── PathRecorder.cs:这段代码的功能是用于记录和编辑《原神》游戏中的路径点,以便自动导航。
│ │ ├── Suspend/
│ │ │ ├── ISuspendable.cs:这段代码定义了一个名为`ISuspendable`的接口,该接口包含三个成员:一个无参数的方法`Suspend()`用于暂停操作,一个无参数的方法`Resume()`用于恢复操作,以及一个只读属性`IsSuspended`用于获取当前对象是否处于暂停状态。总结:这份代码的功能是定义了一个可暂停和恢复操作的接口。
│ │ │ └── PathExecutorSuspend.cs:这段代码的功能是提供一个暂停和恢复游戏路径执行器(PathExecutor)操作的机制,用于在地图追踪过程中记录和恢复当前路径状态。
│ │ └── TrapEscaper.cs:这段代码的功能是模拟游戏《原神》中的自动路径导航和避障,通过模拟按键操作来控制角色移动和旋转,以绕过障碍物并到达目标位置。
│ ├── AutoPick/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ └── AutoPickAssets.cs:这段代码的功能是创建一个用于自动拾取游戏内物品的辅助工具类,它能够识别和模拟按键操作,以自动执行游戏中的拾取动作。
│ │ ├── AutoPickConfig.cs:这段C#代码定义了一个名为`AutoCookConfig`的类,它继承自`ObservableObject`,这表明它使用了CommunityToolkit库中的MVVM(Model-View-ViewModel)模式,以便于数据绑定。该类包含一个名为`_enabled`的私有布尔属性,用于表示自动烹饪功能是否启用,并且这个属性通过`ObservableProperty`属性装饰器暴露给视图模型,以便于观察者可以订阅其变化。总结:这份代码的功能是定义了一个用于控制自动烹饪功能是否启用的配置类。
│ │ ├── AutoPickTrigger.cs:这段C#代码是一个名为`AutoPickTrigger`的类,它实现了`ITaskTrigger`接口,用于在游戏《原神》中自动拾取物品。代码的主要功能是通过图像识别技术检测游戏界面中的物品信息,并根据预设的白名单和黑名单来决定是否执行拾取操作。
│ │ └── PickOcrEngineEnum.cs:这段代码定义了一个名为`BetterGenshinImpact`的命名空间,并在该命名空间内定义了一个名为`GameTask.AutoPick`的子命名空间。在`AutoPick`子命名空间中,有一个名为`PickOcrEngineEnum`的枚举类型,该枚举包含两个成员:`Paddle`和`Yap`。这段代码的功能是定义了一个枚举,用于表示OCR(光学字符识别)引擎的类型,可能用于游戏《原神》中的自动拾取任务,其中`Paddle`和`Yap`可能是两种不同的OCR引擎实现。总结:这段代码定义了一个用于选择OCR引擎类型的枚举。
│ ├── AutoSkip/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ ├── AutoSkipAssets.cs:这段代码定义了一个C#类`AutoSkipAssets`,它继承自`BaseAssets<AutoSkipAssets>`。该类用于存储和初始化与自动跳过游戏任务相关的识别对象和区域,这些对象和区域将被用于识别游戏界面上的特定元素,以便自动执行跳过操作。总结:该代码的功能是初始化用于自动跳过游戏任务中特定界面的识别对象和区域。
│ │ │ ├── HangoutConfig.cs:这段代码的功能是从一个名为`hangout.json`的配置文件中读取数据,并将其解析为一个包含多个选项的字典,同时将字典的键(选项标题)存储在一个列表中。这个类`HangoutConfig`是一个单例模式,用于确保全局只有一个实例,并且提供了对配置数据的访问。总结来说,这份代码的功能是加载和存储《原神》游戏中挂机任务自动跳过功能的配置选项。
│ │ ├── AutoSkipConfig.cs:这段C#代码定义了一个名为`AutoSkipConfig`的类,它是一个可序列化的ObservableObject,用于配置一个名为“BetterGenshinImpact”的游戏中的自动跳过剧情功能。该类包含多个属性,用于控制自动跳过对话、自动点击选项、自动领取奖励、自动重新派遣、自动邀约等功能,并提供了一些方法来获取选项的点击行为。总结来说,这份代码的功能是配置和启用《原神》游戏中的自动跳过剧情和自动操作功能。
│ │ ├── AutoSkipTrigger.cs:这段C#代码是一个名为`AutoSkipTrigger`的类,它实现了`ITaskTrigger`接口,用于自动跳过游戏《原神》中的剧情,并在剧情中自动选择对话选项。代码的主要功能是自动化游戏中的剧情跳过和对话选择过程。
│ │ ├── AutoTrackTask.cs:这段C#代码是一个用于自动追踪游戏任务中角色的类,它通过OCR识别任务距离,并根据距离决定是否传送至最近的传送点,然后通过模拟鼠标和键盘操作来控制角色追踪任务点。总结来说,这份代码的功能是自动化游戏《原神》中的任务追踪过程。
│ │ ├── ExpeditionTask.cs:这段代码是一个用于自动完成游戏《原神》中“探索派遣”任务的C#程序。它通过OCR技术识别屏幕上的文字,自动点击屏幕上的特定区域来完成派遣任务,并选择特定的角色参与派遣。
│ │ ├── Model/
│ │ │ ├── AutoTrackParam.cs:这段C#代码定义了一个名为`AutoTrackParam`的类,它继承自`BaseTaskParam`类。这个类位于`BetterGenshinImpact.GameTask.AutoSkip.Model`命名空间中。由于代码片段中只包含了类的定义,没有其他实现细节,我们可以推测以下内容:1.`AutoTrackParam`类可能用于存储自动追踪任务的相关参数。2.`BaseTaskParam`类可能是一个基类,包含了任务参数的通用属性或方法。3.`AutoTrackParam`类可能被用于`BetterGenshinImpact`项目中的自动跳过游戏任务的功能。总结这句话概括这份代码的功能是:这段代码定义了一个用于存储自动追踪游戏任务参数的类。
│ │ │ ├── ExpeditionCharacterCard.cs:这段代码定义了一个名为`ExpeditionCharacterCard`的C#类,它似乎用于表示《原神》游戏中探险家的角色卡片信息。以下是代码的详细分析:-`usingOpenCvSharp;`引入了OpenCvSharp命名空间,这是一个用于图像处理和计算机视觉的库,这表明该类可能与图像识别或处理有关。-`usingSystem.Collections.Generic;`引入了System.Collections.Generic命名空间,这允许使用泛型集合,如List。-`namespaceBetterGenshinImpact.GameTask.AutoSkip.Model;`定义了代码所在的命名空间,这表明该代码可能是一个游戏辅助工具的一部分,特别是《原神》游戏的自动跳过任务功能。-`publicclassExpeditionCharacterCard`定义了一个公共类,名为`ExpeditionCharacterCard`。-在类中定义了以下属性:-`publicstring?Name{get;set;}`:一个可选的字符串属性,表示角色的名字。-`publicboolIdle{get;set;}=true;`:一个布尔属性,表示角色是否处于空闲状态,默认值为`true`。-`publicstring?Addition{get;set;}`:一个可选的字符串属性,可能表示角色的附加信息或特殊属性。-`publicList<Rect>Rects{get;set;}=[];`:一个`Rect`类型的列表,用于存储与角色卡片相关的矩形区域,这可能是用于图像识别或定位的。-注释掉的部分是一个构造函数,它接受名字、附加信息和空闲状态作为参数,并初始化类的属性。总结这句话概括总结这份代码的功能是:定义了一个用于存储《原神》游戏中探险家角色卡片信息的模型类。
│ │ │ ├── HangoutOption.cs:这段代码定义了一个名为`HangoutOption`的C#类,用于表示游戏中的邀约选项,并提供了获取和设置选项属性的方法,如图标区域、文本区域、是否选中状态等。它还提供了移动、点击和背景点击选项的方法,以及实现`IDisposable`接口以释放资源。总结:该代码的功能是定义一个用于游戏自动邀约功能的选项模型,包含选项的几何位置、状态和交互操作。
│ │ │ ├── PaddleOcrResultRect.cs:这段C#代码使用了OpenCvSharp命名空间,这是一个用于处理图像和视频的库,通常用于计算机视觉任务。代码定义了一个名为`PaddleOcrResultRect`的结构体(recordstruct),它包含以下三个字段:1.`Rect`:一个`Rect`结构体,表示一个矩形区域,通常用于描述图像中的某个区域。2.`Text`:一个字符串,表示该矩形区域内的文本内容。3.`Score`:一个浮点数,表示文本识别的置信度或分数。这个结构体看起来是用来存储OCR(光学字符识别)的结果,其中OCR可能使用了PaddlePaddle(一个开源的深度学习平台)进行文本识别。总结这句话概括这份代码的功能是:定义了一个用于存储OCR识别结果的矩形区域、文本内容和识别分数的结构体。
│ │ │ └── SelectChatOptionTypes.cs:这份C#代码定义了一个名为`SelectChatOptionTypes`的类,其中包含两个常量字符串,分别代表两种选择聊天选项的方式:使用交互键和使用鼠标。总结来说,这份代码的功能是定义了两种不同的聊天选项选择方式。
│ │ └── OneKeyExpeditionTask.cs:这段代码的功能是使用BetterGenshinImpact库自动化执行《原神》游戏中的探索派遣任务,包括自动点击领取奖励、重新派遣和退出派遣页面。
│ ├── AutoTrackPath/
│ │ ├── Assets/
│ │ ├── AutoTrackPathParam.cs:这段C#代码定义了一个名为`AutoTrackPathParam`的类,它继承自`BaseTaskParam`类。这个类位于`BetterGenshinImpact.GameTask.AutoTrackPath`命名空间下。由于代码片段中没有具体的实现细节,我们可以推测以下几点:1.`BaseTaskParam`可能是一个基类,用于定义一些通用的任务参数属性或方法。2.`AutoTrackPathParam`类可能用于封装自动追踪路径相关的参数,这些参数可能包括路径的起点、终点、路径规划算法的选项等。3.这个类可能被用于`BetterGenshinImpact`游戏中的一个自动追踪路径的任务或功能中。总结这句话概括这份代码的功能是:这段代码定义了一个用于封装自动追踪路径参数的类,可能用于游戏中的路径规划功能。
│ │ ├── AutoTrackPathTask.cs:这段C#代码是一个用于自动追踪路径的任务,它模拟玩家在游戏《原神》中自动移动到指定路径上的各个点。总结:该代码实现了一个自动追踪路径的功能,用于在游戏《原神》中自动移动玩家角色沿着预设路径行走。
│ │ ├── Model/
│ │ │ ├── GiPath.cs:这段代码定义了一个名为`GiPath`的C#类,它用于存储和添加路径点。这个类包含一个`WayPointList`属性,它是一个`GiPathPoint`对象的列表,用于表示路径上的点。`AddPoint`方法用于向路径中添加新的点,但会检查新点与上一个点之间的距离,如果距离小于10,则不会添加该点。如果距离大于50,则会在调试控制台输出一条消息。总结:这份代码的功能是创建和管理一个路径点列表,用于在游戏中自动追踪路径。
│ │ │ ├── GiPathPoint.cs:这段代码定义了一个名为`GiPathPoint`的C#类,用于表示游戏中的路线点,包括坐标、索引、时间戳和类型。它还包含了一个枚举`GiPathPointType`来定义点的不同类型。代码中还包括了从游戏内坐标系转换到主坐标系的逻辑,以及一个静态方法来检查一个点是否是关键点。总结:这段代码的功能是定义一个用于表示游戏内路线点的类,并提供了点类型和坐标转换的相关功能。
│ │ │ └── GiWorldPosition.cs:这段代码定义了一个名为`GiWorldPosition`的C#类,用于表示原神游戏世界中的坐标位置。它包含了坐标的名称、描述、国家以及一个包含x、y、z(或称为a、b、c)坐标值的数组。此外,它还提供了属性来获取和设置这些值,并且定义了两个自动实现的属性`X`和`Y`来分别获取x和y坐标值。总结来说,这份代码的功能是创建一个模型来存储和表示原神游戏世界中的坐标位置信息。
│ │ ├── MovementControl.cs:这段代码是一个C#类,名为`MovementControl`,它继承自`Singleton<MovementControl>`,这意味着它是单例模式的一个实现。这个类似乎用于控制游戏《原神》中的角色移动和跳跃。功能概括:该代码提供了一个单例类,用于模拟按键输入,以控制游戏中的角色移动和跳跃。
│ │ ├── PathPointRecorder.cs:这段代码是一个用于记录游戏内路径点的C#类,它通过匹配屏幕上的图像模板来识别游戏中的特定位置,并将这些位置记录下来。总结:该代码功能是记录游戏中的路径点。
│ │ ├── TpConfig.cs:这份代码的功能是配置一个游戏辅助工具,用于自动追踪路径和缩放地图,以优化玩家在游戏《原神》中的移动和探索体验。
│ │ └── TpTask.cs:这段代码是一个用于《原神》游戏的辅助脚本,其主要功能是通过分析游戏界面和地图信息,实现自动定位和传送至游戏中的特定地点,例如须弥七天神像。总结来说,这份代码的功能是“实现《原神》游戏中的自动传送功能”。
│ ├── AutoWood/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ └── AutoWoodAssets.cs:这段代码定义了一个C#类`AutoWoodAssets`,它是`BaseAssets`类的派生类,用于在游戏《原神》中自动采集木材的任务中管理识别对象和资源。具体来说,它初始化了多个识别对象,如“王树瑞佑”、“菜单背包”、“确认”和“进入游戏”等,并设置了它们的识别类型、模板图像和感兴趣区域。总结:该代码的功能是初始化用于自动采集《原神》游戏中木材的识别资源。
│ │ ├── AutoWoodConfig.cs:这段代码定义了一个名为`AutoWoodConfig`的C#类,它使用CommunityToolkit的MVVM(Model-View-ViewModel)库来创建一个可观察的对象。这个类用于配置一个自动伐木任务,其中包含几个属性来控制伐木过程中的不同设置,如使用小道具后的额外延迟和木材数量OCR(光学字符识别)是否启用。以下是代码的详细功能:-`AutoWoodConfig`类继承自`ObservableObject`,这意味着它的属性变化可以通知视图层。-`afterZSleepDelay`属性表示使用小道具后的额外延迟时间,单位为毫秒。-`woodCountOcrEnabled`属性是一个布尔值,用于启用或禁用木材数量的OCR识别。-类中还包含一个注释掉的`pressTwoEscEnabled`属性,它原本用于控制是否启用按下两次ESC键的功能,但已被注释掉。总结:这份代码的功能是定义一个用于配置自动伐木任务的配置类。
│ │ ├── AutoWoodTask.cs:这段C#代码实现了一个名为“自动伐木”的任务,它通过OCR技术识别游戏中的木材统计数据,并在达到预设的伐木次数或木材数量上限时自动停止伐木操作。
│ │ ├── Utils/
│ │ │ └── Login3rdParty.cs:这段代码的功能是检测并登录第三方平台(如Bilibili)的登录界面,用于游戏《原神》的自动化操作。
│ │ └── WoodTaskParam.cs:这段代码定义了一个名为`WoodTaskParam`的类,它继承自`BaseTaskParam`类。这个类用于表示与木柴任务相关的参数,包括木柴轮数`WoodRoundNum`和每日最大木柴数量`WoodDailyMaxCount`。构造函数接受这两个参数,并对它们进行了一些默认值的设置,例如如果`WoodRoundNum`为0,则将其设置为9999,如果`WoodDailyMaxCount`为0或9999及以上,则也将其设置为9999。总结来说,这份代码的功能是定义了一个用于配置木柴采集任务的参数模型。
│ ├── CaptureContent.cs:这段代码定义了一个名为`CaptureContent`的类,它用于捕获游戏中的内容,并提供了与游戏捕获区域相关的属性和方法。该类实现了`IDisposable`接口,以便在不再需要时释放资源。功能总结:该代码用于捕获和存储游戏中的图像区域信息,以便进行后续处理或分析。
│ ├── Common/
│ │ ├── BgiVision/
│ │ │ ├── BvImage.cs:这段代码是一个C#类,它提供了用于图像识别和交互的静态方法。具体来说,它包含以下功能:1.`WaitUntilFound`方法:等待直到在屏幕上找到指定的识别对象,并在找到后返回`true`。2.`ClickUntilFound`方法:等待直到在屏幕上找到指定的识别对象,并在找到后点击它,返回`true`。3.`Find`方法:检查在指定的图像区域内是否找到了识别对象。总结这句话概括这份代码的功能是:提供图像识别和交互的辅助方法,用于在游戏中定位和操作特定图像元素。
│ │ │ ├── BvSimpleOperation.cs:这段代码的功能是使用图像识别技术来模拟在游戏《原神》中点击不同的按钮,如确认、取消、联机确认和取消按钮,以及根据文本内容找到并点击交互按钮。总结来说,这份代码实现了《原神》游戏中的自动化交互功能。
│ │ │ └── BvStatus.cs:这段代码是一个用于《原神》游戏的辅助工具类,它提供了识别游戏界面状态、等待界面加载、检测游戏内特定事件和状态的功能,以及与游戏交互的辅助方法。总结来说,这份代码的功能是“为《原神》游戏提供界面识别和自动化操作支持”。
│ │ ├── Element/
│ │ │ └── Assets/
│ │ │ │ ├── 1920x1080/
│ │ │ │ ├── ElementAssets.cs:这段代码定义了一个C#类`ElementAssets`,它用于识别和操作《原神》游戏中的各种元素,如按钮、图标和关键点,以便自动化游戏任务。总结来说,这份代码的功能是自动化《原神》游戏中的元素识别和交互。
│ │ │ │ ├── Json/
│ │ │ │ ├── MapAssets.cs:这段C#代码定义了一个名为`MapAssets`的类,它继承自`BaseAssets<MapAssets>`。这个类似乎用于管理游戏《原神》中的地图资源。以下是代码的详细分析:1.引入了多个命名空间,包括配置、模型、服务、OpenCvSharp(一个用于图像处理的库)、System(基础类库)和System.Text.Json(用于JSON序列化和反序列化)。2.`MapAssets`类有一个名为`MimiMapRect`的属性,它是一个`Rect`类型的对象,用于表示地图上的一个矩形区域。3.在`MapAssets`类的构造函数中,`MimiMapRect`被初始化为一个`Rect`对象,该对象定义了地图上的一个区域,其坐标和大小是通过乘以一个名为`AssetScale`的值计算得出的。4.`AssetScale`变量在代码中没有直接定义,但根据上下文推测,它可能是一个表示资源缩放比例的值。总结:这份代码的功能是定义一个用于管理《原神》游戏地图资源的类,其中包含一个表示地图上特定区域的矩形属性。
│ │ │ │ └── MapLazyAssets.cs:这段代码的功能是创建一个单例类`MapLazyAssets`,用于管理《原神》游戏中的地图传送点信息,包括传送点的位置、地区中心位置、秘境位置映射以及反方向行走的副本列表。总结一句话:该代码用于存储和管理《原神》游戏地图中的传送点数据。
│ │ ├── Exceptions/
│ │ │ ├── NormalEndException.cs:这段代码定义了一个名为`NormalEndException`的异常类,它继承自`System.Exception`类,并接受一个字符串参数`message`作为异常信息。这个异常类用于在游戏《原神》的自动召唤任务中处理正常结束的情况。总结:这段代码的功能是定义一个用于表示《原神》游戏自动召唤任务中正常结束异常的类。
│ │ │ ├── RetryException.cs:这段代码定义了一个名为`RetryException`的C#类,它继承自`System.Exception`。这个类用于表示在自动生成《原神》游戏任务中的天才召唤时可能发生的重试异常。它提供了两个构造函数:一个无参数的构造函数和一个接受字符串参数的构造函数,后者用于传递异常的详细信息。总结:这段代码的功能是定义一个用于处理《原神》游戏任务中天才召唤重试异常的自定义异常类。
│ │ │ ├── RetryNoCountException.cs:这段代码定义了一个名为`RetryNoCountException`的自定义异常类,它继承自`System.Exception`。这个异常类有两个构造函数:一个无参构造函数和一个接受字符串参数的构造函数,后者用于传递异常信息。总结:这段代码的功能是定义一个自定义异常,用于在游戏任务自动召唤过程中,当达到重试次数上限时抛出。
│ │ │ └── TpPointNotActivate.cs:这段C#代码定义了一个名为`TpPointNotActivate`的自定义异常类,它继承自`System.Exception`类。这个异常类接受一个字符串参数`message`,该参数用于传递异常信息。这个异常类可能用于在游戏《原神》的某个任务系统中,当传送点(TpPoint)没有被激活时抛出,以便于在代码的其他部分捕获并处理这个特定的错误情况。总结:这段代码的功能是定义一个表示传送点未激活的异常类。
│ │ ├── Job/
│ │ │ ├── ArtifactSalvageTask.cs:这段代码的功能是自动化处理《原神》游戏中圣遗物的分解过程,包括打开背包、选择圣遗物、选择分解星级、确认分解,并在完成后返回主界面。
│ │ │ ├── BlessingOfTheWelkinMoonTask.cs:这段代码的功能是自动检测并点击游戏中的“空月祝福”界面,以自动完成游戏任务。
│ │ │ ├── ChooseTalkOptionTask.cs:这段代码的功能是自动化选择《原神》游戏中对话选项的任务,通过OCR识别对话界面中的文字选项,并根据用户指定的选项进行点击操作。
│ │ │ ├── ClaimBattlePassRewardsTask.cs:这段C#代码是一个名为`ClaimBattlePassRewardsTask`的类,它实现了自动化的游戏任务,用于在《原神》游戏中一键领取战令奖励。
│ │ │ ├── ClaimEncounterPointsRewardsTask.cs:这段代码的功能是自动化领取游戏《原神》中的长效历练点奖励。
│ │ │ ├── ClaimMailRewardsTask.cs:这段代码的功能是自动化领取游戏《原神》中的邮件奖励。
│ │ │ ├── GoToAdventurersGuildTask.cs:这段代码是一个用于自动完成《原神》游戏中前往冒险家协会领取奖励的任务。
│ │ │ ├── GoToCraftingBenchTask.cs:这段代码是一个C#类,用于在游戏《原神》中自动化执行前往合成台的任务。它通过模拟用户操作,自动导航到合成台,与合成台交互,并处理合成相关的操作,如合成浓缩树脂等。
│ │ │ ├── ReturnMainUiTask.cs:这段C#代码的功能是模拟用户在游戏《原神》中按下多个按键(包括回车和Esc键),以尝试返回游戏的主界面。如果游戏已经处于主界面,则不会执行任何操作。
│ │ │ ├── ScanPickTask.cs:这段代码的功能是使用深度学习模型识别游戏中的可拾取物品,并自动控制游戏角色移动到这些物品附近进行拾取。
│ │ │ └── SwitchPartyTask.cs:这段代码的功能是自动化切换游戏《原神》中的队伍,通过OCR识别和模拟用户操作来实现。
│ │ ├── Map/
│ │ │ ├── BigMap.cs:这段代码的功能是使用特征匹配技术来识别和定位游戏《原神》中的大地图位置,通过缩小图像并匹配特征点来实现地图的定位。
│ │ │ ├── Camera/
│ │ │ │ ├── CameraOrientationFromGia.cs:这段代码的功能是从GenshinImpact游戏的小地图图像中计算摄像机朝向的角度。
│ │ │ │ └── CameraOrientationFromLimint.cs:这段代码的功能是使用OpenCV库来分析图像,并预测游戏《原神》中角色的视角方向和置信度。
│ │ │ ├── CameraOrientation.cs:这段代码的功能是计算游戏《原神》中小地图摄像机朝向的角度,并在小地图上绘制表示摄像机方向的线条。
│ │ │ ├── CharacterOrientation.cs:这段代码的功能是计算游戏角色在图像中的朝向角度,通过分析图像中的颜色和形状特征来确定角色的朝向。
│ │ │ ├── EntireMap.cs:这段代码是一个用于识别游戏《原神》中地图位置的C#类,它使用OpenCV库进行特征匹配来定位地图上的特定区域。
│ │ │ ├── EntireMapOperation.cs:这段C#代码定义了一个名为`EntireMapOperation`的静态类,其中包含一个扩展方法`Tp`。这个扩展方法接受一个`EntireMap`类型的参数和两个`double`类型的参数`x`和`y`。尽管方法体是空的(只有一个花括号`{}`),这通常意味着该方法可能是一个占位符或者是一个待实现的方法。根据方法名称`Tp`,我们可以推测这个方法可能是用来将地图中的某个点(由`x`和`y`坐标指定)进行传送(Teleport)操作。总结这句话概括这份代码的功能是:该代码定义了一个用于在地图上执行传送操作的扩展方法。
│ │ │ └── MapCoordinate.cs:这段代码定义了一个名为`MapCoordinate`的C#类,该类提供了将原神游戏坐标系中的坐标转换为BetterGI主地图1024区块坐标系和2048区块坐标系的方法,以及反向转换。此外,还提供了将矩形坐标从一种坐标系转换到另一种坐标系的方法。总结:该代码的功能是进行原神游戏坐标系与BetterGI主地图区块坐标系之间的坐标转换。
│ │ ├── NewRetry.cs:这段代码定义了一个名为`NewRetry`的静态类,它提供了两个方法用于执行带有重试逻辑的操作。第一个方法是`Do`,它接受一个`Action`或`Func<T>`类型的操作,一个重试间隔时间`TimeSpan`,以及一个最大尝试次数`maxAttemptCount`。这个方法会尝试执行传入的操作,如果操作抛出`RetryException`,则会等待一段时间后重试,直到达到最大尝试次数。如果所有尝试都失败,它会抛出一个包含所有异常的`AggregateException`。第二个方法是`WaitForAction`,它接受一个返回布尔值的`Func<bool>`类型的操作,一个`CancellationToken`用于取消操作,一个重试次数`retryTimes`,以及一个延迟时间`delayMs`。这个方法会等待操作返回`true`,如果操作在达到最大重试次数之前没有成功,则返回`false`。总结这句话概括这份代码的功能是:这段代码提供了一个具有重试逻辑的执行方法,用于在操作失败时自动重试,并支持异步等待操作成功。
│ │ ├── TaskControl.cs:这段代码是一个用于控制游戏任务执行的类,它提供了暂停、睡眠、截图和延迟执行等功能,主要用于辅助游戏《原神》的自动化操作。
│ │ └── YoloManager.cs:这段代码定义了一个名为`YoloManager`的类,它继承自`Singleton<YoloManager>`并实现了`IDisposable`接口。该类的主要功能是管理一个用于分类角色侧面头像的YOLOV8模型。具体来说,它包含一个名为`AvatarSideIconClassifierLazy`的只读懒加载属性,该属性初始化一个`YoloV8`对象,该对象加载了一个特定的ONNX模型文件。此外,它提供了一个`AvatarSideIconClassifier`属性来访问这个模型,并提供了一个`Dispose`方法来释放模型资源。总结:这段代码的功能是管理一个用于分类角色侧面头像的YOLOV8模型。
│ ├── GameLoading/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ └── GameLoadingAssets.cs:这段代码定义了一个名为`GameLoadingAssets`的类,它是`BaseAssets`类的派生类,用于管理游戏加载过程中的资源。该类包含两个`RecognitionObject`类型的实例,分别用于识别游戏进入界面和“WelkinMoon”标志。代码中初始化了这两个识别对象,并加载了相应的模板图像。总结:该代码的功能是初始化游戏加载过程中所需的识别资源。
│ │ └── GameLoading.cs:这段代码是一个C#类,名为`GameLoadingTrigger`,它实现了`ITaskTrigger`接口,用于在游戏《原神》的加载过程中触发特定的任务。具体来说,这个类负责自动点击游戏界面中的“开门”、“月卡”和“原石”等元素,以提高游戏加载速度和获取游戏资源。总结来说,这份代码的功能是自动化游戏《原神》的加载过程,自动点击游戏界面中的特定元素。
│ ├── GameTaskManager.cs:这段C#代码是一个名为`GameTaskManager`的类,它管理着《原神》游戏中的自动化任务触发器。该类负责加载、初始化、添加和刷新任务触发器,以及管理游戏任务所需的资源。
│ ├── ISoloTask.cs:这段代码定义了一个名为`ISoloTask`的接口,它包含两个属性和方法。这个接口似乎是为了在C#中创建和管理独立任务而设计的。-`Name`属性是一个只读的字符串,用于获取独立任务的名称。-`Start`方法是一个异步方法,它接受一个`CancellationToken`作为参数,用于处理任务的取消请求,并返回一个`Task`对象,表示异步操作的结果。概括总结:这份代码的功能是定义了一个用于创建和管理独立任务的接口。
│ ├── ITaskTrigger.cs:这段代码定义了一个名为`ITaskTrigger`的接口,它似乎用于在游戏《原神》中处理任务触发相关的逻辑。接口中包含了任务触发的名称、启用状态、执行优先级、独占模式以及后台运行状态等属性,并提供了一个初始化方法和一个捕获图像后的操作方法。总结:这份代码的功能是定义一个用于游戏《原神》中任务触发的接口。
│ ├── LogParse/
│ │ ├── LogParse.cs:这段C#代码的功能是解析GenshinImpact游戏日志,提取配置组信息、任务执行情况、拾取物和故障场景,并将这些信息转换为HTML格式进行展示。
│ │ ├── LogParseConfig.cs:这段C#代码定义了一个名为`LogParseConfig`的类,它使用`ObservableObject`来支持数据绑定。该类包含三个私有字段,分别用于存储cookie字符串、一个字典用于存储游戏信息,以及另一个字典用于存储脚本组日志解析配置。`ScriptGroupLogParseConfig`是一个嵌套的类,用于定义脚本组日志解析的配置细节。总结来说,这份代码的功能是定义了一个用于解析和配置日志的类。
│ │ ├── MoraStatistics.cs:这段代码定义了一个名为`MoraStatistics`的C#类,该类用于处理和统计游戏中的Mora数据。它包含多个属性和方法,用于获取和计算与精英怪物和小怪物相关的行动项、Mora值、统计数据等。总结:该代码的功能是统计和分析游戏中的Mora数据,包括精英怪物和小怪物的行动项和Mora值。
│ │ ├── NoLoginException.cs:这段C#代码定义了一个名为`NoLoginException`的自定义异常类,该类继承自`Exception`类。这个异常类用于表示没有登录的情况,通常会在用户尝试执行需要登录的操作但未登录时抛出。总结:这份代码的功能是定义一个表示未登录异常的自定义异常类。
│ │ ├── TravelsDiaryDetailManager.cs:这段代码的功能是管理并解析《原神》游戏中的旅行日记详情,包括加载和更新旅行日记中的动作项,以及生成包含获取米游社cookie说明的HTML消息。
│ │ └── YsHttp.cs:这段代码是一个C#类库,用于从原神游戏的后端API获取用户信息、游戏角色信息和旅行札记的收入详情。它提供了异步方法来发送HTTP请求并解析JSON响应,以便获取和操作游戏数据。
│ ├── Macro/
│ │ ├── QuickEnhanceArtifactMacro.cs:这段C#代码的功能是创建一个宏命令,用于自动执行在《原神》游戏中一键强化圣遗物的操作。
│ │ └── TurnAroundMacro.cs:这段代码的功能是创建一个宏任务,用于在游戏中模拟鼠标移动,实现绕圈移动的功能。
│ ├── Model/
│ │ ├── Area/
│ │ │ ├── Converter/
│ │ │ │ ├── ConvertRes.cs:这段代码定义了一个泛型类`ConvertRes<T>`,用于将一个区域(Region)的坐标和尺寸转换为另一个特定类型T的区域。它包含一个方法`ToRect`用于将坐标和尺寸转换为OpenCvSharp库中的`Rect`对象,以及一个静态方法`ConvertPositionToTargetRegion`用于根据起始节点和转换器链找到目标区域,并返回一个新的`ConvertRes<T>`对象。总结:该代码的功能是提供一种将区域坐标和尺寸转换为特定类型区域的方法。
│ │ │ │ ├── INodeConverter.cs:这段代码定义了一个名为`INodeConverter`的接口,该接口包含一个名为`ToPrev`的方法,该方法接收四个整数参数(x,y,w,h),并返回一个包含四个整数的元组,这些整数可能代表某个节点的位置和大小。接口中还有一个未实现的`ToNext`方法,可能用于将节点转换到下一个状态或位置。总结:这份代码的功能是定义一个接口,用于将节点的位置和大小转换为前一个状态。
│ │ │ │ ├── ScaleConverter.cs:这段C#代码定义了一个名为`ScaleConverter`的类,它继承自`INodeConverter`接口。这个类接受一个`scale`参数,用于指定缩放比例。`ScaleConverter`类提供了一个`ToPrev`方法,该方法接收四个整数参数(x,y,w,h),代表一个节点的位置和大小,然后根据提供的缩放比例将这些值缩小,并返回缩放后的坐标和大小。总结:这段代码的功能是提供一个缩放转换器,用于将节点的坐标和大小按照指定的比例缩小。
│ │ │ │ └── TranslationConverter.cs:这段C#代码定义了一个名为`TranslationConverter`的类,它继承自`INodeConverter`接口。这个类用于实现一个平移变换,它接受两个整数参数`offsetX`和`offsetY`,这两个参数表示在水平和垂直方向上的偏移量。`ToPrev`方法接受一个表示矩形坐标和宽高的元组,并返回应用了平移变换后的新坐标和宽高。总结:这份代码的功能是提供一个用于在二维空间中平移矩形坐标的转换器。
│ │ │ ├── DesktopRegion.cs:这段代码定义了一个名为`DesktopRegion`的类,它继承自`Region`类。这个类的主要功能是提供对桌面区域进行点击和移动鼠标操作的方法,并且可以基于屏幕截图创建一个新的游戏捕获区域。具体来说,它提供了以下功能:-`DesktopRegionClick`和`DesktopRegionMove`方法允许用户在桌面上的指定区域进行鼠标点击和移动操作。-`DesktopRegionClick`和`DesktopRegionMove`的静态方法允许用户在屏幕上的任意位置进行鼠标点击和移动操作。-`Derive`方法可以从一个屏幕截图和指定坐标创建一个新的`GameCaptureRegion`对象。总结这句话概括这份代码的功能是:该代码提供了一个用于桌面区域点击、移动和基于截图创建游戏捕获区域的类。
│ │ │ ├── GameCaptureRegion.cs:这段代码的功能是创建一个用于处理游戏捕获区域的类,它可以将游戏捕获图像的坐标转换到遮罩窗口的坐标,并提供方法来模拟点击和移动操作。
│ │ │ ├── ImageRegion.cs:这段代码定义了一个名为`ImageRegion`的类,它是一个用于图像识别的辅助类,可以处理图像的裁剪、识别和显示等功能。具体来说,它能够根据提供的模板或OCR技术识别图像中的特定对象,并将识别结果返回给调用者。总结来说,这份代码的功能是“提供图像区域识别和处理的工具类”。
│ │ │ └── Region.cs:这段代码定义了一个名为`Region`的C#类,它是一个用于描述游戏中的区域的基类。该类提供了位置、大小、点击、移动和绘制等操作,以及与游戏捕获区域和桌面区域的转换功能。总结来说,这份代码的功能是提供一个用于游戏自动化中区域管理的基类。
│ │ ├── BaseAssets.cs:这段代码定义了一个泛型类`BaseAssets<T>`,它继承自`Singleton<T>`并用于管理游戏中的各类任务素材。这个类使用了泛型约束`whereT:class`来确保`T`是一个类。它提供了对游戏捕获区域和资产缩放比例的访问,并要求在任务生命周期开始前销毁实例以确保资源引用的正确性。概括总结:该代码定义了一个用于管理游戏任务素材的泛型单例类,确保资源引用的正确性和任务生命周期的正确管理。
│ │ ├── BaseIndependentTask.cs:这段代码定义了一个名为`BaseIndependentTask`的类,它似乎是为了与游戏《原神》交互而设计的。类中包含了对游戏上下文`TaskContext`的引用,用于获取系统信息、捕获区域矩形和资产缩放比例。以下是代码的详细分析:1.`usingVanara.PInvoke;`:这行代码引入了Vanara的PInvoke库,该库提供了对WindowsAPI的访问,可能用于与游戏进行交互。2.`namespaceBetterGenshinImpact.GameTask.Model;`:代码定义了一个命名空间`BetterGenshinImpact.GameTask.Model`,这表明代码可能是一个名为BetterGenshinImpact的项目的一部分,该项目可能是一个与《原神》游戏相关的辅助工具或脚本。3.`publicclassBaseIndependentTask`:定义了一个公共类`BaseIndependentTask`,这个类可能是一个基类,用于派生出其他具体的任务类。4.`protectedSystemInfoInfo=>TaskContext.Instance().SystemInfo;`:这行代码通过`TaskContext.Instance().SystemInfo`获取系统信息,并将其存储在`Info`属性中。`SystemInfo`可能是一个包含游戏系统相关数据的类。5.`protectedRECTCaptureRect=>TaskContext.Instance().SystemInfo.CaptureAreaRect;`:这行代码获取捕获区域的矩形信息,并将其存储在`CaptureRect`属性中。`RECT`可能是一个表示矩形结构的类。6.`protecteddoubleAssetScale=>TaskContext.Instance().SystemInfo.AssetScale;`:这行代码获取资产缩放比例,并将其存储在`AssetScale`属性中。总结:这段代码的功能是为与《原神》游戏交互的任务提供基础属性,如系统信息、捕获区域和资产缩放比例。
│ │ ├── BaseTaskParam.cs:这段C#代码定义了一个名为`BaseTaskParam`的类,它位于`BetterGenshinImpact.GameTask.Model`命名空间下。这个类是一个基类,用于表示独立任务参数。代码中包含了以下内容:1.引用了`BetterGenshinImpact.GameTask.Model.Enum`命名空间,这表明可能存在一些枚举类型,它们可能与任务参数相关。2.使用了`System.Threading`命名空间,这表明可能涉及到线程相关的操作。3.类的注释说明了`BaseTaskParam`是一个基类,用于封装独立任务的参数。总结来说,这份代码的功能是定义了一个用于封装独立任务参数的基类。
│ │ ├── Enum/
│ │ │ ├── DispatcherCaptureModeEnum.cs:这段代码定义了一个名为`DispatcherCaptureModeEnum`的枚举类型,用于表示调度器捕获模式。这些模式影响调度器的行为,如是否缓存图像和是否执行触发器。代码中包含了六个不同的枚举值,其中四个是直接可设置的捕获模式,另外两个是通过调度器的`StartTimer`和`StopTimer`方法间接设置的,分别用于启动和停止调度器。总结:这份代码的功能是定义了一个枚举,用于配置和描述GenshinImpact游戏中调度器的不同捕获模式。
│ │ │ └── DispatcherTimerOperationEnum.cs:这段代码定义了一个名为`DispatcherTimerOperationEnum`的枚举,它用于表示调度器在处理定时器任务时可能采取的不同操作模式。这些模式包括使用自己的图像捕获、使用缓存图像但不执行触发器、使用缓存图像并执行触发器、使用缓存图像并清空现有触发器执行触发器,以及不做任何操作。总结:这份代码的功能是定义了一个枚举,用于配置GenshinImpact游戏中定时器任务的图像捕获和触发器执行策略。
│ │ ├── IndependentTaskEnum.cs:这段代码定义了一个名为`IndependentTaskEnum`的枚举类型,它包含了与《原神》游戏相关的独立任务类型。每个枚举值代表一种特定的自动化任务,例如自动召唤神灵、自动采集木材、自动战斗、自动领域、自动追踪、自动追踪路径、自动音乐游戏和自动路径规划。总结:这份代码的功能是定义了一个枚举,用于表示《原神》游戏中的不同自动化任务类型。
│ │ ├── RectArea.cs:这段代码定义了一个名为`RectArea`的类,用于表示屏幕上的一个矩形区域,并提供了多种方法来处理和识别这个区域内的图像或文本。该类可以获取和设置矩形的坐标、宽度和高度,支持将矩形转换为图像、进行OCR文本识别、查找模板匹配的对象,以及进行坐标转换等操作。总结:该代码的功能是提供一个用于识别和操作屏幕上矩形区域的工具类。
│ │ └── SystemInfo.cs:这段代码定义了一个C#类`SystemInfo`,用于获取和存储与游戏《原神》相关的系统信息,包括显示器分辨率、游戏窗口分辨率、缩放比例、捕获区域等。该类通过一个窗口句柄(`IntPtrhWnd`)来初始化,并提供了获取游戏进程、显示器大小、游戏屏幕大小、捕获区域等信息的方法。总结:该代码的功能是获取并存储《原神》游戏的相关系统信息。
│ ├── Placeholder/
│ │ └── PlaceholderTrigger.cs:这段C#代码是一个名为`TestTrigger`的类,它实现了`ITaskTrigger`接口,用于在游戏《原神》中作为测试用的识别和全局占位触发器。该类提供了自定义的触发器名称、优先级和是否独占的属性,并在捕获内容时执行一系列图像处理和检测操作,如检测箭头、相机角度计算等,以辅助游戏中的自动化操作。
│ ├── QucikBuy/
│ │ └── QuickBuyTask.cs:这段代码的功能是自动化执行《原神》游戏中的快速购买任务,通过模拟鼠标操作来点击游戏界面上的特定位置,从而实现自动购买或兑换物品。
│ ├── QuickForge/
│ │ └── QuickForgeTask.cs:这段C#代码定义了一个名为`QuickForgeTask`的内部类,它位于`BetterGenshinImpact.GameTask.QuickForge`命名空间下。由于这个类没有包含任何成员(方法、属性、事件等),它仅仅是一个空的类定义。根据命名空间和类名,可以推测这个类可能与《原神》游戏中的快速锻造任务有关。总结:这份代码的功能是定义了一个空的`QuickForgeTask`类,可能用于表示或管理《原神》游戏中的快速锻造任务。
│ ├── QuickSereniteaPot/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ └── QuickSereniteaPotAssets.cs:这段代码定义了一个名为`QuickSereniteaPotAssets`的类,它继承自`BaseAssets<QuickSereniteaPotAssets>`。该类用于在游戏《原神》中快速获取茶几(SereniteaPot)的资产信息,包括关闭背包按钮和茶几图标的位置和识别信息。概括总结:该代码的功能是加载和配置用于在游戏中快速识别茶几图标和关闭背包按钮的图像识别资源。
│ │ └── QuickSereniteaPotTask.cs:这段代码的功能是自动化完成《原神》游戏中快速使用尘歌壶的任务,包括打开背包、找到尘歌壶图标、放置尘歌壶并进入。
│ ├── QuickTeleport/
│ │ ├── Assets/
│ │ │ ├── 1920x1080/
│ │ │ └── QuickTeleportAssets.cs:这段C#代码的功能是定义了一个名为`QuickTeleportAssets`的类,该类用于在游戏《原神》中实现快速传送功能。它通过识别游戏界面上的特定图标和按钮,来控制地图选择和传送操作。
│ │ ├── QuickTeleportConfig.cs:这段代码定义了一个名为`QuickTeleportConfig`的C#类,它使用CommunityToolkit的MVVM(Model-View-ViewModel)库来创建一个可观察的对象,用于配置一个名为“快速传送”的功能。该配置类包含几个属性,用于设置快速传送的启用状态、点击候选列表传送点的间隔时间、等待传送弹出界面的时间以及是否启用快捷键传送。总结:这份代码的功能是配置一个游戏中的快速传送系统。
│ │ └── QuickTeleportTrigger.cs:这段代码是一个用于《原神》游戏的快速传送任务触发器,它通过识别屏幕上的特定图像和按钮,自动执行快速传送操作。
│ ├── RunnerContext.cs:这段代码定义了一个名为`RunnerContext`的类,它是一个单例类,用于在执行游戏任务时提供上下文信息。该类包含与任务执行相关的属性和方法,如是否连续执行配置组、暂停逻辑、暂停实现、当前队伍名称和角色信息等。它还提供了获取和清除战斗场景信息的方法,以及任务结束后的清理和重置方法。总结:该代码的功能是提供游戏任务执行时的上下文管理。
│ ├── SystemControl.cs:这段代码是一个用于控制《原神》游戏窗口的C#类,它提供了启动游戏、激活游戏窗口、获取游戏窗口位置、切换全屏模式等功能。
│ ├── TaskContext.cs:这段C#代码定义了一个名为`TaskContext`的类,它是一个单例模式,用于管理游戏任务相关的上下文信息。该类提供了初始化游戏句柄、模拟发送消息、获取系统信息、DPI缩放比例以及配置信息等功能,并存储了启动原神的时间。总结:该代码的功能是创建一个用于管理游戏任务上下文信息的单例类。
│ ├── TaskRunner.cs:这段代码的功能是创建一个用于执行独立任务的运行器,它可以异步运行任何方法,并处理任务的生命周期,包括初始化、执行、异常处理和清理工作。
│ ├── TaskTriggerDispatcher.cs:这段C#代码是一个名为`TaskTriggerDispatcher`的类,它是一个用于管理游戏任务触发器的调度器,能够捕获游戏画面并触发相应的游戏任务,如自动战斗、自动领域等,同时支持截图和同步遮罩窗口位置等功能。总结:该代码实现了一个游戏辅助工具的调度器,用于自动化执行游戏任务并捕获游戏画面。
│ └── UseActiveCode/
│ │ └── UseActiveCodeTask.cs:这段C#代码定义了一个名为`UseActiveCodeTask`的内部类,它位于`BetterGenshinImpact.GameTask.UseActiveCode`命名空间下。由于这个类没有包含任何成员(方法、属性、字段等),我们可以推测这个类可能是一个空的类,用于定义一个任务或者功能,但没有实现具体的逻辑。总结这句话概括这份代码的功能是:定义了一个空的`UseActiveCodeTask`类,可能用于表示一个未实现的GenshinImpact游戏中的使用激活代码的任务。
├── Genshin/
│ ├── Paths/
│ │ ├── GameExePath.cs:这段代码的功能是从注册表中查找并返回《原神》游戏的可执行文件路径。
│ │ ├── RegistryGameLocator.cs:这段代码的功能是尝试从Windows注册表中查找《原神》游戏(可能包括不同版本或平台)的安装路径,并返回找到的第一个存在的游戏可执行文件路径。
│ │ └── UnityLogGameLocator.cs:这段代码的功能是异步查找《原神》或《崩坏3》游戏安装路径,通过分析游戏日志文件中的特定行来定位游戏的可执行文件。
│ ├── Settings/
│ │ ├── GenshinRegistry.cs:这段代码的功能是提供一个方法来获取《原神》或《GenshinImpact》游戏在Windows注册表中的配置信息,根据不同的游戏版本(国服或国际服)和配置类型(自动、国服、国际服、云)来选择正确的注册表键。总结一句话:该代码用于根据游戏版本和配置类型从Windows注册表中检索《原神》游戏的配置信息。
│ │ ├── InputDataSettings.cs:这段代码的功能是解析GenshinImpact游戏设置中的输入数据,包括鼠标灵敏度以及鼠标焦点感应级别,并将其存储在一个配置类中供其他部分使用。
│ │ ├── LanguageSettings.cs:这段代码定义了一个名为`LanguageSettings`的类,用于管理《原神》游戏的语言设置,包括文本语言和语音语言。`TextLanguage`和`VoiceLanguage`枚举分别定义了可用的文本和语音选项。总结:该代码的功能是管理《原神》游戏的语言设置。
│ │ ├── MainJson.cs:这段代码定义了一个名为`MainJson`的密封类,它似乎用于存储与《原神》游戏设置相关的JSON序列化数据。类中包含了几个属性,如设备语言类型、设备语音语言类型、输入数据以及控制器映射键值列表。这些属性被标记为`[JsonPropertyName]`,表明它们将被序列化和反序列化为特定的JSON键。总结这句话概括这份代码的功能是:定义了一个用于存储和序列化《原神》游戏设置数据的C#类。
│ │ ├── OverrideController.cs:ThisC#codedefinesaclassstructureforparsingandmanagingkeyboardmappingsforagame,likelyGenshinImpact,byreadingXMLconfigurationfilesandmappingthemtospecificactionswithinthegame.Itincludesclassesforkeyboardmapping,actionelements,andXMLparsingextensions.Thecode'sprimaryfunctionistointerpretandapplycustomkeyboardcontrolsforthegame.
│ │ ├── ResolutionSettings.cs:这段代码定义了一个名为`ResolutionSettings`的类,它用于获取和设置游戏《原神》的分辨率设置。类中包含高度、宽度和全屏模式的属性,并在构造函数中从注册表中读取这些设置。总结:该代码的功能是从注册表中读取《原神》游戏的分辨率和全屏设置。
│ │ └── SettingsContainer.cs:这段代码的功能是从注册表中读取GenshinImpact(原神)的设置,并将其解析为不同的设置对象,如语言设置、分辨率设置、输入数据设置和控制器覆盖设置。总结一句话:该代码用于从注册表中加载并解析原神游戏的设置配置。
│ └── Settings2/
│ │ ├── GameSettingsChecker.cs:这段代码的功能是检查《原神》游戏设置,确保亮度、镜头灵敏度和游戏语言等设置符合默认值,并在不符合时提供警告或错误信息。
│ │ ├── GenshinGameInputSettings.cs:这段代码定义了一个名为`GenshinGameInputSettings`的C#类,该类用于存储和解析《原神》游戏中的输入设置,包括鼠标、手柄、触摸板等设备的灵敏度、反转设置、缩放比例以及一些特殊功能选项。总结来说,这份代码的功能是提供一个用于存储和解析《原神》游戏输入设置的类。
│ │ └── GenshinGameSettings.cs:这段代码定义了一个名为`GenshinGameSettings`的类,用于存储和解析《原神》游戏的各种设置,包括设备信息、语言、音效、图形设置、控制器映射等,并提供从注册表中获取设置和解析JSON字符串的方法。总结:该代码实现了对《原神》游戏设置的存储、解析和注册表读取功能。
├── GlobalUsing.cs:这段C#代码使用了`globalusing`指令来全局导入`MessageBox`类,该类来自`Wpf.Ui.Violeta.Controls`命名空间。这表明代码中将会使用到这个`MessageBox`类,它很可能是用于显示消息框的,类似于Windows窗体或WPF应用程序中的消息对话框。总结:这段代码的功能是全局导入一个用于显示消息框的类。
├── Helpers/
│ ├── AssertUtils.cs:这段代码定义了一个名为`AssertUtils`的类,其中包含两个静态方法。第一个方法`IsTrue`用于检查一个布尔值是否为真,如果不是,则抛出一个异常。第二个方法`CheckGameResolution`用于检查游戏的分辨率是否为16:9,如果不是,则记录错误并抛出异常。总结:这份代码的功能是提供辅助方法来确保游戏运行在正确的分辨率,并在不符合要求时抛出异常。
│ ├── Crud/
│ │ ├── ICrudHelper.cs:这段代码定义了一个名为`ICrudHelper`的接口,它为泛型类型`T`提供了CRUD(创建、读取、更新、删除)操作的方法。具体来说,它包含了以下方法:-`Insert(Tentity)`:插入一个实体到数据源。-`MultiQuery()`:查询多个实体并返回一个`ObservableCollection<T>`。-`Update(Tentity,Dictionary<string,object>condition)`:根据提供的条件更新一个实体。-`Delete(Dictionary<string,object>condition)`:根据提供的条件删除一个实体。概括总结这份代码的功能是:定义了一个用于数据操作的CRUD接口,支持泛型实体类型。
│ │ └── JsonCrudHelper.cs:这段代码定义了一个泛型类`JsonCrudHelper<T>`,它实现了`ICrudHelper<T>`接口,用于处理与JSON文件相关的CRUD(创建、读取、更新、删除)操作。该类使用`ObservableCollection<T>`来管理数据,并通过读写锁来确保线程安全。总结:该代码实现了一个线程安全的JSON文件操作助手,用于管理泛型类型T的数据。
│ ├── DirectoryHelper.cs:这段代码定义了一个名为`DirectoryHelper`的类,其中包含了一系列静态方法,用于处理目录和文件的操作,包括删除目录及其内容、检查和移除只读属性、复制目录以及递归删除目录。总结来说,这份代码的功能是提供一系列辅助方法来管理文件系统中的目录和文件。
│ ├── DpiAwareness/
│ │ ├── DpiAwarenessController.cs:这段代码的功能是创建一个高分辨率适配器,用于调整Windows窗体应用程序的DPI(dotsperinch,每英寸点数)设置,以实现更好的显示效果和适配不同分辨率的屏幕。
│ │ └── DpiAwarenessExtension.cs:这段C#代码定义了一个名为`DpiAwarenessExtension`的静态类,其中包含一个扩展方法`InitializeDpiAwareness`,该方法用于初始化一个`Window`对象的DPI感知能力。具体来说,它通过创建一个`DpiAwarenessController`的实例来为窗口启用DPI感知,这样窗口就可以正确地处理高DPI屏幕的分辨率变化。总结:这段代码的功能是为Windows窗口启用DPI感知,以支持高分辨率屏幕。
│ ├── DpiHelper.cs:这段代码的功能是提供一个帮助类`DpiHelper`,用于获取Windows应用程序的DPI(dotsperinch,每英寸点数)缩放比例,以便于在不同DPI设置下进行界面元素的大小调整。
│ ├── ExpandoObjectConverter.cs:这段代码定义了一个名为`ExpandoObjectConverter`的类,该类包含一个静态方法`ConvertTo<T>`,用于将一个动态类型的对象转换为指定泛型类型`T`的对象。具体来说,它首先将动态对象序列化为JSON字符串,然后反序列化这个JSON字符串为类型`T`的对象。总结:该代码的功能是将动态对象转换为指定类型的对象。
│ ├── Extensions/
│ │ ├── BitmapExtension.cs:这段C#代码定义了一个名为`BitmapExtension`的静态类,其中包含两个扩展方法。第一个扩展方法`ToBitmapImage`将一个`Bitmap`对象转换为`BitmapImage`对象,用于在WPF应用程序中显示图像。第二个扩展方法`ToScalar`将一个`Color`对象转换为`OpenCvSharp`库中的`Scalar`对象,这通常用于图像处理操作。总结:这段代码的功能是扩展了`Bitmap`和`Color`类,以便在WPF和OpenCvSharp库之间进行图像转换。
│ │ ├── BooleanExtension.cs:这段代码定义了一个名为`BooleanExtension`的静态类,其中包含一个扩展方法`ToChinese`。这个扩展方法接受一个`bool`类型的参数`enabled`,并根据其值返回对应的中文字符串:"开启"或"关闭"。概括来说,这份代码的功能是将布尔值转换为对应的中文描述。
│ │ ├── ClickExtension.cs:这段代码是一个C#扩展方法类,它扩展了`Point`和`double`类型,以便能够模拟鼠标点击和移动操作。它使用了`BetterGenshinImpact`和`Fischless.WindowsInput`库来与操作系统交互,以及`OpenCvSharp`库可能用于图像处理。具体来说,它提供了以下功能:-`Click(thisPointpoint)`:将鼠标移动到指定点并执行点击操作。-`Click(doublex,doubley)`:将鼠标移动到指定坐标并执行点击操作。-`Move(doublex,doubley)`:将鼠标移动到指定坐标。-`Move(Pointp)`:将鼠标移动到指定点的坐标。总结这句话概括这份代码的功能是:该代码扩展了点坐标和双精度浮点数类型,以实现鼠标的点击和移动操作。
│ │ ├── DependencyInjectionExtensions.cs:这段代码是一个C#扩展方法类,它扩展了`IServiceCollection`接口,用于向依赖注入容器中注册视图和视图模型。具体来说,它提供了两个方法:`AddView<TWindow,TWindowImplementation,TViewModel>`和`AddView<TPage,TViewModel>`,这两个方法分别用于注册窗口和页面及其对应的视图模型。总结:这段代码的功能是扩展依赖注入服务集合,以便注册特定类型的窗口、页面及其视图模型。
│ │ ├── PointExtension.cs:这段代码定义了一个名为`PointExtension`的静态类,它扩展了`OpenCvSharp`库中的`Point2f`类。这个类提供了两个扩展方法:1.`IsEmpty`方法用于检查一个`Point2f`实例是否为空,即它的X和Y坐标都为0。2.`CenterToRect`方法接受一个`Point2f`实例和一个宽度和高度,然后根据这个点的坐标和给定的宽高创建一个`Rect`对象。总结这句话概括这份代码的功能是:该代码扩展了OpenCvSharp库中的Point2f类,提供了检查点是否为空和从点坐标创建矩形的功能。
│ │ ├── RectCutExtension.cs:这段C#代码定义了一个名为`RectCutExtension`的静态类,它扩展了`OpenCvSharp.Rect`类,提供了多种方法来根据给定的比例切割矩形区域。具体来说,这些方法可以切割矩形的左、右、上、下、左上、右上、左下和右下区域。总结这句话概括这份代码的功能是:该代码扩展了OpenCvSharp的Rect类,提供了按比例切割矩形的方法。
│ │ ├── RectExtension.cs:这段代码定义了一个名为`RectExtension`的静态类,它扩展了`OpenCvSharp.Rect`类,为其添加了三个扩展方法。这些方法允许用户检查一个点是否在矩形内,以及如何根据指定的参数缩小矩形的大小。概括总结:这段代码的功能是扩展OpenCvSharp中的Rect类,增加了包含点检查和矩形缩放的方法。
│ │ └── TaskExtension.cs:这段代码定义了一个名为`SafeForget`的扩展方法,它可以将一个`Task`对象安全地“忘记”,即不再跟踪其完成状态。这个方法会异步等待`Task`的完成,并捕获可能发生的异常。如果任务被取消,它会忽略`OperationCanceledException`异常。在调试模式下,如果发生任何其他异常并且调试器已附加,它将触发断点。在生产模式下,它不会处理任何异常。总结:这段代码的功能是为`Task`提供了一个安全地忽略其完成的方法,以避免内存泄漏,并在调试模式下提供异常调试支持。
│ ├── Http/
│ │ └── ProxySpeedTester.cs:这段代码的功能是测试并返回最快的代理服务器地址,用于加速访问指定的目标地址。
│ ├── MathHelper.cs:这段代码定义了一个名为`MathHelper`的类,其中包含用于计算点与直线之间距离、两点之间距离以及浮点坐标点之间距离的方法。总结来说,这份代码的功能是提供数学计算辅助方法,用于计算二维空间中点与直线、点与点之间的距离。
│ ├── ObjectUtils.cs:这段代码定义了一个名为`ObjectUtils`的类,其中包含两个静态方法:`Serialize`和`Deserialize`。这两个方法分别用于将对象序列化为字节数组(序列化)和将字节数组反序列化为对象(反序列化)。尽管使用了`[Obsolete]`属性标记为已过时,但它们仍然提供了使用`BinaryFormatter`进行序列化和反序列化的功能。总结:这份代码的功能是提供了使用BinaryFormatter进行对象序列化和反序列化的工具方法。
│ ├── OsVersionHelper.cs:这段代码的功能是提供一系列静态方法来检查操作系统版本,并根据不同的Windows版本返回相应的布尔值,同时提供方法来抛出异常,如果操作系统版本不支持当前操作。总结来说,这份代码是一个用于检测和验证Windows操作系统版本的辅助类。
│ ├── PrimaryScreen.cs:这段代码的功能是获取屏幕的当前物理分辨率大小。
│ ├── RegexHelper.cs:这段C#代码定义了一个名为`BetterGenshinImpact`的命名空间,其中包含一个名为`Helpers`的子命名空间。在`Helpers`命名空间内部,定义了一个静态部分类`RegexHelper`,该类包含两个静态部分方法,这两个方法都是部分生成的正则表达式。第一个正则表达式`ExcludeNumberRegex`用于匹配任何非数字字符的序列,即匹配除了数字以外的所有字符。第二个正则表达式`FullNumberRegex`用于匹配一个或多个连续的数字字符,即匹配完全由数字组成的字符串。总结这句话概括这份代码的功能是:这段代码定义了两个用于正则表达式匹配的静态方法,一个用于排除数字,另一个用于匹配完全由数字组成的字符串。
│ ├── ResourceHelper.cs:这段代码定义了一个名为`ResourceHelper`的静态类,它提供了从资源文件中读取字节、流和字符串的方法。这些方法使用Windows应用程序的资源管理机制来访问和读取资源。总结:该代码的功能是提供从Windows应用程序资源中读取数据的方法。
│ ├── RuntimeHelper.cs:这段代码是一个C#类库,用于辅助BetterGenshinImpact应用程序的运行时操作。它提供了检查程序是否以管理员权限运行、重启程序以管理员权限运行、检查程序是否为单实例运行以及检查关键文件是否存在的功能。总结:该代码的功能是提供辅助工具,以确保BetterGenshinImpact应用程序以管理员权限运行,并检查其关键文件和单实例运行状态。
│ ├── ScriptObjectConverter.cs:这段C#代码定义了一个名为`ScriptObjectConverter`的类,该类包含一个静态方法`ConvertTo<T>`,用于将一个`ScriptObject`对象转换为指定泛型类型`T`的实例。这个转换过程会尝试处理属性名的大小写差异,并且能够递归地将嵌套的`ScriptObject`也转换为相应的类型实例。总结:该代码的功能是将一个脚本对象转换为指定类型的对象实例。
│ ├── SecurityControlHelper.cs:这段代码的功能是设置指定文件夹的权限,允许“Everyone”和“Users”组拥有该文件夹的完全控制权限,并处理了权限设置过程中可能出现的异常。概括总结:该代码用于设置文件夹的安全权限,确保所有用户都能完全控制指定的文件夹。
│ ├── SemaphoreSlimParallel.cs:这段代码定义了一个名为`SemaphoreSlimParallel`的类,它实现了`IAsyncDisposable`接口,用于并行处理集合中的元素。它使用`SemaphoreSlim`来限制同时执行的任务数量,确保不超过指定的最大并行度。代码的主要功能是提供一个异步方法`ForEach`,该方法接受一个集合、一个处理集合中每个元素的异步操作和一个最大并行度,然后并行执行这些操作,并在所有操作完成后释放资源。总结:这段代码的功能是提供一个异步并行处理集合中元素的机制,同时限制并发执行的任务数量。
│ ├── SpeedTimer.cs:这段代码定义了一个名为`SpeedTimer`的类,用于记录和打印特定操作的时间。它使用`Stopwatch`来测量时间间隔,并将每个操作的时间记录在一个字典中。当调用`DebugPrint`方法时,它会打印出所有记录的时间,格式为操作名称和对应的时间(以毫秒为单位)。总结来说,这份代码的功能是“记录和打印特定操作的时间”。
│ ├── StringUtils.cs:这段C#代码定义了一个名为`StringUtils`的类,其中包含了一系列静态方法,用于处理字符串,包括移除空格和换行符、检查字符串是否包含中文字符、提取中文字符、尝试将字符串转换为数字类型,以及提取正整数。总结来说,这份代码的功能是提供一系列字符串处理和转换的辅助方法。
│ ├── TempManager.cs:这段代码定义了一个名为`TempManager`的类,它包含两个静态方法:`GetTempDirectory`和`CleanUp`。-`GetTempDirectory`方法用于获取一个临时目录的路径,如果该目录不存在,则创建它。它使用`Global.Absolute`方法来获取用户临时目录的绝对路径,并确保该目录存在。-`CleanUp`方法用于清理临时目录中的所有内容。它调用`DirectoryHelper.DeleteDirectoryRecursively`方法来递归删除临时目录及其所有子目录和文件。如果删除过程中出现异常,它会被捕获并抑制,以避免暴露错误信息。总结:这段代码的功能是管理一个临时目录的创建和清理。
│ ├── UIDispatcherHelper.cs:这段代码定义了一个名为`UIDispatcherHelper`的静态类,它提供了一系列方法来帮助在Windows应用程序中调用UI元素的操作,特别是在UI线程上执行操作。这些方法使用了`Dispatcher.Invoke`和`Dispatcher.BeginInvoke`来确保UI操作在正确的线程上执行。总结:该代码的功能是提供辅助方法来在Windows应用程序的UI线程上安全地调用UI元素。
│ ├── Ui/
│ │ ├── FileTreeNodeHelper.cs:这段代码的功能是创建一个文件树形结构,并提供了加载目录、加载子目录、过滤树形结构以及过滤空节点的方法。具体来说,它能够递归地构建一个包含文件和目录的树形结构,并允许用户通过路径过滤掉特定的目录节点,同时还能过滤掉没有子节点的目录节点。总结来说,这份代码的功能是构建和过滤文件树形结构。
│ │ └── WindowHelper.cs:这段代码的功能是帮助一个名为BetterGenshinImpact的应用程序设置窗口的背景样式,根据操作系统版本和配置选择合适的背景效果,如半透明、Mica或Acrylic。
│ ├── UrlProtocolHelper.cs:这段代码是一个C#类,名为`UrlProtocolHelper`,它提供了一系列方法来注册和注销一个自定义URL协议(名为"BetterGI"),并能够启动与该协议关联的应用程序。具体来说,它允许用户通过自定义协议来启动游戏《原神》(GenshinImpact),并检查该协议是否已正确注册。总结:该代码的功能是管理一个自定义URL协议,用于启动《原神》游戏。
│ └── User32Helper.cs:这段代码定义了一个名为`User32Helper`的类,其中包含一个静态方法`ToVk`。这个方法接受一个字符串参数`key`,该字符串代表一个WindowsAPI中的虚拟键(VirtualKey)常量。方法首先将字符串转换为大写,然后检查是否以`VK_`开头,如果不是,则添加`VK_`前缀。之后,使用`Enum.Parse`方法将字符串解析为`User32.VK`枚举类型的一个值。总结:这段代码的功能是将字符串形式的Windows虚拟键常量转换为对应的枚举值。
├── Hutao/
│ ├── HutaoNamedPipe.cs:这段C#代码定义了一个名为HutaoNamedPipe的类,它是一个密封类,实现了IDisposable接口。这个类用于通过命名管道与某个服务进行通信,它尝试连接到一个名为"Snap.Hutao.PrivateNamedPipe"的命名管道,并提供了检查连接是否成功的方法。以下是代码功能的概括总结:该代码实现了一个用于异步通信的命名管道客户端,用于连接到名为"Snap.Hutao.PrivateNamedPipe"的命名管道,并提供了一个检查连接是否成功的方法。
│ ├── PipePacketCommand.cs:这段C#代码定义了一个名为`PipePacketCommand`的枚举类型,它继承自`byte`类型,用于表示管道数据包命令。目前这个枚举只包含一个成员`None`,其值为0。这个枚举可能用于在`BetterGenshinImpact.Hutao`命名空间下的某个应用程序中,作为通信协议的一部分,用于标识不同的数据包命令。总结:这份代码的功能是定义了一个用于标识管道数据包命令的枚举类型。
│ ├── PipePacketContentType.cs:这段代码定义了一个名为`PipePacketContentType`的枚举,它用于表示管道数据包的内容类型。枚举中定义了两个值:`None`表示没有内容,`Json`表示内容是JSON格式的。这个枚举可能用于在某个游戏或应用程序中区分不同类型的数据包内容。总结:这份代码的功能是定义了一个用于标识管道数据包内容类型的枚举。
│ ├── PipePacketHeader.cs:这段C#代码定义了一个名为`PipePacketHeader`的结构体,用于表示一个管道数据包的头部信息。该结构体包含了版本号、数据包类型、命令、内容类型、内容长度和校验和等字段,并且使用了`StructLayout`特性来指定结构体的内存布局,确保字段紧凑排列。总结:这段代码的功能是定义了一个用于描述GenshinImpact游戏中Hutao模块管道数据包头部的结构体。
│ ├── PipePacketType.cs:这段代码定义了一个名为`PipePacketType`的枚举类型,它用于表示管道通信中不同类型的包。枚举中定义了四个值:`None`、`Request`、`Response`和`SessionTermination`,分别对应于没有包、请求包、响应包和会话终止包。每个值都关联了一个`byte`类型的整数,用于在通信中区分不同的包类型。总结:这段代码的功能是定义了一个用于管道通信中区分不同包类型的枚举。
│ └── PipeStreamExtension.cs:这段代码是一个C#扩展方法类,它扩展了`PipeStream`类,提供了用于读写自定义协议数据包的方法,这些数据包包含JSON格式的数据,并且使用XxHash64算法进行数据完整性校验。总结:该代码实现了对通过命名管道传输的JSON格式数据包的读写操作,并确保了数据包的完整性。
├── Markup/
│ ├── ConverterExtension.cs:这段代码定义了一个名为`ConverterExtension`的自定义`MarkupExtension`类,用于在XAML中提供值转换功能。它允许开发者将一个值通过指定的转换器转换成另一种类型,并可以指定转换参数和区域设置。总结:该代码的功能是允许在XAML中通过自定义转换器扩展值转换功能。
│ └── ServiceLocatorExtension.cs:这段C#代码定义了一个名为`ServiceLocatorExtension`的自定义`MarkupExtension`类,它用于在XAML中动态地查找和注入服务。该类继承自`MarkupExtension`,并重写了`ProvideValue`方法,以便在XAML中使用时能够提供所需的服务实例。总结:这份代码的功能是在XAML中提供一种方式来动态地查找和注入服务实例。
├── Model/
│ ├── Condition.cs:这段C#代码定义了一个名为`Condition`的类,它使用`ObservableObject`来支持数据绑定。该类包含以下属性:-`_subject`:表示条件的主体,是一个字符串。-`_predicate`:表示条件的谓语,默认值为"包含"。-`_object`:表示条件的宾语,是一个`ObservableCollection<string>`,用于存储字符串列表。-`_result`:表示条件的结果,是一个字符串。此外,还有一个私有属性`_Definition`,它是一个`ConditionDefinition`类型的属性,用于存储与主体相关联的条件定义。如果主体为空,则返回一个空的`ConditionDefinition`实例。类中还包含一个`OnSubjectChanged`方法,当`_subject`属性发生变化时会被调用。在这个方法中,它会清空宾语列表`_object`,并通知`Definition`属性的变化。总结来说,这份代码的功能是定义了一个可观察的对象模型,用于表示一个条件,包括主体、谓语、宾语和结果,并支持与条件定义的数据绑定。
│ ├── ConditionDefinition.cs:这段代码定义了一个用于《原神》游戏自动战斗插件的数据模型,它包含了不同类型的条件定义,如采集物、动作和队伍中角色,以及相应的配置选项和描述。概括总结这份代码的功能是:为《原神》自动战斗插件提供条件配置模型,以支持游戏中的自动战斗策略。
│ ├── FileTreeNode{T}.cs:这段代码定义了一个泛型类`FileTreeNode<T>`,它继承自`ObservableObject`,这意味着它支持数据绑定。该类用于表示文件树结构中的节点,其中`T`是节点值的类型。以下是代码的主要功能:该代码定义了一个文件树节点的模型,用于在应用程序中展示文件系统结构,包括文件名、版本、作者、是否展开、是否为目录、文件名、完整路径、图标路径以及节点值和子节点列表。
│ ├── HotKey.cs:这段代码定义了一个名为`HotKey`的结构体,用于表示热键,包括键(如Ctrl、Shift等)、修饰键和鼠标按钮。它提供了将热键转换为字符串的`ToString`方法,从字符串解析热键的`FromString`方法,以及一个静态的`None`属性表示一个空的热键。总结来说,这份代码的功能是定义并操作热键结构体,以便于在应用程序中处理和表示热键。
│ ├── HotKeySettingModel.cs:这段代码定义了一个C#类`HotKeySettingModel`,用于管理热键设置,包括全局热键和键盘/鼠标监听,并提供注册和注销热键的功能。概括总结,这份代码的功能是提供一个热键配置模型,用于管理游戏《原神》中的快捷键设置。
│ ├── HotKeyTypeEnum.cs:这段代码定义了一个名为`HotKeyTypeEnum`的枚举类型,用于表示热键的类型,并包含两个枚举值:`GlobalRegister`和`KeyboardMonitor`。同时,它还定义了一个静态类`HotKeyTypeEnumExtension`,该类包含一个扩展方法`ToChineseName`,该方法将枚举值转换为对应的中文描述。总结来说,这份代码的功能是提供一个枚举类型及其扩展方法,用于将热键类型转换为中文描述。
│ ├── KeyBindingSettingModel.cs:这段C#代码定义了一个名为`KeyBindingSettingModel`的类,它似乎用于表示键绑定设置,并且使用了`ObservableObject`来支持数据绑定。以下是代码的详细分析:1.`KeyBindingSettingModel`类继承自`ObservableObject`,这意味着它支持MVVM(Model-View-ViewModel)模式,可以轻松地将数据变化通知给视图。2.类中有几个属性:-`_keyValue`:表示按键绑定的值,使用`ObservableProperty`属性标记,以便在属性值改变时通知视图。-`_children`:一个`ObservableCollection`,用于存储子键绑定设置模型,同样使用`ObservableProperty`标记。-`ActionName`:表示动作名称。-`_isDirectory`:表示这个键绑定设置是否是一个文件夹,而不是一个具体的按键绑定。-`ConfigPropertyName`:表示配置属性的名称。3.类有两个构造函数:-第一个构造函数接受一个`name`参数,用于创建一个表示文件夹的`KeyBindingSettingModel`实例。-第二个构造函数接受`actionName`、`configPropertyName`和`keyValue`参数,用于创建一个表示具体按键绑定的`KeyBindingSettingModel`实例。4.`IsExpanded`属性返回`true`,这表明默认情况下,文件夹是展开的。总结:这份代码的功能是定义一个用于表示键绑定设置的模型类,支持文件夹和具体按键绑定的表示,并支持数据绑定。
│ ├── KeyMouseScriptItem.cs:这段C#代码定义了一个名为`KeyMouseScriptItem`的类,它继承自`ObservableObject`,这是CommunityToolkit库中的一个类,用于简化MVVM(Model-View-ViewModel)模式中的数据绑定。该类包含以下属性:-`_name`:一个只读的`ObservableProperty`,表示脚本项的名称。-`_createTimeStr`:一个只读的`ObservableProperty`,表示脚本项的创建时间字符串。-`CreateTime`:一个公共的`DateTime`属性,表示脚本项的实际创建时间。-`Path`:一个公共的字符串属性,表示脚本项的路径。总结:这份代码的功能是定义一个用于存储和绑定键鼠脚本项信息的模型类。
│ ├── KeyboardHook.cs:这段代码的功能是创建一个键盘钩子,用于监听特定键(如GenshinImpact游戏中的按键)的按下和释放事件,并在按下时执行相应的动作,支持长按持续触发动作。
│ ├── MaskButton.cs:这段代码定义了一个名为`MaskButton`的类,它似乎用于表示游戏中的按钮,如《原神》中的某个界面元素。这个类包含按钮的名称、位置(X和Y坐标)、宽度和高度,以及一个点击事件的处理命令。代码中使用了`RelayCommand`来创建一个命令,该命令与一个动作关联,当按钮被点击时执行。此外,类中还重写了`Equals`和`GetHashCode`方法,以便基于按钮的名称进行比较和哈希化。总结:这段代码的功能是定义一个用于表示游戏界面中按钮的模型类。
│ ├── MouseHook.cs:这段代码的功能是创建一个C#类`MouseHook`,用于监听和模拟鼠标事件,特别是针对游戏《原神》中的鼠标操作,支持鼠标按键的绑定、长按操作和事件触发。总结一句话:该代码实现了一个用于游戏《原神》的鼠标事件监听和模拟的钩子类。
│ ├── Notice.cs:这段C#代码定义了一个名为`Notice`的类,它包含一个名为`Version`的公共属性,该属性用于存储版本信息。`Version`属性的默认值是一个空字符串`string.Empty`。总结:这份代码的功能是定义一个用于存储游戏《原神》版本信息的模型类。
│ ├── OneDragonTaskItem.cs:这段代码定义了一个名为`OneDragonTaskItem`的类,它是一个用于管理GenshinImpact游戏任务的模型。该类包含任务名称、状态颜色、启用状态和视图模型等属性,并提供了一个初始化任务动作的方法,根据不同的任务名称执行不同的游戏操作。总结:该代码的功能是管理GenshinImpact游戏中的任务,根据任务名称执行相应的游戏操作。
│ ├── SettingItem.cs:这段代码定义了一个名为`SettingItem`的类,它代表了一个设置项,可以转换为对应的UI控件。该类具有名称、类型、标签、选项和默认值等属性,并且提供了一个`ToControl`方法,该方法根据设置项的类型动态创建相应的UI元素(如TextBox、ComboBox、CheckBox等),并将这些元素添加到一个列表中返回。总结:该代码的功能是创建一个设置项到UI控件的映射器。
│ ├── Singleton.cs:这段代码实现了一个通用的单例模式,用于创建一个类型为T的类的单例实例,并提供了一个方法来销毁该实例。概括总结这份代码的功能是:提供了一个基于反射的通用单例模式实现,用于确保一个类只有一个实例,并提供一个全局访问点。
│ ├── StatusItem.cs:这段代码定义了一个名为`StatusItem`的类,它是一个`ObservableObject`,用于跟踪一个可观察对象的状态。该类可以监控另一个对象(`sourceObject`)的特定属性(`propertyName`)的变化,并根据该属性值更新自己的`IsEnabled`属性。总结来说,这份代码的功能是创建一个可以响应外部对象属性变化的本地状态监控器。
│ └── UpdateOption.cs:这段C#代码定义了一个名为`UpdateOption`的密封类,它包含一个名为`Trigger`的公共属性,该属性的类型为`UpdateTrigger`枚举。`UpdateTrigger`枚举定义了两个可能的值:`Auto`和`Manual`。这个类和枚举可能用于表示更新选项,其中`Trigger`属性用于指定更新是自动触发还是手动触发。总结:这份代码的功能是定义了一个用于表示更新触发方式的枚举和一个包含该枚举值的类。
├── Properties/
│ ├── PublishProfiles/
├── Service/
│ ├── ApplicationHostService.cs:这段代码定义了一个名为`ApplicationHostService`的类,它继承自`IHostedService`,用于管理一个应用程序的生命周期。该类负责在应用程序启动时创建主窗口,并在应用程序关闭时执行必要的清理工作。概括总结:该代码的功能是作为应用程序的主托管服务,负责启动和关闭应用程序,并管理主窗口的显示和导航。
│ ├── ConfigService.cs:这段代码是一个C#类,名为`ConfigService`,它实现了`IConfigService`接口。该类的主要功能是管理一个配置文件,它可以从文件中读取配置数据,并在UI线程中提供配置数据,同时确保配置数据的线程安全。总结:该代码的功能是提供线程安全的配置文件读取和保存服务。
│ ├── Interface/
│ │ ├── IConfigService.cs:这段代码定义了一个名为`IConfigService`的接口,该接口包含了四个方法,用于获取、保存、读取和写入配置信息。具体来说:-`Get()`方法用于获取配置对象。-`Save()`方法用于保存配置信息。-`Read()`方法用于读取配置信息。-`Write(AllConfigconfig)`方法用于写入一个配置对象。总结:这份代码的功能是定义了一个配置服务接口,用于管理配置信息的获取、保存、读取和写入操作。
│ │ ├── IScriptService.cs:这段代码定义了一个名为`IScriptService`的接口,该接口包含一个名为`RunMulti`的异步方法。这个方法接受一个`ScriptGroupProject`类型的`IEnumerable`集合和一个可选的`groupName`字符串参数。根据命名空间和代码片段,可以推测这个接口是用于管理或执行与《原神》游戏相关的脚本服务。概括总结:这份代码的功能是定义一个用于执行多个《原神》游戏脚本的接口。
│ │ └── IUpdateService.cs:这段代码定义了一个名为`IUpdateService`的接口,该接口包含一个异步方法`CheckUpdateAsync`。这个方法接受一个`UpdateOption`类型的参数,并返回一个`Task`,表示这是一个异步操作。方法注释说明该接口用于检查更新,并在需要时完成更新。总结:这份代码的功能是定义一个用于检查和执行更新的异步服务接口。
│ ├── Notification/
│ │ ├── Converter/
│ │ │ ├── BaseDateTimeJsonConverter.cs:这段代码定义了一个名为`BaseDateTimeJsonConverter`的自定义JSON转换器,用于在序列化和反序列化过程中处理`DateTime`类型的值。它接受一个日期格式字符串作为参数,并在序列化时使用该格式将日期转换为字符串,在反序列化时尝试使用该格式将字符串解析为日期。总结:该代码的功能是提供一个自定义的日期格式化JSON转换器。
│ │ │ ├── DateTimeJsonConverter.cs:这段C#代码定义了一个名为`DateTimeJsonConverter`的类,它继承自`BaseDateTimeJsonConverter`类。`BaseDateTimeJsonConverter`类可能是一个基类,用于提供日期时间格式化的功能。在这个派生类中,构造函数接受一个字符串参数`"yyyy-MM-ddHH:mm:ss"`,这表示日期时间的格式。`JsonSerializer`可能用于将日期时间对象序列化为JSON格式,并使用这个自定义的转换器来指定日期时间的格式。总结这句话概括这份代码的功能是:这段代码定义了一个自定义的日期时间JSON转换器,用于将日期时间对象序列化为指定格式的JSON字符串。
│ │ │ └── ImageToBase64Converter.cs:这段代码定义了一个名为`ImageToBase64Converter`的类,它实现了`JsonConverter<Image>`接口,用于将`Image`对象转换为Base64字符串,并将Base64字符串转换回`Image`对象。具体来说,它提供了两个方法:`Read`用于从Base64字符串中解析出`Image`对象,而`Write`方法则将`Image`对象转换为Base64字符串。总结:该代码的功能是提供将图像对象与Base64字符串之间相互转换的序列化支持。
│ │ ├── Model/
│ │ │ ├── Base/
│ │ │ │ ├── DomainDetails.cs:这段C#代码定义了一个名为`DomainDetails`的类,该类包含三个属性:`DomainName`(域名)、`RunCount`(运行次数)和`RewardStatus`(奖励状态)。这个类似乎用于存储与某个领域相关的详细信息,可能用于游戏或应用程序中的某个功能,如GenshinImpact的某个服务或模块。总结:这段代码的功能是定义一个用于存储领域详细信息的模型类。
│ │ │ │ ├── GeniusInvocationDetails.cs:这段C#代码定义了一个名为`GeniusInvocationDetails`的类,该类用于存储与《原神》游戏相关的通知信息。具体来说,它包含以下属性:-`GameState`:表示游戏状态,类型为`string`,默认值为空字符串。-`RoundNumber`:表示回合数,类型为`int`。-`OpponentName`:表示对手名称,类型为`string`,默认值为空字符串。总结:这份代码的功能是定义一个用于存储《原神》游戏中召唤师召唤详情的基类模型。
│ │ │ │ └── ScriptDetails.cs:这段C#代码定义了一个名为`ScriptDetails`的类,该类包含两个属性:`ScriptName`和`ScriptPath`。`ScriptName`用于存储脚本的名称,而`ScriptPath`用于存储脚本的路径。这个类似乎是为了在某个与《原神》游戏相关的服务中处理脚本信息而设计的。以下是代码的详细分析:-`namespaceBetterGenshinImpact.Service.Notification.Model.Base;`:这行代码定义了一个命名空间,名为`BetterGenshinImpact.Service.Notification.Model.Base`,这表明这个类是`BetterGenshinImpact`项目的一部分,属于`Service`层中的`Notification`模块,位于`Model`目录下的`Base`子目录。-`publicclassScriptDetails`:这行代码声明了一个名为`ScriptDetails`的公共类。-`publicstringScriptName{get;set;}=string.Empty;`:这个属性表示脚本的名称,它是一个公共的字符串类型。`get;set;`表示这个属性有getter和setter方法,允许外部代码读取和设置这个属性的值。默认值为`string.Empty`,表示如果没有指定值,则默认为空字符串。-`publicstringScriptPath{get;set;}=string.Empty;`:这个属性表示脚本的路径,也是一个公共的字符串类型,与`ScriptName`属性类似,也有getter和setter方法,默认值为空字符串。总结:这份代码的功能是定义一个用于存储和访问脚本名称和路径的基类。
│ │ │ ├── BaseNotificationData.cs:这段代码定义了一个名为`BaseNotificationData`的类,用于处理和发送游戏中的通知数据。该类包含事件名称、结果、触发时间、截图、消息和额外数据等属性,并提供了一系列方法来发送通知,包括成功、失败和错误情况,同时支持发送带有截图的通知。总结来说,这份代码的功能是创建和管理游戏中的通知数据,并能够发送包含不同结果的个性化通知。
│ │ │ ├── DomainNotificationData.cs:这段C#代码定义了一个名为`DomainNotificationData`的类,它继承自`BaseNotificationData`类。这个类包含一个名为`Domain`的属性,该属性是一个可选的`AutoDomainParam`类型的引用。`AutoDomainParam`和`BaseNotificationData`类以及相关的命名空间和枚举类型`Notification.Model.Enum`都来自一个名为`BetterGenshinImpact`的命名空间,这表明这个类可能是用于与《原神》游戏相关的通知服务。总结这句话概括这份代码的功能是:定义了一个用于存储与《原神》游戏相关的域信息的通知数据模型。
│ │ │ ├── Enum/
│ │ │ │ ├── NotificationEvent.cs:这段C#代码定义了一个名为`NotificationEvent`的枚举类,它包含了一系列静态只读字段,每个字段代表一个通知事件,包括一个事件代码和一个描述性消息。这些事件可能用于在游戏《原神》的辅助工具或服务中触发和显示不同的通知。总结:这份代码的功能是定义一个枚举类,用于表示《原神》辅助工具中的各种通知事件及其描述。
│ │ │ │ └── NotificationEventResult.cs:这段C#代码定义了一个名为`NotificationEventResult`的枚举类型,它包含了三个成员:`Success`、`Fail`和`PartialSuccess`。这个枚举类型看起来是用来表示通知事件处理结果的,其中`Success`表示事件处理成功,`Fail`表示事件处理失败,而`PartialSuccess`则表示事件处理部分成功。总结这句话概括这份代码的功能是:定义了一个枚举,用于表示通知事件处理结果的类型。
│ │ │ ├── GeniusInvocationNotificationData.cs:这段C#代码定义了一个名为`GeniusInvocationNotificationData`的类,它继承自`BaseNotificationData`类。这个类包含一个名为`GeniusInvocation`的属性,该属性是一个可选的`Duel`类型的引用,用于表示与神灵召唤相关的信息。此外,这个类使用了`System.Text.Json.Serialization`命名空间中的`JsonSerializable`特性,这意味着它可以被序列化和反序列化为JSON格式。总结:这份代码的功能是定义一个用于表示神灵召唤通知数据的模型类。
│ │ │ ├── NotificationTestResult.cs:这段C#代码定义了一个名为`NotificationTestResult`的类,用于表示通知测试的结果。该类包含两个属性:`IsSuccess`表示操作是否成功,`Message`表示操作的结果信息。此外,还提供了两个静态方法`Success`和`Error`,分别用于创建成功和错误的通知测试结果实例。总结:这段代码的功能是定义一个用于表示通知测试结果的模型类。
│ │ │ └── ScriptNotificationData.cs:这段C#代码定义了一个名为`ScriptNotificationData`的类,它继承自`BaseNotificationData`类。这个类包含一个名为`Script`的属性,该属性是一个可选的`ScriptGroupProject`类型的引用。`ScriptGroupProject`和`BaseNotificationData`类以及相关的命名空间都来自于一个名为`BetterGenshinImpact`的项目。`ScriptGroupProject`可能是一个枚举或类,用于表示与GenshinImpact脚本相关的项目信息。`BaseNotificationData`可能是一个基类,用于定义通知数据的基本属性。总结这句话概括这份代码的功能是:定义了一个用于存储GenshinImpact脚本通知数据的类。
│ │ ├── NotificationConfig.cs:这段代码定义了一个名为`NotificationConfig`的C#类,它使用CommunityToolkit的ObservableObject来支持数据绑定。该类包含多个属性,用于配置不同类型的通知设置,如Webhook通知、WindowsUWP通知、飞书通知和企业微信通知。每个通知类型都有是否启用和通知地址的配置。总结:这份代码的功能是配置一个游戏辅助工具的通知系统,允许用户设置不同通知服务的启用状态和地址。
│ │ ├── NotificationService.cs:这段代码是一个C#的类,名为`NotificationService`,它实现了`IHostedService`接口,用于在.NETCore应用程序中作为后台服务运行。该服务的主要功能是管理不同类型的通知发送器(如Webhook、WindowsUWP通知、飞书通知、企业微信通知等),并能够根据配置发送通知到不同的通知平台。总结:该代码的功能是管理并发送游戏《原神》相关的通知到不同的通知平台。
│ │ └── Notify.cs:这段C#代码定义了一个名为`Notify`的类,其中包含两个静态方法`Event`。这两个方法都用于创建一个`BaseNotificationData`对象,该对象包含一个名为`Event`的字段,用于存储事件名称或事件枚举的代码。总结:这段代码的功能是提供创建基础通知数据对象的方法,该对象可以接受事件名称或事件枚举作为输入。
│ ├── Notifier/
│ │ ├── Exception/
│ │ │ └── NotifierException.cs:这段C#代码定义了一个名为`NotifierException`的类,它继承自`System.Exception`类。这个类接受一个字符串参数`message`,用于初始化异常信息。概括总结,这份代码的功能是创建一个自定义异常类,用于封装与通知服务相关的异常信息。
│ │ ├── FeishuNotifier.cs:这段代码定义了一个名为FeishuNotifier的类,它实现了INotifier接口,用于发送通知到飞书(Feishu)平台。该类使用HttpClient发送HTTPPOST请求,将通知内容转换为JSON格式,并通过飞书提供的webhookendpoint发送。总结:该代码的功能是发送通知到飞书平台。
│ │ ├── Interface/
│ │ │ └── INotifier.cs:这段C#代码定义了一个名为`INotifier`的接口,该接口包含两个成员:一个只读属性`Name`和一个异步方法`SendAsync`。`Name`属性用于获取通知器的名称,而`SendAsync`方法用于异步发送一个基于`BaseNotificationData`类型的通知数据。总结:这份代码的功能是定义一个通知器接口,用于异步发送通知数据。
│ │ ├── NotifierManager.cs:这段代码定义了一个名为`NotifierManager`的类,它管理一个通知器列表,并提供方法来注册、移除、获取和发送通知。该类使用异步方法发送通知,并记录发送失败的情况。总结:该代码的功能是管理并异步发送通知。
│ │ ├── WebhookNotifier.cs:这段代码定义了一个名为`WebhookNotifier`的类,它实现了`INotifier`接口,用于通过HTTPPOST请求发送通知到指定的Webhook地址。该类使用`HttpClient`来发送请求,并使用`JsonSerializer`来序列化通知数据。总结:该代码的功能是使用Webhook发送JSON格式的通知数据。
│ │ ├── WindowsUwpNotifier.cs:这段代码定义了一个名为`WindowsUwpNotifier`的类,它实现了`INotifier`接口。该类用于发送WindowsUWP风格的桌面通知,它可以将通知数据(包括消息和截图)转换为桌面通知并显示给用户。总结:该代码的功能是创建并显示WindowsUWP风格的桌面通知。
│ │ └── WorkWeixinNotifier.cs:这段代码定义了一个名为`WorkWeixinNotifier`的类,它实现了`INotifier`接口,用于通过WorkWeixinAPI发送通知。该类使用HttpClient发送HTTPPOST请求,将通知内容转换为JSON格式,并通过WorkWeixin的webhookendpoint发送。总结:该代码的功能是使用WorkWeixinAPI发送文本消息通知。
│ ├── PageService.cs:这段代码定义了一个名为`PageService`的类,它实现了`IPageService`接口。这个服务类用于提供页面实例,以便在WPF应用程序中进行导航。它通过`IServiceProvider`获取页面实例,并确保这些页面是WPF的`FrameworkElement`类型。总结:该代码的功能是提供一个服务,用于在WPF应用程序中获取和管理页面实例。
│ ├── ScriptService.cs:这段代码是一个C#服务类,用于管理GenshinImpact游戏中的脚本任务,包括执行脚本、处理定时器操作、监控游戏状态以及发送通知。总结来说,这份代码的功能是“管理并执行GenshinImpact游戏中的脚本任务”。
│ └── UpdateService.cs:这段C#代码是一个名为`UpdateService`的类,它实现了`IUpdateService`接口,用于检查和更新一个名为BetterGenshinImpact的应用程序。该服务通过HTTP请求获取最新版本信息,并在发现新版本时显示一个更新窗口,允许用户选择更新方式。
├── User/
│ ├── AutoFight/
│ │ └── 群友分享/
│ ├── AutoGeniusInvokation/
│ ├── AutoSkip/
├── View/
│ ├── Behavior/
│ │ └── RightClickSelectBehavior.cs:这段代码定义了一个名为`RightClickSelectBehavior`的静态类,它是一个附加属性行为,用于实现当用户在WPF的`TreeView`控件上右击时,自动选择被点击的`TreeViewItem`。总结来说,这份代码的功能是“允许用户通过右击`TreeView`控件来选择对应的`TreeViewItem`”。
│ ├── CaptureTestWindow.xaml.cs:这段代码是一个C#WPF应用程序的一部分,它创建了一个名为`CaptureTestWindow`的窗口类,用于捕获和显示游戏窗口的截图。代码的主要功能是启动一个游戏窗口的截图过程,并在每次渲染时捕获屏幕图像,然后将捕获的图像显示在窗口中,同时记录截图和转换图像的时间。总结来说,这份代码的功能是创建一个窗口,用于捕获并实时显示指定游戏窗口的截图。
│ ├── Controls/
│ │ ├── CodeEditor/
│ │ │ ├── CodeBox.cs:这段代码定义了一个名为`CodeBox`的类,它继承自`TextEditor`,并扩展了基本的文本编辑功能。它包含一个名为`Code`的属性,用于获取和设置编辑器中的代码字符串。此外,它还提供了`LineWrap`属性来控制是否启用行内换行。`CodeBox`类还设置了文本编辑器的样式,包括显示行号、设置选区颜色和边框等。总结:这段代码的功能是创建一个具有特定样式和功能的代码编辑器控件。
│ │ │ └── JsonCodeBox.cs:这段代码定义了一个名为`JsonCodeBox`的类,它继承自`CodeBox`类。这个类的主要功能是为JSON格式的代码提供语法高亮显示。具体来说,它通过加载一个XML定义的语法高亮规则文件来注册JSON文件的高亮显示,并将其设置为编辑器控件`SyntaxHighlighting`的值。总结:该代码的功能是为JSON文件提供语法高亮显示功能。
│ │ ├── Draggable/
│ │ │ ├── Adorners/
│ │ │ │ ├── DoubleFormatConverter.cs:这段代码定义了一个名为`DoubleFormatConverter`的类,它实现了`IValueConverter`接口。这个转换器的作用是将传入的`double`类型值四舍五入到最接近的整数,并在转换回原始值时返回`null`。总结来说,这份代码的功能是提供一个将`double`值四舍五入为整数的转换器。
│ │ │ │ ├── ResizeRotateAdorner.cs:这段代码定义了一个名为`ResizeRotateAdorner`的类,它继承自`Adorner`类,用于在WPF(WindowsPresentationFoundation)中为`ContentControl`元素添加可调整大小和旋转的装饰器。这个装饰器包含一个`ResizeRotateChrome`控件,它被添加到装饰器的视觉集合中,并且可以根据传入的`ContentControl`元素的大小进行排列。总结:这段代码的功能是创建一个可调整大小和旋转的装饰器,用于WPF中的`ContentControl`元素。
│ │ │ │ ├── ResizeRotateChrome.cs:这段C#代码定义了一个名为`ResizeRotateChrome`的自定义控件,继承自`Control`。它使用了`System.Windows`和`System.Windows.Controls`命名空间,这表明它是在WPF(WindowsPresentationFoundation)环境中编写的。代码中包含了一个静态构造函数,其中使用了`DefaultStyleKeyProperty`的`OverrideMetadata`方法。这个方法用于指定`ResizeRotateChrome`控件的默认样式键,这样当使用这个控件时,它会自动应用`ResizeRotateChrome`的样式。总结来说,这份代码的功能是定义了一个可以自定义样式的WPF控件,用于在《原神》游戏中可能用于调整大小和旋转的装饰性元素。
│ │ │ │ ├── SizeAdorner.cs:这段代码定义了一个名为`SizeAdorner`的类,它继承自`Adorner`类,用于在WPF(WindowsPresentationFoundation)应用程序中为`ContentControl`控件添加尺寸装饰器。这个装饰器包含一个`SizeChrome`控件,用于显示和控制尺寸信息。总结:这段代码的功能是为WPF中的`ContentControl`控件添加尺寸装饰器。
│ │ │ │ └── SizeChrome.cs:这段C#代码定义了一个名为`SizeChrome`的类,它继承自`Control`类,并且是用于WPF(WindowsPresentationFoundation)的一个自定义控件。代码中使用了`DefaultStyleKeyProperty`来指定该控件的默认样式键,这通常用于在XAML中引用该控件时能够正确地应用样式。总结:这份代码的功能是定义了一个WPF自定义控件`SizeChrome`。
│ │ │ ├── DesignerItemDecorator.cs:这段代码定义了一个名为`DesignerItemDecorator`的C#类,它继承自`Control`类,用于在WPF应用程序中装饰`ContentControl`元素,提供缩放和旋转的装饰器。具体来说,它通过一个`Adorner`来显示装饰效果,并根据`ShowDecorator`属性的值来控制装饰器的显示与隐藏。总结:该代码的功能是提供一个用于在WPF中装饰和操作`ContentControl`元素的装饰器控件。
│ │ │ ├── MoveThumb.cs:这段代码定义了一个名为`MoveThumb`的C#类,它继承自`Thumb`控件,用于在WPF应用程序中实现控件的拖动和旋转功能。该控件在拖动时能够根据旋转角度调整拖动距离,从而实现更精确的控件定位。总结:该代码实现了一个可旋转和拖动的控件,用于在WPF界面中精确移动和定位其他控件。
│ │ │ ├── ResizeThumb.cs:这段代码定义了一个名为`ResizeThumb`的C#类,它继承自`Thumb`控件,用于在WPF应用程序中实现控件的尺寸调整功能。该控件支持旋转和缩放,并且可以在拖动时动态更新控件的大小和位置。总结来说,这份代码的功能是创建一个可旋转和调整大小的控件。
│ │ │ ├── RotateThumb.cs:这段代码定义了一个名为`RotateThumb`的C#类,它继承自`Thumb`控件,用于在WPF应用程序中实现一个可旋转的控件。该控件允许用户通过拖动来旋转其父`ContentControl`控件。总结:该代码实现了一个可旋转的WPF控件,允许用户通过拖动来旋转其父控件。
│ │ ├── HotKey/
│ │ │ └── HotKeyTextBox.cs:这段代码定义了一个名为`HotKeyTextBox`的C#类,它继承自`Wpf.Ui.Controls.TextBox`。这个类用于创建一个文本框,专门用于配置热键。它能够处理键盘输入和鼠标侧键点击,并将配置的热键信息存储在`HotKey`属性中。总结来说,这份代码的功能是创建一个用于配置和显示热键的文本框控件。
│ │ ├── KeyBindings/
│ │ │ └── KeyBindingTextBox.cs:这段代码定义了一个名为`KeyBindingTextBox`的C#类,它继承自`TextBox`并用于在WPF应用程序中创建一个只读的文本框,用于显示和绑定按键。该文本框能够将用户输入的按键或鼠标按钮转换为内部表示的`KeyId`,并将其显示在文本框中。总结:该代码的功能是创建一个用于显示和绑定按键的只读文本框。
│ │ ├── Style/
│ │ ├── TwoStateButton.cs:这段代码定义了一个名为`TwoStateButton`的C#类,它继承自`Button`类,并扩展了按钮的功能,使其能够根据一个布尔值`IsChecked`的状态显示不同的内容和图标。当按钮处于启用状态时,它显示启用内容、启用图标和启用命令;当按钮处于禁用状态时,它显示禁用内容、禁用图标和禁用命令。总结:这段代码的功能是创建一个具有两种状态(启用和禁用)的按钮,每种状态都有不同的内容和图标。
│ │ ├── Webview/
│ │ │ ├── WebpagePanel.cs:这段代码定义了一个名为`WebpagePanel`的C#类,它是一个用户控件(UserControl),用于在WPF应用程序中嵌入和显示WebView2控件。该控件可以加载和显示网页内容,并提供了导航到本地文件或HTML字符串的功能,同时支持下载路径的设置。总结:该代码的功能是创建一个WPF用户控件,用于嵌入WebView2控件以显示网页内容,并提供文件和HTML内容的导航功能。
│ │ │ └── WebpageWindow.cs:这段代码定义了一个名为`WebpageWindow`的C#类,它继承自`Window`类,并用于在WPF应用程序中显示网页内容。该类包含一个`WebView2`控件,可以用来加载和显示网页或HTML内容。以下是代码的主要功能:-`WebpageWindow`类是一个自定义的窗口,用于显示网页内容。-它包含一个`WebpagePanel`属性,该属性是一个`WebpagePanel`类型的对象,它是窗口的内容。-`WebView`属性提供了对`WebView2`控件的访问,这是用于显示网页内容的控件。-构造函数中创建了一个`WebpagePanel`实例并将其设置为窗口的内容。-`OnSourceInitialized`方法重写自`Window`类,用于在窗口初始化后应用系统背光效果。-`NavigateToUri`方法允许将窗口导航到一个指定的`Uri`。-`NavigateToHtml`方法允许将窗口导航到一段HTML内容。-`NavigateToFile`方法允许将窗口导航到一个本地文件路径。总结:这份代码的功能是创建一个WPF窗口,用于通过WebView2控件加载和显示网页或HTML内容。
│ │ ├── WpfUi/
│ │ └── WpfUiWindow.cs:这段代码定义了一个名为`WpfUiWindow`的C#类,它继承自`FluentWindow`,这是一个用于创建具有现代UI风格的窗口的类。该窗口包含一个`ContentControl`控件,用于动态加载内容。窗口的初始化包括设置最小尺寸、窗口启动位置、窗口标题栏的图标等,并将一个`Grid`控件作为窗口的内容,其中包含一个`StackPanel`用于放置`DynamicContent`控件。总结来说,这份代码的功能是创建一个具有自定义标题栏和动态内容加载功能的现代UI窗口。
│ ├── Converters/
│ │ ├── BooleanToEnableTextConverter.cs:这段代码定义了一个名为`BooleanToEnableTextConverter`的自定义转换器,它将布尔值转换为`Visibility`类型,用于在WPF应用程序中根据布尔值显示或隐藏控件。具体来说,当布尔值为字符串"Enabled"时,转换器返回`Visibility.Visible`,而当布尔值为`false`时,转换器返回`Visibility.Collapsed`。总结:该代码的功能是将布尔值转换为WPF中用于控制控件可见性的`Visibility`类型。
│ │ ├── BooleanToVisibilityRevertConverter.cs:这段代码定义了一个名为`BooleanToVisibilityRevertConverter`的自定义转换器,它将布尔值转换为`Visibility`类型,当布尔值为`true`时,返回`Visibility.Collapsed`,否则返回`Visibility.Visible`。其逆转换器则将`Visibility.Collapsed`转换为`true`布尔值。总结:该代码的功能是将布尔值与`Visibility`属性进行逆向转换。
│ │ ├── InverseBooleanConverter.cs:这段代码定义了一个名为`InverseBooleanConverter`的自定义转换器,它实现了`IValueConverter`接口。这个转换器可以将一个布尔值转换为它的逻辑非(即,如果原始值为`true`,则转换为`false`,反之亦然)。总结来说,这份代码的功能是创建一个布尔值反转转换器。
│ │ └── NotNullConverter.cs:这段代码定义了一个名为`NotNullConverter`的类,它实现了`IValueConverter`接口。这个转换器用于将传入的值转换为布尔类型,如果传入的值不是`null`,则返回`true`,否则返回`false`。在反向转换(`ConvertBack`)方法中,它抛出了一个`NotImplementedException`异常,表明这个方法尚未实现。总结:这份代码的功能是创建一个转换器,用于将任何非`null`值转换为布尔值`true`。
│ ├── Drawable/
│ │ ├── DrawContent.cs:这段代码定义了一个名为`DrawContent`的类,它用于管理在遮罩窗口上绘制的图形内容,包括矩形、文本和线条。它使用`ConcurrentDictionary`来存储这些图形对象,并提供方法来添加、移除和清除这些内容,同时确保在修改内容时窗口能够刷新以显示最新的绘制结果。总结:该代码的功能是管理遮罩窗口上的图形绘制内容。
│ │ ├── LineDrawable.cs:这段C#代码定义了一个名为`LineDrawable`的类,它代表了一个在二维空间中的直线。这个类包含两个`Point`类型的属性`P1`和`P2`,分别代表直线的起点和终点。还有一个`Pen`属性,用于定义绘制直线时使用的画笔样式,默认为红色,宽度为2像素。类中还包含两个构造函数,一个接受两个点的坐标作为参数,另一个接受两个`Point`对象作为参数。此外,还有一个未使用的构造函数,它原本用于将OpenCV的点坐标转换为Windows的点坐标,但被注释掉了。`Equals`和`GetHashCode`方法被重写,用于比较两个`LineDrawable`对象是否相等,基于它们的起点和终点坐标。总结来说,这份代码的功能是定义了一个用于表示和操作二维空间中直线的类。
│ │ ├── RectDrawable.cs:这段代码定义了一个名为`RectDrawable`的类,它用于表示一个矩形区域,并可以包含一个名称和边框笔。此外,还有一个名为`RectDrawableExtension`的静态类,它提供了将`OpenCvSharp.Rect`和`System.Drawing.Rect`转换为`RectDrawable`的方法,并考虑了DPI缩放。总结:这段代码的功能是定义了一个用于表示和转换游戏窗口中矩形区域的数据结构。
│ │ ├── TextDrawable.cs:这段C#代码定义了一个名为`TextDrawable`的类,它代表了一个可以在图形界面中显示的文本元素。该类包含文本内容和文本位置信息,并重写了`Equals`和`GetHashCode`方法以支持基于位置的相等性比较,以及一个`IsEmpty`属性来检查文本位置是否为默认值(即(0,0))。总结来说,这份代码的功能是创建一个用于在图形界面中显示文本的类。
│ │ └── VisionContext.cs:这段C#代码定义了一个名为`VisionContext`的类,它是一个单例模式实现,用于管理视觉上下文相关的数据。该类包含一个私有构造函数、一个静态方法`Instance`用于获取单例实例,以及两个公共属性`Drawable`和`DrawContent`。`Drawable`属性用于表示某个视觉元素是否可绘制,而`DrawContent`属性则用于存储绘制内容的相关信息。总结:这份代码的功能是提供一个单例模式实现的视觉上下文管理类,用于存储和管理与视觉元素绘制相关的状态和数据。
│ ├── MainWindow.xaml.cs:这段代码是一个C#WPF应用程序的主窗口类,它继承自`FluentWindow`并实现了`INavigationWindow`接口。它负责初始化窗口,设置数据上下文,处理窗口加载和关闭事件,以及提供导航服务。代码的主要功能是作为应用程序的主界面,提供用户交互和导航到不同的页面。总结:该代码实现了BetterGenshinImpact应用程序的主窗口,负责初始化、显示和导航。
│ ├── MaskWindow.xaml.cs:这段C#代码实现了一个名为`MaskWindow`的类,它是一个用于覆盖在游戏窗口上的辅助窗口,用于显示识别结果、游戏日志、设置区域位置等,并且提供了单例模式以获取其实例。该窗口通过调用不同的方法来刷新位置、显示日志、设置窗口样式以及绘制识别结果等。总结来说,这份代码的功能是创建一个覆盖在游戏窗口上的辅助窗口,用于显示游戏识别结果和日志信息。
│ ├── Pages/
│ │ ├── CommonSettingsPage.xaml.cs:这段C#代码定义了一个名为`CommonSettingsPage`的类,它继承自`Page`类,并用于表示一个通用设置页面。这个类接受一个`CommonSettingsPageViewModel`类型的`viewModel`作为参数,并将其设置为页面的数据上下文(`DataContext`),同时调用`InitializeComponent`方法来初始化页面控件。总结:这段代码的功能是创建一个通用设置页面的视图,该页面使用视图模型来绑定数据。
│ │ ├── HomePage.xaml.cs:这段C#代码定义了一个名为`HomePage`的类,它继承自某个未知的基类(可能是一个页面或视图模型类)。这个类有一个名为`ViewModel`的公共属性,它返回一个`HomePageViewModel`类型的实例。构造函数接受两个参数:一个`HomePageViewModel`类型的`viewModel`和一个`HotKeyPageViewModel`类型的`hotKeyPageViewModel`。在构造函数中,`DataContext`被设置为`ViewModel`,这通常用于绑定数据到用户界面元素,并且`InitializeComponent`方法被调用来初始化页面组件。总结:这份代码的功能是创建一个首页视图,它绑定了一个视图模型,并在页面加载时初始化热键页面视图模型。
│ │ ├── HotkeyPage.xaml.cs:这段C#代码定义了一个名为`HotKeyPage`的用户控件类,它继承自`UserControl`。这个类有一个私有属性`ViewModel`,它是一个`HotKeyPageViewModel`类型的实例,用于表示视图模型。构造函数接受一个`HotKeyPageViewModel`类型的参数,将其赋值给`ViewModel`属性,并将这个视图模型绑定到控件的`DataContext`属性上,以便于在XAML中可以直接引用视图模型的数据。最后,调用`InitializeComponent`方法来初始化控件。总结:这段代码的功能是创建一个用户控件,用于展示和操作与热键相关的页面视图。
│ │ ├── JsListPage.xaml.cs:这段C#代码定义了一个名为`JsListPage`的用户控件类,它继承自`UserControl`。这个类接受一个`JsListViewModel`类型的参数作为视图模型,并将其绑定到控件的`DataContext`属性上。`InitializeComponent`方法用于初始化用户控件中的元素。总结:这份代码的功能是创建一个用户控件,用于展示与`JsListViewModel`关联的数据。
│ │ ├── KeyBindingsSettingsPage.xaml.cs:这段C#代码定义了一个名为`KeyBindingsSettingsPage`的用户控件类,它使用了MVVM(Model-View-ViewModel)设计模式。这个类接受一个`KeyBindingsSettingsPageViewModel`类型的`viewModel`作为参数,并将其设置为控件的`DataContext`。`InitializeComponent`方法用于初始化用户控件中的元素。总结:这份代码的功能是创建一个用户控件,用于显示和配置键绑定设置页面。
│ │ ├── KeyMouseRecordPage.xaml.cs:这段C#代码定义了一个名为`KeyMouseRecordPage`的用户控件类,它继承自`UserControl`。这个类有一个私有属性`ViewModel`,它是一个`KeyMouseRecordPageViewModel`类型的实例,用于与视图进行数据绑定。构造函数接受一个`KeyMouseRecordPageViewModel`对象作为参数,并将其赋值给`ViewModel`属性,同时将`ViewModel`设置为控件的`DataContext`,以便视图可以访问和显示视图模型中的数据。最后,调用`InitializeComponent`方法来初始化用户控件。总结:这段代码的功能是创建一个用户控件,用于显示和交互`KeyMouseRecordPageViewModel`中的数据。
│ │ ├── MacroSettingsPage.xaml.cs:这段C#代码定义了一个名为`MacroSettingsPage`的类,它继承自`Page`类,并用于表示宏设置页面。这个类接受一个`MacroSettingsPageViewModel`类型的`viewModel`作为参数,并将其设置为页面的数据上下文。代码中还包含了一个构造函数,用于初始化页面并设置其视图模型。总结:这段代码的功能是创建一个宏设置页面的视图,该页面使用视图模型来绑定数据和行为。
│ │ ├── MapPathingPage.xaml.cs:这段C#代码定义了一个名为`MapPathingPage`的用户控件类,它继承自`UserControl`。这个类有一个私有属性`ViewModel`,它是一个`MapPathingViewModel`类型的实例,用于绑定数据。构造函数接受一个`MapPathingViewModel`对象作为参数,并将其赋值给`ViewModel`属性,同时将`ViewModel`设置为控件的`DataContext`。`InitializeComponent`方法用于初始化用户控件中的元素。总结:这份代码的功能是创建一个用户控件,用于显示和交互GenshinImpact地图路径规划的相关界面。
│ │ ├── NotificationSettingsPage.xaml.cs:这段C#代码定义了一个名为`NotificationSettingsPage`的类,它继承自`Page`类,并用于表示一个通知设置页面。这个类接受一个`NotificationSettingsPageViewModel`类型的`viewModel`参数,将其设置为页面的数据上下文(`DataContext`),并调用`InitializeComponent`方法来初始化页面控件。总结:这段代码的功能是创建一个通知设置页面的视图,该页面与一个视图模型(ViewModel)相关联。
│ │ ├── OneDragon/
│ │ │ ├── CraftPage.xaml.cs:这段C#代码定义了一个名为`CraftPage`的类,它继承自`UserControl`。这个类是用于GenshinImpact游戏的一个页面,它包含了一个构造函数,该构造函数调用了基类的`InitializeComponent`方法来初始化用户控件。代码中没有具体的业务逻辑实现,只是定义了页面的基本结构。总结:这段代码的功能是定义了一个GenshinImpact游戏的“炼金页面”的用户控件。
│ │ │ ├── DailyCommissionPage.xaml.cs:这段C#代码定义了一个名为`DailyCommissionPage`的类,它继承自`UserControl`。这个类是用于GenshinImpact游戏的一个用户界面页面,名为“每日委托页面”。代码中包含了一个构造函数,它调用了基类的`InitializeComponent`方法来初始化用户控件中的元素。总结来说,这份代码的功能是创建并初始化一个GenshinImpact游戏的每日委托页面用户界面。
│ │ │ ├── DailyRewardPage.xaml.cs:这段C#代码定义了一个名为`DailyRewardPage`的类,它继承自`UserControl`。这个类是用于GenshinImpact游戏的一个用户界面页面,用于显示每日奖励信息。代码中包含了类的构造函数,它调用了基类的`InitializeComponent`方法来初始化用户控件。总结:这份代码的功能是创建一个用于显示GenshinImpact游戏每日奖励信息的用户界面页面。
│ │ │ ├── DomainPage.xaml.cs:这段C#代码定义了一个名为`DomainPage`的类,它继承自`UserControl`。这个类是用于WPF(WindowsPresentationFoundation)应用程序的一个用户控件,它包含一个构造函数,该构造函数调用了基类的`InitializeComponent`方法来初始化用户控件中的元素。代码中没有具体的业务逻辑实现,只是定义了用户控件的结构。总结:这份代码的功能是定义了一个WPF用户控件,用于在GenshinImpact相关应用程序中展示“领域”页面。
│ │ │ ├── ForgingPage.xaml.cs:这段C#代码定义了一个名为`ForgingPage`的类,它继承自`UserControl`。这个类是用于GenshinImpact游戏的一个页面,名为“锻造页面”。代码中包含了类的构造函数,它调用了基类的`InitializeComponent`方法来初始化用户控件。没有其他逻辑代码,所以无法推测具体的交互逻辑或功能。总结:这份代码的功能是创建一个用于GenshinImpact游戏的“锻造页面”的用户控件。
│ │ │ ├── LeyLineBlossomPage.xaml.cs:这段C#代码定义了一个名为`LeyLineBlossomPage`的类,它继承自`UserControl`。这个类没有包含任何成员变量或方法,只包含一个构造函数,该构造函数调用了基类的`InitializeComponent`方法,这通常用于初始化XAML定义的用户界面元素。代码所在的命名空间是`BetterGenshinImpact.View.Pages.OneDragon`,这表明这个页面类是用于一个名为“BetterGenshinImpact”的项目中的“View”层,具体在“Pages.OneDragon”目录下。总结这句话概括这份代码的功能是:这段代码定义了一个用于展示“BetterGenshinImpact”游戏中“LeyLineBlossom”页面的用户控件。
│ │ │ ├── MailPage.xaml.cs:这段C#代码定义了一个名为`MailPage`的类,它继承自`UserControl`。这个类是用于GenshinImpact游戏的一个视图页面,名为“一龙”页面的邮件配置页面。代码中包含了构造函数,它调用了基类的`InitializeComponent`方法来初始化用户控件。总结来说,这份代码的功能是创建并初始化一个用于显示邮件配置界面的用户控件。
│ │ │ ├── SereniteaPotPage.xaml.cs:这段C#代码定义了一个名为`SereniteaPotPage`的类,它继承自`UserControl`。这个类没有包含任何成员变量或方法,只包含一个构造函数,该构造函数调用了基类`UserControl`的`InitializeComponent`方法,这通常用于初始化XAML定义的用户界面元素。代码所在的命名空间是`BetterGenshinImpact.View.Pages.OneDragon`,这表明这个页面类可能是用于一个名为“BetterGenshinImpact”的项目中的“OneDragon”页面。总结这句话概括这份代码的功能是:这段代码定义了一个用于“BetterGenshinImpact”项目的“OneDragon”页面的用户控件。
│ │ │ └── TcgPage.xaml.cs:这段C#代码定义了一个名为`TcgPage`的类,它继承自`UserControl`。这个类是用于WPF(WindowsPresentationFoundation)应用程序的一个用户控件,它包含了一个构造函数,该构造函数调用了基类的`InitializeComponent`方法来初始化用户控件中的元素。代码中没有具体的业务逻辑,只是定义了用户控件的结构。总结:这份代码的功能是创建一个用于WPF应用程序的用户控件,用于展示或交互Tcg(TradingCardGame)相关的页面内容。
│ │ ├── OneDragonFlowPage.xaml.cs:这段C#代码定义了一个名为`OneDragonFlowPage`的类,它继承自某个未知的基类(可能是`Page`或类似的UI页面类)。这个类有一个名为`ViewModel`的公共属性,它是一个`OneDragonFlowViewModel`类型的实例。构造函数接受一个`OneDragonFlowViewModel`类型的参数,并将其赋值给`ViewModel`属性,同时将`ViewModel`赋值给`DataContext`,这通常用于数据绑定,并且调用了`InitializeComponent`方法,这通常是用于初始化页面的UI组件。总结:这段代码的功能是创建一个与GenshinImpact相关的页面,该页面使用数据绑定来显示和交互`OneDragonFlowViewModel`的数据。
│ │ ├── ScriptControlPage.xaml.cs:这段C#代码定义了一个名为`ScriptControlPage`的类,它是一个页面控件,用于显示和交互。这个类使用了MVVM(Model-View-ViewModel)设计模式,其中`ViewModel`是一个视图模型类,负责处理业务逻辑和数据绑定。`ScriptControlPage`类接受一个`ScriptControlViewModel`类型的参数,将其设置为`DataContext`,这样视图(即页面)就可以绑定到视图模型的数据和命令上了。`InitializeComponent`方法用于初始化页面控件。总结:这份代码的功能是创建一个页面控件,用于显示和交互,它基于MVVM模式,绑定到一个名为`ScriptControlViewModel`的视图模型。
│ │ ├── TaskSettingsPage.xaml.cs:这段C#代码定义了一个名为`TaskSettingsPage`的类,它继承自`Page`类,并用于表示一个任务设置页面。这个类接受一个`TaskSettingsPageViewModel`类型的`viewModel`作为参数,并将其设置为页面的数据上下文(`DataContext`),同时调用`InitializeComponent`方法来初始化页面控件。总结:这段代码的功能是创建一个任务设置页面的视图,该页面使用视图模型来绑定数据。
│ │ ├── TriggerSettingsPage.xaml.cs:这段C#代码定义了一个名为`TriggerSettingsPage`的类,它继承自某个未知的基类(可能是`Page`或类似的UI页面类)。这个类有一个私有属性`ViewModel`,它是一个`TriggerSettingsPageViewModel`类型的实例,用于表示视图模型。构造函数接受一个`TriggerSettingsPageViewModel`类型的参数,将其赋值给`ViewModel`属性,并将这个视图模型设置为数据上下文(`DataContext`),这通常用于将视图模型的数据绑定到UI控件上。`InitializeComponent`方法被调用来初始化页面组件。总结:这段代码的功能是创建一个视图页面,用于显示和配置触发器设置,其中使用了视图模型来绑定数据和实现逻辑。
│ │ └── View/
│ │ │ ├── PathingConfigView.xaml.cs:这段C#代码定义了一个名为`PathingConfigView`的类,它是一个视图类,用于与用户界面(UI)交互。这个类使用了MVVM(Model-View-ViewModel)设计模式,其中`ViewModel`是`PathingConfigViewModel`的一个实例,它负责处理业务逻辑和数据绑定。`PathingConfigView`类通过构造函数接收一个`PathingConfigViewModel`对象,并将其设置为视图的`DataContext`,这样视图就可以绑定到视图模型的数据和命令上了。`InitializeComponent`方法用于初始化XAML定义的UI元素。总结:这份代码的功能是创建一个视图,用于展示和交互GenshinImpact路径配置的界面。
│ │ │ └── ScriptGroupConfigView.xaml.cs:这段C#代码定义了一个名为`ScriptGroupConfigView`的用户控件类,它继承自`UserControl`。这个类用于表示一个视图,它接受一个`ScriptGroupConfigViewModel`类型的视图模型作为参数,并将其设置为控件的`DataContext`。这个视图模型可能用于管理与脚本组配置相关的数据和行为。代码中还包含了一个XML注释,描述了该类的交互逻辑。总结:这段代码的功能是创建一个用户控件,用于显示和交互脚本组配置的视图。
│ ├── PickerWindow.xaml.cs:这段代码是一个C#WinForms应用程序,用于选择和捕获GenshinImpact游戏窗口的截图。
│ └── Windows/
│ │ ├── CheckUpdateWindow.xaml.cs:这段代码是一个C#WPF应用程序中的窗口类,用于检查和更新游戏《原神》的补丁。它包含一个用户界面,允许用户手动检查更新、更新游戏、忽略更新、取消更新操作,并显示更新状态信息。
│ │ ├── Editable/
│ │ │ └── ScriptGroupProjectEditor.xaml.cs:这段C#代码定义了一个名为`ScriptGroupProjectEditor`的类,它继承自`System.Windows.Controls.UserControl`。这个类没有包含任何方法或属性,只包含一个构造函数,该构造函数调用了基类的`InitializeComponent`方法,这通常用于初始化用户控件中的UI元素。总结来说,这份代码的功能是创建一个用于编辑脚本组项目的用户控件。概括总结:创建一个用于编辑脚本组项目的用户界面控件。
│ │ ├── JsonMonoDialog.xaml.cs:这段代码定义了一个名为`JsonMonoDialog`的C#类,它继承自`FluentWindow`,这是一个WPFUI控件。这个类用于显示一个对话框,该对话框用于编辑和显示JSON格式的文本。代码中创建了一个`JsonMonoViewModel`实例,并将其绑定到窗口的数据上下文中。当用户在文本框`JsonCodeBox`中输入文本时,会通过事件处理程序更新`ViewModel`中的`JsonText`属性。此外,提供了一个静态方法`Show`,用于显示对话框,并接受一个文件路径参数。总结:这段代码的功能是创建一个用于编辑和显示JSON文本的对话框。
│ │ ├── MapViewer.xaml.cs:这段C#代码定义了一个名为`MapViewer`的类,它似乎是一个用于显示地图视图的窗口。该类包含一个名为`ViewModel`的属性,它是一个`MapViewerViewModel`类型的实例,这表明`MapViewer`类与一个视图模型类相关联,用于处理与地图视图相关的逻辑。`MapViewer`类的构造函数初始化了`DataContext`属性,将`ViewModel`赋值给它,并调用了`InitializeComponent`方法,这通常是用于初始化Windows窗体控件的方法。总结:这段代码的功能是创建一个地图查看器窗口,该窗口使用视图模型来管理其数据和行为。
│ │ └── PromptDialog.xaml.cs:这段C#代码定义了一个名为`PromptDialog`的类,它是一个用于显示对话框并获取用户输入的窗口。该对话框可以接受一个字符串问题、标题、一个UI元素(如TextBox或ComboBox)和一个默认值。用户可以通过点击“OK”或“Cancel”按钮来提交或取消输入。如果用户点击“OK”,则返回用户在UI元素中输入的文本;如果用户点击“Cancel”,则返回一个默认值。总结:该代码实现了一个可定制的对话框,用于从用户那里获取输入或确认。
└── ViewModel/
│ ├── IViewModel.cs:这段代码定义了一个C#命名空间和一个接口。```csharpnamespaceBetterGenshinImpact.ViewModel{publicinterfaceIViewModel{}}```-`namespaceBetterGenshinImpact.ViewModel`:定义了一个名为`BetterGenshinImpact.ViewModel`的命名空间,这通常用于组织代码,使得代码结构更加清晰,并且可以避免命名冲突。-`publicinterfaceIViewModel`:在这个命名空间内定义了一个公共接口`IViewModel`。接口在C#中用于定义一组方法或属性,但不包含实现。其他类可以实现这个接口,从而提供这些方法或属性的实现。概括总结:这份代码的功能是定义了一个名为`IViewModel`的接口,用于在`BetterGenshinImpact.ViewModel`命名空间中提供视图模型的相关抽象。
│ ├── MainWindowViewModel.cs:这段代码是一个C#的WPF应用程序的ViewModel,用于管理BetterGenshinImpact(一个原神辅助工具)的主窗口视图。它负责处理窗口的初始化、配置加载、脚本更新、OCR预热、目录迁移、安全权限修改、检查更新、清理临时目录以及处理窗口的激活、隐藏、切换背景和关闭事件。总结来说,这份代码的功能是管理BetterGenshinImpact主窗口的视图模型,提供用户界面交互和辅助功能。
│ ├── MaskWindowViewModel.cs:这段代码是一个C#的ViewModel类,用于管理一个名为"MaskWindow"的窗口,该窗口似乎与游戏《原神》的辅助功能有关。它负责处理窗口的配置、状态列表、按钮和FPS显示等功能。总结:该代码的功能是创建一个管理游戏《原神》辅助功能的窗口视图模型。
│ ├── Message/
│ │ └── RefreshDataMessage.cs:这段C#代码定义了一个名为`RefreshDataMessage`的类,它继承自`ValueChangedMessage<string>`。`ValueChangedMessage<T>`是一个消息类,通常用于在MVVM(Model-View-ViewModel)架构中传递值变化的消息。在这个例子中,`RefreshDataMessage`接受一个字符串类型的参数`value`,并将其作为消息传递。代码功能概括:这段代码定义了一个用于在MVVM应用程序中传递数据更新消息的消息类。
│ ├── NotifyIconViewModel.cs:这段代码是一个C#的ViewModel类,用于管理一个桌面应用程序的托盘图标(NotifyIcon)的功能。它提供了显示/隐藏主窗口、退出应用程序和检查更新的命令。总结:该代码实现了管理桌面应用程序托盘图标功能的ViewModel。
│ ├── Pages/
│ │ ├── CommonSettingsPageViewModel.cs:这段C#代码是一个ViewModel,用于管理一个名为“CommonSettingsPage”的视图页面的逻辑。它提供了对游戏设置、截图、日志文件夹导航、Webhook测试以及脚本仓库离线包导入等功能。总结:该代码实现了BetterGenshinImpact游戏增强工具的通用设置页面视图模型的逻辑。
│ │ ├── HomePageViewModel.cs:这段C#代码是一个名为`HomePageViewModel`的ViewModel类,它似乎是用于BetterGenshinImpact应用程序的主页视图模型。该代码的主要功能是管理BetterGenshinImpact应用程序的捕获、识别和游戏任务功能,包括启动和停止游戏捕获、选择捕获模式、设置触发器间隔、启动和停止任务调度器等。总结:该代码实现了BetterGenshinImpact应用程序的主页功能,用于管理游戏捕获、识别和任务调度。
│ │ ├── HotKeyPageViewModel.cs:这段代码是一个C#的ViewModel类,用于管理BetterGenshinImpact游戏辅助工具的快捷键配置和功能。它负责创建和管理快捷键设置,并处理与快捷键相关的配置更新和事件。
│ │ ├── JsListViewModel.cs:这段C#代码是一个ViewModel,用于管理GenshinImpact辅助工具BetterGenshinImpact中的脚本列表和相关的操作。它提供了脚本项目的加载、打开脚本文件夹、运行脚本、刷新脚本列表等功能。总结来说,这份代码的功能是提供一个用于管理GenshinImpact辅助脚本的用户界面和逻辑。
│ │ ├── KeyBindingsSettingsPageViewModel.cs:这段代码是一个C#的ViewModel,用于管理GenshinImpact游戏的按键绑定设置。它提供了用户界面来配置和控制游戏中的各种按键绑定,并能够从注册表中读取现有的按键绑定设置。总结来说,这份代码的功能是提供一个用于配置GenshinImpact游戏按键绑定的用户界面。
│ │ ├── KeyMouseRecordPageViewModel.cs:这段代码是一个C#的ViewModel,用于管理一个名为“KeyMouseRecordPage”的WPF用户界面页面的逻辑。它提供了脚本录制、播放、编辑、删除和查看脚本列表的功能,并集成了日志记录和用户提示服务。总结来说,这份代码的功能是提供一个用于管理GenshinImpact游戏脚本录制的用户界面。
│ │ ├── MacroSettingsPageViewModel.cs:这段代码是一个C#的ViewModel,用于在WPF应用程序中处理宏设置页面的逻辑。它包含对宏配置的访问、导航到其他页面、编辑宏文件和打开宏相关网页的功能。总结:该代码的功能是提供一个宏设置页面的视图模型,用于配置和导航宏设置相关的功能。
│ │ ├── MapPathingViewModel.cs:这段代码是一个C#的ViewModel,用于管理GenshinImpact游戏中的地图追踪功能。它提供了地图地图追踪任务的列表视图,允许用户打开脚本文件夹、启动地图追踪任务、打开地图查看器、地图编辑器、设置和查看地图追踪相关的配置信息。
│ │ ├── NotificationSettingsPageViewModel.cs:这段C#代码定义了一个名为`NotificationSettingsPageViewModel`的ViewModel类,它用于处理与通知设置相关的功能。该类继承自`ObservableObject`,这意味着它支持数据绑定,并且包含一个私有字段`_notificationService`,用于与通知服务进行交互。它还包含一个`OnTestWebhook`方法,该方法是一个异步方法,用于测试Webhook通知的配置是否正确,并在UI上显示结果。总结:这份代码的功能是提供一个视图模型,用于管理通知设置并测试Webhook通知的有效性。
│ │ ├── OneDragon/
│ │ │ ├── CraftViewModel.cs:这段C#代码定义了一个名为`CraftViewModel`的类,它继承自`OneDragonBaseViewModel`。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。`CraftViewModel`类包含一个只读属性`Title`,其值被设置为"合成浓缩树脂"。根据代码内容,可以推测这份代码的功能是:定义了一个表示合成浓缩树脂合成界面的视图模型。
│ │ │ ├── DailyCommissionViewModel.cs:这段C#代码定义了一个名为`DailyCommissionViewModel`的类,它继承自`OneDragonBaseViewModel`类。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。代码中包含了一个只读属性`Title`,其值被设置为"每日委托"。这个类很可能用于GenshinImpact(原神)游戏中的某个视图模型,用于表示与每日委托相关的数据和行为。总结:这份代码的功能是定义一个用于GenshinImpact游戏每日委托页面的视图模型。
│ │ │ ├── DailyRewardViewModel.cs:这段C#代码定义了一个名为`DailyRewardViewModel`的类,它继承自`OneDragonBaseViewModel`类。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。代码中包含了一个只读属性`Title`,其值被设置为"领取每日奖励"。这个属性可能用于在用户界面中显示页面标题。总结:这份代码的功能是定义一个视图模型类,用于表示一个名为“领取每日奖励”的页面。
│ │ │ ├── DomainViewModel.cs:这段C#代码定义了一个名为`DomainViewModel`的类,它继承自`OneDragonBaseViewModel`类。`DomainViewModel`类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架中的`INotifyPropertyChanged`接口,这通常用于数据绑定。代码中包含了一个只读属性`Title`,其值被设置为"刷秘境"。根据这些信息,可以推测这份代码的功能是:该代码定义了一个MVVM模式下的ViewModel,用于表示一个名为“刷秘境”的页面或视图模型,可能用于管理GenshinImpact游戏中与刷秘境相关的数据和行为。总结:定义了一个GenshinImpact游戏中的“刷秘境”页面视图模型。
│ │ │ ├── ForgingViewModel.cs:这段C#代码定义了一个名为`ForgingViewModel`的类,它继承自`OneDragonBaseViewModel`。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。`ForgingViewModel`类包含一个只读属性`Title`,其值被设置为"合成浓缩树脂"。这个属性可能用于在用户界面中显示页面标题。总结:这份代码的功能是定义一个MVVM视图模型,用于表示“合成浓缩树脂”页面。
│ │ │ ├── LeyLineBlossomViewModel.cs:这段C#代码定义了一个名为`LeyLineBlossomViewModel`的类,它继承自`OneDragonBaseViewModel`。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。`Title`属性被设置为"刷地脉花",这表明这个ViewModel可能用于表示与“刷地脉花”相关的功能或页面。总结:这份代码的功能是定义一个用于显示“刷地脉花”页面标题的ViewModel。
│ │ │ ├── MailViewModel.cs:这段C#代码定义了一个名为`MailViewModel`的类,它继承自`OneDragonBaseViewModel`。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。`MailViewModel`类包含一个只读属性`Title`,其值被设置为"领取邮件"。根据这段代码,可以推测其功能是:为GenshinImpact游戏中的邮件领取页面提供一个视图模型,用于绑定数据和定义页面标题。概括总结这句话是:为GenshinImpact游戏中的邮件领取页面提供视图模型和标题。
│ │ │ ├── OneDragonBaseViewModel.cs:这段C#代码定义了一个抽象类`OneDragonBaseViewModel`,它继承自`ObservableObject`并实现了`IViewModel`接口。这个类包含一个抽象属性`Title`,用于获取视图模型的标题。由于这是一个抽象类,它不能被实例化,而是作为其他具体视图模型类的基类。总结:这份代码的功能是定义一个抽象视图模型基类,用于提供视图模型标题的获取逻辑。
│ │ │ ├── SereniteaPotViewModel.cs:这段C#代码定义了一个名为`SereniteaPotViewModel`的ViewModel类,它继承自`OneDragonBaseViewModel`。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。代码中包含了一个只读属性`Title`,其值被设置为"领取尘歌壶奖励"。总结来说,这份代码的功能是定义了一个用于显示“领取尘歌壶奖励”标题的ViewModel类。
│ │ │ └── TcgViewModel.cs:这段C#代码定义了一个名为`TcgViewModel`的类,它继承自`OneDragonBaseViewModel`。这个类使用了CommunityToolkit的MVVM(Model-View-ViewModel)框架。`TcgViewModel`类包含一个只读属性`Title`,其值被设置为"自动七圣召唤"。根据代码内容,可以推测这份代码的功能是:定义了一个视图模型类,用于表示一个名为“自动七圣召唤”的页面或功能。
│ │ ├── OneDragonFlowViewModel.cs:这段C#代码是一个用于管理《原神》游戏内“一条龙”任务的ViewModel。它允许用户配置和执行一系列自动化任务,如领取邮件、合成树脂等,并支持保存和加载配置。
│ │ ├── ScriptControlViewModel.cs:这段代码是一个C#的ViewModel,用于管理GenshinImpact辅助工具的脚本配置和执行。它提供了添加、编辑、删除脚本组,以及执行脚本的功能,并支持日志分析和配置设置。
│ │ ├── TaskSettingsPageViewModel.cs:这段C#代码是一个用于《原神》游戏的辅助工具的ViewModel,它提供了自动执行游戏任务的功能,如自动召唤、伐木、领域战斗、自动战斗、音乐游戏和自动地图追踪等,并允许用户配置和启动这些任务。总结来说,这份代码的功能是创建一个用户界面来配置和启动《原神》游戏的自动化任务。
│ │ ├── TriggerSettingsPageViewModel.cs:这段代码是一个C#的ViewModel,用于实现一个名为“BetterGenshinImpact”的应用程序中的一个设置页面。该页面允许用户配置游戏内自动跳过和自动选择选项的设置,包括选择聊天选项、OCR引擎、默认拾取按钮等,并提供了一些操作,如编辑黑白名单、打开QQ群链接和导航到热键页面。总结:该代码的功能是提供一个用于配置《原神》游戏内自动跳过和自动选择选项设置的界面。
│ │ └── View/
│ │ │ ├── AutoFightViewModel.cs:这段代码是一个C#的ViewModel,用于BetterGenshinImpact项目中的自动战斗功能。它管理着自动战斗的策略配置,包括加载自定义脚本、选择战斗策略以及打开本地脚本仓库和战斗文件夹。总结:该代码的功能是管理BetterGenshinImpact游戏中的自动战斗策略配置。
│ │ │ ├── PathingConfigViewModel.cs:这段C#代码是一个ViewModel,用于管理《原神》游戏中的路径配置。它提供了添加和移除队伍和角色条件的功能,并在窗口关闭时触发配置的更改通知。总结:该代码的功能是管理《原神》游戏的路径配置,允许用户添加和移除队伍和角色条件。
│ │ │ └── ScriptGroupConfigViewModel.cs:这段代码是一个C#的ViewModel类,用于在WPF应用程序中处理与脚本组配置相关的逻辑。它使用了MVVM(Model-View-ViewModel)设计模式,其中ViewModel负责处理业务逻辑和用户交互。功能概括:该代码的功能是提供一个视图模型,用于管理GenshinImpact游戏中的脚本组和路径配置,以及与自动战斗相关的视图操作。
│ └── Windows/
│ │ ├── AutoPickBlackListViewModel.cs:这段代码定义了一个名为`AutoPickBlackListViewModel`的类,它继承自`FormViewModel<string>`。这个类的主要功能是从一个JSON文件中读取黑名单列表,并在保存时将黑名单列表写入同一个文件。此外,它还负责在保存后刷新游戏任务配置。总结:该代码的功能是从文件中读取并管理黑名单配置,并在保存时更新配置文件并刷新游戏任务配置。
│ │ ├── AutoPickWhiteListViewModel.cs:这段代码定义了一个名为`AutoPickWhiteListViewModel`的类,它继承自`FormViewModel<string>`。这个类的主要功能是从一个JSON文件中读取一个白名单列表,并在保存时将这个列表写入同一个文件。此外,它还负责在保存时刷新游戏任务配置。总结:该代码的功能是从文件中读取并管理一个白名单列表,并在保存时更新文件和游戏配置。
│ │ ├── FormViewModel.cs:这段C#代码定义了一个抽象类`FormViewModel<T>`,它使用了CommunityToolkit库中的MVVM(Model-View-ViewModel)模式。这个类包含一个泛型`ObservableCollection<T>`属性,用于存储列表数据,并提供了一系列方法来添加、移除、编辑和保存列表中的项。概括总结这份代码的功能是:实现了一个基于MVVM模式的泛型数据列表管理视图模型。
│ │ ├── JsonMonoViewModel.cs:这段代码是一个C#的ViewModel,用于处理与JSON文件相关的操作,包括读取、保存和关闭窗口。具体功能包括:-读取指定路径的JSON文件内容并显示在界面上。-提供保存按钮,用于将编辑后的JSON内容写回文件。-提供关闭按钮,用于关闭当前窗口。总结:该代码的功能是提供一个用于编辑和保存JSON配置文件的视图模型。
│ │ └── MapViewerViewModel.cs:这段代码是一个C#的ViewModel,用于在WPF应用程序中显示和更新一个游戏地图的视图。它使用OpenCvSharp库来处理图像和路径绘制,并响应来自其他组件的消息来更新地图显示。