Skip to content

Commit b1ce797

Browse files
committed
Update README
1 parent 4dab9ef commit b1ce797

File tree

4 files changed

+577
-85
lines changed

4 files changed

+577
-85
lines changed

README zh-CN.md

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
# PearlCalculatorCore
2+
3+
只是一个珍珠计算器核心计划的尝试而已。
4+
5+
[English](README.md) | [繁體中文](README zh-TW.md)
6+
7+
# Bug报告规则
8+
9+
1. 所有报告者须在Github的Issues中报告;
10+
2. 报告者须亲身发现此问题;
11+
12+
若 报告/报告者 违反以上内容,该报告将不被考虑。
13+
14+
# 前置
15+
16+
在运行本仓库的所有软件前,请先安装`dotnet Core`运行时
17+
18+
- [dotnet Core 3.1](https://dotnet.microsoft.com/download)
19+
20+
# PearlCalculatorCP
21+
22+
这是一个基于[AvaloniaUI](https://github.com/AvaloniaUI/Avalonia)的跨平台前端,可用于输入参数及展示结果。
23+
24+
## 支持语言
25+
26+
- English
27+
- 繁體中文
28+
- 简体中文
29+
30+
## 如何安装
31+
32+
1. 前往 [Release](https://github.com/LegendsOfSky/PearlCalculatorCore/releases) 下载最新版本
33+
34+
2. 从源代码编译/构建
35+
36+
- 克隆此仓库
37+
38+
```
39+
git clone https://github.com/LegendsOfSky/PearlCalculatorCore.git
40+
```
41+
42+
- 构建此项目(Windows)
43+
44+
```powershell
45+
cd PearlCalculatorCore
46+
cpbuild.ps1
47+
```
48+
49+
- 构建此项目(macOS, Linux)
50+
51+
```sh
52+
cd PearlCalculatorCore
53+
cpbuild.sh
54+
```
55+
56+
> 您可能需要在运行此脚本前赋予脚本执行权限,请运行`chmod +x cpbuild.sh`。
57+
58+
## PearlCalculatorCP 运行参数
59+
60+
```
61+
options:
62+
-scale [ratio] 基于当前屏幕DPI缩放软件大小 (e.g: PearlCalculatorCP -scale 1.25)
63+
```
64+
65+
## 提示
66+
67+
- 你可以使用地毯(Carpet)模组`/log tnt`指令获取TNT的爆炸坐标;
68+
- 小心该指令的洗版;
69+
- 你可以利用软件正上方的选项功能(三个点)调整部分软件参数;
70+
- 切换语言;
71+
- 若重复选择相同语言会将其设置为软件的默认语言;
72+
- 软件开启时预设载入的配置文件;
73+
- 此软件**不会**对TNT与珍珠之间的距离做确认,若两者之间的距离超出限制,可能会导致软件出现错误结果或产生异常;
74+
- 在`通用FTL`下的`一般选项`页面中:
75+
- 你需要先对珍珠的坐标四舍五入再将其输入到`珍珠坐标`中:
76+
- 你可以将当前的参数保存为一份配置文件,此配置文件可用于多个用途,例如保存某个 服务器/设计 的珍珠炮的预设参数或者将当前的结果分享给服务器成员;
77+
- 在`通用FTL`下的`进阶选项`页面中:
78+
- 珍珠矫正偏移指珍珠与珍珠炮膛室之间的偏差(珍珠 - 珍珠炮膛室):
79+
- 在`计算结果排序参数`中:
80+
- 滑条可用于调整TNT的权重;
81+
- 单选按钮可用于调整排序方法;
82+
- 在`通用FTL`下的`更多基础选项`页面中:
83+
- TNT参数侧边的开关需被启用才能修改TNT的参数,其用途是为了防止任何意料之外的修改;
84+
- X和Z轴都是相对于`珍珠炮膛室`的相对坐标;
85+
- `预设红色TNT方位`和`预设蓝色TNT方位`必须是复合方位且成对角关系;
86+
- 在`结果输出`页面中,如果当前状态为显示TNT配比,你可以点选`距离偏移`、`游戏刻`和`总量`来调整排序,数值较小者优先;
87+
- 在`自定义FTL`页面中:
88+
- 全部的参数都在全局坐标系下;
89+
- 你可以输入最多两组TNT参数;
90+
- 如果此软件无法找出任何可能的TNT配比,此软件**不会**发出任何提示;
91+
92+
# PearlCalculatorLib
93+
94+
## General
95+
96+
所有在这个名称空间下的类都是用于计算常规的360度珍珠炮,无法处理的只有部分方向的珍珠炮。
97+
98+
- ### [Data](PearlCalculatorLib/General/Data.cs)
99+
100+
此类用于保存大部分的参数,如果必要的参数有误,[Calculation](PearlCalculatorLib/General/Calculation.cs)类中计算的结果将会错误,甚至有可能触发异常。下表罗列了每个参数的注意事项和所对应的算法,如果下方并未显示所对应的方法,则预设为`CalculateTNTAmount`、`CalculatePearlTrace`和`CalculateTNTVector`。
101+
102+
### 需要被填充的参数
103+
104+
1. `TNT`
105+
- TNT爆炸的坐标
106+
- X和Z轴需是相对于膛室的局部坐标
107+
- Y轴需是全局坐标
108+
2. `Destination`
109+
- 目的地坐标
110+
- 被使用于`CalculateTNTAmount`方法
111+
3. `Pearl`
112+
- 珍珠的动能(请使用`.WithMotion()`方法)
113+
- 珍珠的坐标(请使用`.WithPosition()`方法)
114+
- 珍珠的坐标需被四舍五入
115+
4. `PearlOffset`
116+
- 珍珠的真实坐标与上述坐标之间的偏移
117+
5. `BlueTNT`和`RedTNT`
118+
- 珍珠炮的TNT配比
119+
- 未对应任何算法,可用于保存TNT配比
120+
6. `TNTWeight`
121+
- 用于排序
122+
- 0~100之间的整数
123+
- 数值越高代表TNT数量越多的结果会被显示在上方
124+
- 被使用于[TNTCalculationResultSortComparerByWeighted](PearlCalculatorLib/PearlCalculationLib/Result/TNTCalculationResultSortComparerByWeighted.cs)中
125+
7. `MaxTNT`
126+
- 珍珠炮的最大TNT数量(单边)
127+
- 被使用于`CalculateTNTAmount`
128+
8. `MaxCalculateTNT`, `MaxCalculateDistance`
129+
- 请留空
130+
9. `Direction`
131+
- 指示珍珠的飞行方向(只运行四大方位)
132+
- 被使用于`CalculatePearlTrace`
133+
10. `DefaultRedDuper`和`DefaultBlueDuper`
134+
- 只允許复合方位
135+
- 用于指示TNT在膛室內的方位
136+
11. `TNTResult`
137+
- 用于输出/保存计算结果
138+
- 包含以下內容
139+
- 珍珠的飞行时间
140+
- 红色TNT配比
141+
- 蓝色TNT配比
142+
- 落点偏差
143+
- TNT总量(红色TNT配比 + 蓝色TNT配比)
144+
145+
#### 备注
146+
147+
对于Y轴坐标,所有参数都是全局坐标,但是,对于`TNT`和`PearlOffset`参数的X和Z轴坐标都是相对于`珍珠坐标`(既PCCSettingsGenerator的`珍珠炮膛室`)的参数,详情请参阅下图。
148+
149+
![Figure 1](figure1.png)
150+
151+
### [Calculation](PearlCalculatorLib/General/Calculation.cs)
152+
153+
这个类含有四个公开的API,这些方法负责了大部分的运算,不同的方法具备了不同的功能,详情可以查看文档注释,对于它们所需要的部分参数,请查阅[Data](PearlCalculatorLib/General/Data.cs)。
154+
155+
1. `CalculateTNTAmount` 可用于计算TNT配比并且返回一个`bool`值指示计算的成功性。而计算出的TNT配比将会被保存在[Data](PearlCalculatorLib/General/Data.cs)中的`TNTResult`;
156+
157+
2. `CalculatePearlTrace`可用于模拟珍珠的轨迹,计算出的结果将会返回一个`List<PearlEntity>`;
158+
159+
3. `CalculateTNTConfiguration`可用于协助使用者编码珍珠跑,此算法可通过填入与珍珠炮配置区相同的参数,计算出编码结果;
160+
161+
4. `CalculateTNTVector`可用于计算由TNT施加给TNT的矢量,详细信息请参阅文档注释;
162+
163+
### [Settings](PearlCalculatorLib/General/Settings.cs)
164+
165+
这个类只做为数据结构并用于json文件的序列化于反序列化。
166+
167+
## Manually
168+
169+
这个名称空间下的內容与`PearlCalculatorLib.General`名称空间下的內容相似,不同之处在与此名称空间下的输入输出皆为全局坐标。
170+
171+
## PearlCalculationLib
172+
173+
这个名称空间下的內容用于为其他的类提供底层API做复杂运算。
174+
175+
- ### AABB
176+
177+
这个名称空间保留做未来开发。
178+
179+
- ### Entity, MathLib, Utility
180+
181+
这些名称空间用于提供实用工具。
182+
183+
- ### Result
184+
185+
这个名称空间用于处理TNT配比,其中的排序方法可以根据`TNTTotal` `Tick`和`Distance`进行。
186+
187+
- ### World
188+
189+
这个名称空间用于提供对世界坐标和方向的处理。
190+
191+
- ### [VectorCalculation](PearlCalculatorLib/PearlCalculationLib/VectorCalculation.cs)
192+
193+
这个类用于通过给予TNT和珍珠的坐标,计算TNT对珍珠造成的加速度。
194+
195+
> 请注意,此算法不会处理**Mojang**设置的TNT爆炸距离限制,如果距离超过了该限制,此算法将会返回错误的结果,甚至可能会触发异常。
196+
197+
# PCCSettingsGenerator (文件夹名称 : PCCSettingsCalculator)
198+
199+
这个项目用于协助珍珠炮设计者更简便地生成配置文件,通过填入从游戏中获取的参数,此软件可将输入的数据保存为json格式的配置文件且在`PearlCalculatorCP`中使用。
200+
201+
## 支持语言
202+
203+
- 英文(English)
204+
- 繁體中文
205+
- 简体中文
206+
207+
如果你想为此软件提供语言支持,可在[PCCSettingsCalculator/Resources/](PCCSettingsCalculator/Resources/)文件夹中提供一份resx格式的翻译文件,并向我们发起PR。
208+
209+
# PearlCalculatorWFA
210+
211+
这个软件更多的用于珍珠炮的侦错,软件内已集成了许多实用的指令用于查看及修改隐藏参数,请注意,此软件`不支持`除了`英文`以外的语言,并且此软件的维护鲜少进行。
212+
213+
# PearlCalculatorCore
214+
215+
这个软件只用于Debug。

0 commit comments

Comments
 (0)