# UXAssist

<details>
<summary>Read me in English</summary>

***Some functions and patches for better user experience***

## Usage

* Press `` Alt+`(BackQuote) `` to call up the config panel. You can change the shortcut on the panel.
* There are also buttons on title screen and planet minimap area to call up the config panel.
* Patches:
  * Strict hotkey dectection for build menu, thus building hotkeys(0~9, F1~F10, X, U) are not triggered while holding Ctrl/Alt/Shift.
  * Fix a bug that warning popup on `Veins Utilization` upgraded to level 8000+
  * Sort blueprint structures before saving, to reduce generated blueprint data size a little
  * Increase maximum count of Metadata Instantiations to 20000 (from 2000)
  * Increase capacity of player order queue to 128 (from 16)
  * Enable `Hide UI` function(`F11` by default) while on Star Map view
  * Append mod profile name to game window title, if using mod managers (`Thunderstore Mod Manager` or `r2modman`).
* Features:
  * General
    * Enable game window resize
    * Remember window position and size on last exit
    * Convert Peace-Mode saves to Combat-Mode on loading
    * Mod manager profile based save folder
      * Save files are stored in `Save\<ProfileName>` folder.
      * Will use original save location if matching default profile name.
    * Mod manager profile based option
      * Option file is stored as `Options\<ProfileName>.xml`.
    * Logical Frame Rate
      * This will change game running speed, down to 0.1x slower and up to 10x faster.
      * A pair of shortcut keys (`-` and `+`) to change the logical frame rate by -0.5x and +0.5x.
      * Note:
        * High logical frame rate is not guaranteed to be stable, especially when factories are under heavy load.
        * This will not affect some game animations.
        * When set game speed in mod `Auxilaryfunction`, this feature will be disabled.
        * When mod `BulletTime` is installed, this feature will be hidden, but patch `BulletTime`'s speed control, to make its maximum speed 10x.
    * Set process priority
    * Increase maximum count of Metadata Instantiations to 20000 (from 2000)
    * Increase capacity of player order queue to 128 (from 16)
  * Factory
    * Sunlight at night
    * Remove some build conditions
    * Remove build count and range limit
    * Larger area for upgrade and dismantle(30x30 at max)
    * Larger area for terraform(30x30 at max)
    * Off-grid building and stepped rotation
    * Cut conveyor belt
      * Press shortcut key to cut conveyor belt under cursor.
      * The default shortcut key is Alt+X, you can set it in system options panel.
    * Treat stack items as single in monitor components
    * Quick build and dismantle stacking labs/storages/tanks
    * Fast fill in to and take out from tanks
      * You can set multiplier for tanks' operation speed
      * This affects manually fill in to and/or take out from tanks, as well as transfer from upper to lower level.
    * Protect veins from exhaustion
      * By default, the vein amount is protected at 100, and oil speed is protected at 1.0/s, you can set them yourself in config file.
      * When reach the protection value, veins/oils steeps will not be mined/extracted any longer.
      * Close this function to resume mining and pumping, usually when you have enough level on `Veins Utilization`
    * Do not render factory entities (except belts and sorters)
      * This also makes players click though factory entities but belts and sorters
    * Drag building power poles in maximum connection range
    * Auto-construct
      * Fly to buildings to be contructed automatically
    * Dismantle blueprint selected buildings
      * Press shortcut key in blueprint copy mode to dismantle selected buildings.
      * The default shortcut key is Ctrl+X, you can set it in system options panel.
    * Initialize This Planet (without reseting veins)
      * 3 Options to return certain items
    * Quick dismantle all buildings (without drops)
    * Quick build Orbital Collectors
    * Belt signals for buy out dark fog items automatically
      * 6 belt signals are added to the signal panel, which can be used to buy out dark fog items automatically.
      * Generated items are stacked in 4 items.
      * Exchange ratio is following the original game design, aka:
        * 1 Metaverse = 20 Dark Fog Matrices
        * 1 Metaverse = 60 Engery Shards
        * 1 Metaverse = 30 Silicon-based Neurons
        * 1 Metaverse = 30 Negentropy Singularities
        * 1 Metaverse = 30 Matter Recombinators
        * 1 Metaverse = 10 Core Elements
    * Tweak building buffer
      * Factory recipe buffer formula: take the larger value between `Assembler buffer time multiplier(in seconds) * items needed per second` and `Assembler buffer minimum multiplier * items needed per recipe`
        * `Assembler buffer time multiplier(in seconds)`: Range 2-10, default is 4 (same as game)
        * `Assembler buffer minimum multiplier`: Range 2-10, default is 2 (same as game)
      * Matrix Lab assembly mode formula: Default buffer is `Buffer count for assembling in labs`, when using Self-evolution Lab, if recipe's original production time is not greater than 9 seconds, add `Extra buffer count for Self-evolution Labs` * (`Lab speed` - 1)
        * `Buffer count for assembling in labs`: Range 2-20, default is 6 (same as game)
        * `Extra buffer count for Self-evolution Labs`: Range 1-10, default is 3 (same as game)
      * `Buffer count for researching in labs`: Range 2-20, default is 10 (same as game)
      * `Ray Receiver Graviton Lens buffer count`: Range 1-20, default is 1 (game default is 20)
      * `Ejector Solar Sails buffer count`: Range 5-400 (step by 5), default is 20 (same as game)
      * `Silo Rockets buffer count`: Range 1-20, default is 20 (same as game)
  * Logistics
    * Enhanced control for logistic storage capacities
      * Logistic storage capacities are not scaled on upgrading `Logistics Carrier Capacity`, if they are not set to maximum capacity or already greater than maximum capacity.
      * You can use arrow keys to adjust logistic storage capacities gracefully.
    * Logistics Control Panel Improvement
      * Auto apply filter with item under mouse cursor while opening the panel
      * Quick-set item filter while right-clicking item icons in storage list on the panel
    * Allow overflow for Logistic Stations and Advanced Mining Machines
      * Allow overflow when trying to insert in-hand items
      * Allow `Enhanced control for logistic storage capacities` to exceed tech capacity limits
      * Remove logistic strorage capacity limit check on loading game
    * Real-time logistic stations info panel
    * Auto-config logistic stations
      * Auto-config buildings include: Logistics Distributor, PLS, ILS, Advanced Mining Machine
      * Apply settings to all existing facilities on the current planet
        * Each setting on the Logistics tab has an `Apply` button that pushes that single value to all facilities of that type on the current planet.
        * Each category header (Logistics Distributor, Battlefield Analysis Base, PLS, ILS, Advanced Mining Machine) has an `Apply All` button that pushes every setting of that category to all facilities of that type on the current planet.
  * Player/Mecha
    * Unlimited interactive range
    * Enable player actions in globe view
    * Hide tips for soil piles changes
    * Enhanced count control for hand-make
    * Auto navigation on sailings
      * It keeps Icarus on course to the target planet
      * It will try to bypass any obstacles(planets, stars or dark-fog hives) on the way
      * Furthermore, you can set a shortcut key in the system options window, which is used to toggle `Auto-cruise` that enables flying to targeted planets fully automatically.
        * Auto-cruise will start when you select a planet as target
        * It will use warper to fly to the target planet if the planet is too far away, the range can be configured.
        * It will speed down when approaching the target planet, to avoid overshooting
  * Dyson Sphere
    * Stop ejectors when available nodes are all filled up
    * Construct only structure points but frames
    * Re-initialize Dyson Spheres
    * Quick dismantle Dyson Shells
    * Dyson Sphere "Auto Fast Build" speed multiplier
      * Note: this only applies to `Dyson Sphere "Auto Fast Build"` in sandbox mode
  * Tech
    * Restore upgrades of `Sorter Cargo Stacking` on panel
    * Set `Sorter Cargo Stacking` to unresearched state
    * Buy out techs with their prerequisites
      * This enables batch buying out techs with their prerequisites. Buy-out button is shown for all locked techs/upgrads.
  * Combat
    * Open Dark Fog Communicator anywhere
  * UI
    * Embedded [Planet Vein Untilization](https://thunderstore.io/c/dyson-sphere-program/p/testpushpleaseignore/Planet_Vein_Utilization/) due to its lack of maintainance, with minor bug fixes.
    * Shortcut keys for showing stars' name
      * Add a shortcut key to always show all star names in starmap when holding, default is `Alt`
      * Add a shortcut key to toggle between three star name display states in starmap: `Original state`, `Show all names`, `Hide all names`, default is `Tab`, will restore to original state when closing starmap
    * Starmap view:
      * Add a star name filter, you can filter displayed star names by ores or planet types now.
      * Add a dropdown box to show all stars' distance and/or planet count.
    * Show top players in milkyway
      * The button is available on top-left corner of Milkyway View
    * Show recent milkyway upload results
      * The button is on UXAssist `General` tab.

## Notes

* Please upgrade `BepInEx` 5.4.21 or later if using with [BlueprintTweaks](https://dsp.thunderstore.io/package/kremnev8/BlueprintTweaks/) to avoid possible conflicts.
  * You can download [BepInEx here](https://github.com/bepinex/bepinex/releases/latest)(choose x64 edition).
  * If using with r2modman, you can upgrade `BepInEx` by clicking `Settings` -> `Browse profile folder`, then extract downloaded zip to the folder and overwrite existing files.

## CREDITS

* [Dyson Sphere Program](https://store.steampowered.com/app/1366540): The great game
* [Multifunction_mod](https://github.com/blacksnipebiu/Multifunction_mod): Some cheat functions
* [LSTM](https://github.com/hetima/DSP_LSTM) & [PlanetFinder](https://github.com/hetima/DSP_PlanetFinder): UI implementations
* [OffGridConstruction](https://github.com/Velociraptor115-DSPModding/OffGridConstruction): Off-grid building & stepped rotation implementations
* [CruiseAssist](https://dsp.thunderstore.io/package/tanu/CruiseAssist/) and its extension [AutoPilot](https://dsp.thunderstore.io/package/tanu/AutoPilot/): `Auto navigation on sailings` and `Auto-cruise` implementations
* [Planet Vein Untilization](https://thunderstore.io/c/dyson-sphere-program/p/testpushpleaseignore/Planet_Vein_Utilization/)

</details>

<details>
<summary>中文读我</summary>

***一些提升用户体验的功能和补丁***

## Bug反馈

* QQ群：372754090

## 使用说明

* 按 `` Alt+`(反引号) `` 键呼出主面板，可以在面板上修改快捷键。
* 标题界面和行星小地图旁也有按钮呼出主面板。
* 补丁：
  * 更严格的建造菜单热键检测，因此在按住Ctrl/Alt/Shift时不再会触发建造热键(0~9, F1~F10, X, U)
  * 修复了`矿物利用`升级到8000级以上时弹出警告的bug
  * 保存蓝图前对建筑进行排序，以减少生成的蓝图数据大小
  * 将元数据提取的最大数量增加到20000(原来为2000)
  * 将玩家指令队列的容量增加到128(原来为16)
  * 在星图视图中启用`隐藏UI`功能(默认按键为`F11`)
  * 如果使用mod管理器(`Thunderstore Mod Manager`或`r2modman`)启动游戏，在游戏窗口标题中追加mod配置档案名
* 功能：
  * 通用
    * 可调整游戏窗口大小(可最大化和拖动边框)
    * 记住上次退出时的窗口位置和大小
    * 在加载和平模式存档时将其转换为战斗模式
    * 基于mod管理器配置档案名的存档文件夹
      * 存档文件会存储在`Save\<ProfileName>`文件夹中
      * 如果匹配默认配置档案名则使用原始存档位置
    * 基于mod管理器配置档案名的选项文件
      * 选项文件存储为`Options\<ProfileName>.xml`
    * 逻辑帧倍率
      * 这将改变游戏运行速度，最慢0.1倍，最快10倍
      * 设置了一对快捷键(`-`和`+`)，可以-/+0.5倍改变逻辑帧倍率
      * 注意：
        * 高逻辑帧倍率不能保证稳定性，特别是在工厂负载较重时
        * 这不会影响一些游戏动画
        * 当在`Auxilaryfunction`mod中设置游戏速度时，此功能将被禁用
        * 当安装了`BulletTime`mod时，此功能将被隐藏，但会对`BulletTime`的速度控制打补丁，使其最大速度变为10倍
    * 设置进程优先级
    * 将元数据提取的最大数量增加到20000(原来为2000)
    * 将玩家指令队列的容量增加到128(原来为16)
  * 工厂
    * 夜间日光灯
    * 移除部分不影响游戏逻辑的建造条件
    * 范围升级和拆除的最大区域扩大(最大30x30)
    * 范围铺设地基的最大区域扩大(最大30x30)
    * 脱离网格建造以及小角度旋转
    * 切割传送带
      * 按快捷键切割光标位置的传送带
      * 默认快捷键是Alt+X，可以在系统选项面板中设置
    * 在流速计中将堆叠物品视为单个物品
    * 快速建造和拆除堆叠研究站/储物仓/储液罐
    * 储液罐快速注入和抽取液体
      * 你可以设置储液罐操作速度的倍率
      * 影响手动注入和抽取，以及从储液罐上层传输到下层的速度
    * 保护矿脉不会耗尽
      * 默认矿脉数量保护在100，采油速保护在1.0/s，你可以在配置文件中自行设置。
      * 当达到保护值时，矿脉和油井将不再被开采。
      * 关闭此功能以恢复开采，一般是当你在`矿物利用`上有足够的等级时。
    * 不渲染工厂建筑实体(除了传送带和分拣器)
      * 这也使玩家可以点穿工厂实体直接点到传送带和分拣器
    * 拖动建造电线杆时自动使用最大连接距离间隔
    * 自动建造
      * 自动飞向待建造的建筑
    * 拆除蓝图选中的建筑
      * 在蓝图复制模式下按快捷键拆除选中的建筑
      * 默认快捷键是Ctrl+X，可以在系统选项面板中设置
    * 初始化本行星（不重置矿脉）
      * 有3个可返还特定物品的选项
    * 快速拆除所有建筑（不掉落）
    * 快速建造轨道采集器
    * 用于自动购买黑雾物品的传送带信号
      * 在信号面板上添加了6个传送带信号，可以用于自动购买黑雾道具。
      * 生成的物品堆叠数为4。
      * 兑换比率遵循原始游戏设计，即：
        * 1个元宇宙 = 20个黑雾矩阵
        * 1个元宇宙 = 60个能量碎片
        * 1个元宇宙 = 30个硅基神经元
        * 1个元宇宙 = 30个负熵奇点
        * 1个元宇宙 = 30个物质重组器
        * 1个元宇宙 = 10个核心素
    * 调整建筑输入缓冲
      * 工厂配方计算公式，在`工厂配方缓冲时间倍率秒数x每秒需要的原料数量`和`工厂配方缓冲最小倍率x每生产一次配方需要的原料数量`中取更大的那个值
        * `工厂配方缓冲时间倍率(秒)`：范围2-10，默认为4(同游戏)
        * `工厂配方缓冲最小倍率`：范围2-10，默认为2(同游戏)
      * 研究站矩阵合成模式计算公式，默认缓存`研究站矩阵合成模式缓存数量`个，当使用自演化研究站时，如果配方的原始生产时间不大于9秒，则增加`自演化研究站矩阵额外缓冲数量`*(`研究站速度倍率`-1)
        * `研究站矩阵合成模式缓存数量`：范围2-20，默认为6(同游戏)
        * `自演化研究站矩阵额外缓冲数量`：范围1-10，默认为3(同游戏)
      * `研究站科研模式缓存数量`：范围2-20，默认为10(同游戏)
      * `射线接收器透镜缓冲数量`：范围1-20，默认为1(游戏默认为20)
      * `弹射太阳帆缓冲区数量`：范围5-400（步进值为5），默认值为20（与游戏相同）
      * `发射井火箭缓冲区数量`：范围1-20，默认值为20（与游戏相同）
  * 物流
    * 物流塔存储数量限制控制改进
      * 当升级`运输机舱扩容`时，不会对各种物流塔的存储限制按比例提升，除非设置为最大允许容量或者已经超过升级后的最大容量。
      * 你可以使用方向键微调物流塔存储限制
    * 物流控制面板改进
      * 打开面板时自动将鼠标指向物品设为筛选条件
      * 在控制面板物流塔列表中右键点击物品图标快速设置为筛选条件
    * 允许物流塔和大型采矿机物品溢出
      * 当尝试塞入手中物品时允许溢出
      * 允许`物流塔存储数量限制控制改进`超过科技容量限制
      * 在加载游戏时移除物流塔容量限制检查
    * 物流运输站实时信息面板
      * 注意：如果你启用了`Auxilaryfunction`中的`展示物流站信息`，此功能将被隐藏
    * 自动配置物流站
      * 自动配置的建筑包括：物流配送器、行星物流站、星际物流站、高级采矿机
      * 将设置应用到当前行星上所有已建成的物流设施
        * 物流标签页上每一项设置右侧都有一个`应用`按钮，按下后将该项数值应用到当前行星上所有该类型的物流设施。
        * 每个大分类标题（物流配送器、战场分析基站、行星物流站、星际物流站、大型采矿机）右侧都有一个`应用全部`按钮，按下后将该分类的所有设置数值应用到当前行星上所有该类型的物流设施。
  * 玩家/机甲
    * 无限交互距离
    * 移除建造数量和范围限制
    * 在行星视图中允许玩家操作
    * 隐藏沙土数量变动的提示
    * 手动制造物品的数量控制改进
    * 航行时自动导航
      * 它会保持伊卡洛斯飞向目标星球
      * 它会尝试绕过途中的任何障碍物(行星、恒星或黑雾巢穴)
      * 此外，可以在系统选项窗口中设置快捷键，用于切换`自动巡航`，实现完全自动化的飞行至目标星球。
        * 当你选择目标星球后，自动巡航就会开始
        * 如果目标星球距离过远会自动使用曲速(超过5AU)，你可以在面板上更改这个值。
        * 它会在接近目标星球时减速，以避免发生越过目标的情况
  * 戴森球
    * 可用节点全部造完时停止弹射
    * 只建造节点不建造框架
    * 初始化戴森球
    * 快速拆除戴森壳
    * 戴森球自动快速建造速度倍率
      * 注意：这仅适用于沙盒模式下的`戴森球自动快速建造`功能
  * 科研
    * 在升级面板上恢复`分拣器货物堆叠`的升级
    * 将`分拣器货物堆叠`设为未研究状态
    * 买断科技也同时买断所有前置科技
      * 这使得可以批量买断科技及其所有前置科技。所有未解锁的科技/升级都会显示买断按钮。
  * 战斗
    * 在任意位置打开黑雾通讯器
  * UI
    * 启用显示所有星系名称的快捷键
      * 新增一个快捷键，按住后始终在星图显示所有星系名称，默认为`Alt`
      * 新增一个快捷键，在星图视图切换三种星系名称显示状态：`原始显示状态`，`显示所有名称`，`隐藏所有名称`，默认为`Tab`，关闭星图时会恢复到原始状态
    * 星图：
      * 添加星系名过滤器，现在可以按矿物或行星类型过滤显示的星系名
      * 添加了一个下拉框用以切换显示所有星系的距离和/或行星数量
    * 由于原MOD缺乏维护，整合内置了[Planet Vein Untilization](https://thunderstore.io/c/dyson-sphere-program/p/testpushpleaseignore/Planet_Vein_Utilization/)，并修复了一些小错误。
    * 显示银河系发电量排行
      * 按钮位于银河视图左上角
    * 显示最近银河系上传结果
      * 按钮在UXAssist的`常规`标签页内

## 注意事项

* 如果和[BlueprintTweaks](https://dsp.thunderstore.io/package/kremnev8/BlueprintTweaks/)一起使用，请升级`BepInEx`到5.4.21或更高版本，以避免可能的冲突。
  * 你可以在[这里](https://github.com/bepinex/bepinex/releases/latest)（选择x64版本）下载`BepInEx`。
  * 如果使用r2modman，你可以点击`Settings` -> `Browse profile folder`，然后将下载的zip解压到该文件夹并覆盖现有文件。

## 鸣谢

* [戴森球计划](https://store.steampowered.com/app/1366540): 伟大的游戏
* [BepInEx](https://bepinex.dev/): 基础模组框架
* [LSTM](https://github.com/hetima/DSP_LSTM) & [PlanetFinder](https://github.com/hetima/DSP_PlanetFinder): UI实现
* [OffGridConstruction](https://github.com/Velociraptor115-DSPModding/OffGridConstruction): 脱离网格建造以及小角度旋转的实现
* [CruiseAssist](https://dsp.thunderstore.io/package/tanu/CruiseAssist/)及其扩展[AutoPilot](https://dsp.thunderstore.io/package/tanu/AutoPilot/): `航行时自动导航`和`自动巡航`的实现
* [Planet Vein Untilization](https://thunderstore.io/c/dyson-sphere-program/p/testpushpleaseignore/Planet_Vein_Utilization/)

</details>
