回归stable and fix pyo3
This commit is contained in:
parent
42f68a71ea
commit
9ef84afa3f
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@ -1,5 +0,0 @@
|
||||
{
|
||||
"rust-analyzer.linkedProjects": [
|
||||
"mods/dr_game/Difficult_Rocket_rs/src/Cargo.toml"
|
||||
]
|
||||
}
|
114
mods/dr_game/Difficult_Rocket_rs/src/Cargo.lock
generated
114
mods/dr_game/Difficult_Rocket_rs/src/Cargo.lock
generated
@ -33,9 +33,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "allocator-api2"
|
||||
version = "0.2.18"
|
||||
version = "0.2.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
|
||||
checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9"
|
||||
|
||||
[[package]]
|
||||
name = "android-activity"
|
||||
@ -144,9 +144,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.19.0"
|
||||
version = "1.20.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
|
||||
checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a"
|
||||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
@ -182,9 +182,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.36"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70"
|
||||
checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
@ -337,7 +337,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"nalgebra",
|
||||
"pyo3",
|
||||
"quick-xml 0.37.0",
|
||||
"quick-xml 0.37.1",
|
||||
"rapier2d-f64",
|
||||
"raw-window-handle",
|
||||
"serde",
|
||||
@ -378,6 +378,15 @@ version = "1.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
|
||||
|
||||
[[package]]
|
||||
name = "ena"
|
||||
version = "0.14.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5"
|
||||
dependencies = [
|
||||
"log",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
version = "1.0.1"
|
||||
@ -454,9 +463,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.15.1"
|
||||
version = "0.15.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3"
|
||||
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
@ -477,7 +486,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.15.1",
|
||||
"hashbrown 0.15.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -528,9 +537,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.161"
|
||||
version = "0.2.166"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
|
||||
checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
@ -981,15 +990,16 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "parry2d-f64"
|
||||
version = "0.17.1"
|
||||
version = "0.17.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9ef77dcfb95073cf0fb746ae2ba87a747d0bc3eaf3c3fd207a53af5f33fb642"
|
||||
checksum = "7ddb8f75aa4a6402cc22b47efb61deb2e9534543df78309699877dcaa4dae7ec"
|
||||
dependencies = [
|
||||
"approx",
|
||||
"arrayvec",
|
||||
"bitflags 2.6.0",
|
||||
"downcast-rs",
|
||||
"either",
|
||||
"ena",
|
||||
"log",
|
||||
"nalgebra",
|
||||
"num-derive",
|
||||
@ -1049,9 +1059,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
|
||||
|
||||
[[package]]
|
||||
name = "polling"
|
||||
version = "3.7.3"
|
||||
version = "3.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
|
||||
checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"concurrent-queue",
|
||||
@ -1064,9 +1074,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "portable-atomic"
|
||||
version = "1.9.0"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
|
||||
checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-crate"
|
||||
@ -1079,18 +1089,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.89"
|
||||
version = "1.0.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
|
||||
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyo3"
|
||||
version = "0.22.6"
|
||||
version = "0.23.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884"
|
||||
checksum = "f54b3d09cbdd1f8c20650b28e7b09e338881482f4aa908a5f61a00c98fba2690"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"indoc",
|
||||
@ -1106,9 +1116,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-build-config"
|
||||
version = "0.22.6"
|
||||
version = "0.23.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38"
|
||||
checksum = "3015cf985888fe66cfb63ce0e321c603706cd541b7aec7ddd35c281390af45d8"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"target-lexicon",
|
||||
@ -1116,9 +1126,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-ffi"
|
||||
version = "0.22.6"
|
||||
version = "0.23.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636"
|
||||
checksum = "6fca7cd8fd809b5ac4eefb89c1f98f7a7651d3739dfb341ca6980090f554c270"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"pyo3-build-config",
|
||||
@ -1126,9 +1136,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-macros"
|
||||
version = "0.22.6"
|
||||
version = "0.23.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453"
|
||||
checksum = "34e657fa5379a79151b6ff5328d9216a84f55dc93b17b08e7c3609a969b73aa0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"pyo3-macros-backend",
|
||||
@ -1138,9 +1148,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pyo3-macros-backend"
|
||||
version = "0.22.6"
|
||||
version = "0.23.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe"
|
||||
checksum = "295548d5ffd95fd1981d2d3cf4458831b21d60af046b729b6fd143b0ba7aee2f"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"proc-macro2",
|
||||
@ -1160,9 +1170,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.37.0"
|
||||
version = "0.37.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ffbfb3ddf5364c9cfcd65549a1e7b801d0e8d1b14c1a1590a6408aa93cfbfa84"
|
||||
checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"serde",
|
||||
@ -1245,9 +1255,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.38.39"
|
||||
version = "0.38.41"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee"
|
||||
checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"errno",
|
||||
@ -1295,18 +1305,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.214"
|
||||
version = "1.0.215"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5"
|
||||
checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.214"
|
||||
version = "1.0.215"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766"
|
||||
checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1401,9 +1411,9 @@ checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.87"
|
||||
version = "2.0.89"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
|
||||
checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1418,18 +1428,18 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.68"
|
||||
version = "1.0.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892"
|
||||
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.68"
|
||||
version = "1.0.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e"
|
||||
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1480,9 +1490,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.40"
|
||||
version = "0.1.41"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
|
||||
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
|
||||
dependencies = [
|
||||
"pin-project-lite",
|
||||
"tracing-core",
|
||||
@ -1490,9 +1500,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.32"
|
||||
version = "0.1.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
|
||||
checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
|
||||
|
||||
[[package]]
|
||||
name = "ttf-parser"
|
||||
@ -1508,9 +1518,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.13"
|
||||
version = "1.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
|
||||
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-segmentation"
|
||||
@ -1750,9 +1760,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wide"
|
||||
version = "0.7.28"
|
||||
version = "0.7.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690"
|
||||
checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"safe_arch",
|
||||
|
@ -21,7 +21,7 @@ quick-xml = { version = "0.37", features = ["serialize"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
|
||||
nalgebra = "0.33"
|
||||
pyo3 = { version = "0.22", features = [
|
||||
pyo3 = { version = "0.23", features = [
|
||||
"extension-module",
|
||||
"macros",
|
||||
"py-clone",
|
||||
|
@ -1,3 +0,0 @@
|
||||
[toolchain]
|
||||
# 记得 rustup 完 cargo clean
|
||||
channel = "nightly"
|
@ -14,7 +14,11 @@ mod renders;
|
||||
/// sr1 的逆天数据结构解析
|
||||
mod sr1_parse;
|
||||
|
||||
use pyo3::prelude::*;
|
||||
use pyo3::{
|
||||
pyfunction, pymodule,
|
||||
types::{PyModule, PyModuleMethods},
|
||||
wrap_pyfunction, Bound, PyResult,
|
||||
};
|
||||
|
||||
#[pyfunction]
|
||||
fn get_version_str() -> String { env!("CARGO_PKG_VERSION").to_string() }
|
||||
|
@ -10,6 +10,9 @@ pub struct PyConsole {
|
||||
pub keyboard_input_receiver: Option<std::sync::mpsc::Receiver<String>>,
|
||||
}
|
||||
|
||||
/// 额, 就先这样吧(逃
|
||||
unsafe impl Sync for PyConsole {}
|
||||
|
||||
#[pymethods]
|
||||
impl PyConsole {
|
||||
#[new]
|
||||
|
@ -43,6 +43,8 @@ pub struct PySR1PartType {
|
||||
|
||||
impl PySR1PartType {
|
||||
pub fn new(data: SR1PartType) -> Self { Self { data } }
|
||||
|
||||
pub fn ref_new(data: &SR1PartType) -> Self { Self { data: data.clone() } }
|
||||
}
|
||||
|
||||
#[pymethods]
|
||||
@ -99,12 +101,16 @@ impl PySR1PartList {
|
||||
}
|
||||
|
||||
fn as_dict(&self) -> HashMap<String, PySR1PartType> {
|
||||
self.data.get_cache().iter().map(|(k, v)| (k.clone(), PySR1PartType::new(v.clone()))).collect()
|
||||
let mut map = HashMap::new();
|
||||
for part_type in self.data.types.iter() {
|
||||
map.insert(part_type.name.clone(), PySR1PartType::ref_new(part_type));
|
||||
}
|
||||
map
|
||||
}
|
||||
|
||||
fn get_part_type(&self, name: String) -> Option<PySR1PartType> {
|
||||
let part_type = self.data.get_part_type(&name);
|
||||
part_type.map(PySR1PartType::new)
|
||||
part_type.map(PySR1PartType::ref_new)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,6 @@ use crate::sr1_parse::ship::{
|
||||
};
|
||||
use crate::sr1_parse::ship::{Connections as RawConnections, DisconnectedParts, Parts as RawParts};
|
||||
|
||||
use std::cell::{Cell, RefCell};
|
||||
use std::collections::HashMap;
|
||||
use std::io::Cursor;
|
||||
use std::ops::Deref;
|
||||
@ -161,18 +160,11 @@ impl SR1PartType {
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SR1PartList {
|
||||
pub types: Vec<SR1PartType>,
|
||||
pub cache: RefCell<Option<HashMap<String, SR1PartType>>>,
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
impl SR1PartList {
|
||||
pub fn new(name: String, types: Vec<SR1PartType>) -> SR1PartList {
|
||||
SR1PartList {
|
||||
types,
|
||||
cache: RefCell::new(None),
|
||||
name,
|
||||
}
|
||||
}
|
||||
pub fn new(name: String, types: Vec<SR1PartType>) -> SR1PartList { SR1PartList { types, name } }
|
||||
|
||||
pub fn from_file(file_name: String) -> Option<SR1PartList> {
|
||||
if let Ok(raw_list) = RawPartList::from_file(file_name) {
|
||||
@ -182,21 +174,8 @@ impl SR1PartList {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn get_cache(&self) -> HashMap<String, SR1PartType> {
|
||||
if self.cache.borrow().is_none() {
|
||||
let mut map = HashMap::new();
|
||||
for part in self.types.iter() {
|
||||
map.insert(part.id.clone(), part.clone());
|
||||
}
|
||||
let cache = Some(map.clone());
|
||||
self.cache.replace(cache);
|
||||
}
|
||||
self.cache.borrow().clone().unwrap()
|
||||
}
|
||||
|
||||
pub fn get_part_type(&self, type_name: &String) -> Option<SR1PartType> {
|
||||
let cache = self.get_cache();
|
||||
cache.get(type_name).cloned()
|
||||
pub fn get_part_type(&self, type_name: &String) -> Option<&SR1PartType> {
|
||||
self.types.iter().find(|part_type| &part_type.id == type_name)
|
||||
}
|
||||
|
||||
pub fn part_types_new(part_types: Vec<SR1PartType>, name: Option<String>) -> Self {
|
||||
@ -514,39 +493,44 @@ pub struct SR1PartDataAttr {
|
||||
pub deployed: Option<bool>,
|
||||
pub rope: Option<bool>,
|
||||
// part_type
|
||||
pub part_type: Cell<Option<SR1PartTypeEnum>>,
|
||||
pub part_type: Option<SR1PartTypeEnum>,
|
||||
}
|
||||
|
||||
impl SR1PartDataAttr {
|
||||
pub fn guess_type(&self) -> SR1PartTypeEnum {
|
||||
if let Some(part_type) = self.part_type.get() {
|
||||
pub fn guess_type(&mut self) -> SR1PartTypeEnum {
|
||||
if let Some(part_type) = self.part_type {
|
||||
return part_type;
|
||||
}
|
||||
if self.fuel.is_some() {
|
||||
self.part_type.set(Some(SR1PartTypeEnum::tank));
|
||||
return self.part_type.get().unwrap();
|
||||
self.part_type = Some(SR1PartTypeEnum::tank);
|
||||
return SR1PartTypeEnum::tank;
|
||||
}
|
||||
if self.name.is_some() {
|
||||
self.part_type.set(Some(SR1PartTypeEnum::pod));
|
||||
return self.part_type.get().unwrap();
|
||||
self.part_type = Some(SR1PartTypeEnum::pod);
|
||||
return SR1PartTypeEnum::pod;
|
||||
}
|
||||
if self.extension.is_some() {
|
||||
self.part_type.set(Some(SR1PartTypeEnum::solar));
|
||||
return self.part_type.get().unwrap();
|
||||
self.part_type = Some(SR1PartTypeEnum::solar);
|
||||
return SR1PartTypeEnum::solar;
|
||||
}
|
||||
if self.chute_x.is_some() {
|
||||
self.part_type.set(Some(SR1PartTypeEnum::parachute));
|
||||
return self.part_type.get().unwrap();
|
||||
self.part_type = Some(SR1PartTypeEnum::parachute);
|
||||
}
|
||||
SR1PartTypeEnum::strut // 默认为 Strut 开摆
|
||||
}
|
||||
|
||||
pub fn get_part_type(&self) -> SR1PartTypeEnum {
|
||||
if let Some(part_type) = self.part_type.get() {
|
||||
pub fn get_part_type(&mut self) -> SR1PartTypeEnum {
|
||||
if let Some(part_type) = self.part_type {
|
||||
return part_type;
|
||||
}
|
||||
self.guess_type()
|
||||
}
|
||||
|
||||
pub unsafe fn get_part_type_none_mut(&self) -> SR1PartTypeEnum {
|
||||
let slf = self as *const Self as *mut Self;
|
||||
(*slf).get_part_type()
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub fn new(
|
||||
fuel: Option<f64>,
|
||||
@ -579,7 +563,7 @@ impl SR1PartDataAttr {
|
||||
inflation,
|
||||
deployed,
|
||||
rope,
|
||||
part_type: Cell::new(part_type),
|
||||
part_type,
|
||||
}
|
||||
}
|
||||
|
||||
@ -605,7 +589,7 @@ impl SR1PartDataAttr {
|
||||
} else {
|
||||
(None, None, None, None)
|
||||
};
|
||||
let results = SR1PartDataAttr {
|
||||
let mut results = SR1PartDataAttr {
|
||||
fuel,
|
||||
name,
|
||||
throttle,
|
||||
@ -620,10 +604,10 @@ impl SR1PartDataAttr {
|
||||
inflation: raw_data.inflation,
|
||||
deployed: raw_data.deployed.map(|i| i != 0),
|
||||
rope: raw_data.rope.map(|i| i != 0),
|
||||
part_type: Cell::new(part_type),
|
||||
part_type,
|
||||
};
|
||||
|
||||
if guess & results.part_type.get().is_none() {
|
||||
if guess & results.part_type.is_none() {
|
||||
results.guess_type();
|
||||
}
|
||||
results
|
||||
|
@ -90,7 +90,7 @@ pub struct Part {
|
||||
pub inflate: Option<i8>,
|
||||
#[serde(rename = "@inflation")]
|
||||
pub inflation: Option<f64>,
|
||||
#[serde(rename = "@deployed")]
|
||||
#[serde(rename = "@exploded")]
|
||||
pub exploded: Option<i8>,
|
||||
#[serde(rename = "@rope")]
|
||||
pub rope: Option<i8>,
|
||||
@ -289,7 +289,7 @@ impl Connection {
|
||||
impl SR1PartDataTrait for Part {
|
||||
fn to_sr_part_data(&self) -> SR1PartData {
|
||||
let attr = SR1PartDataAttr::from_raw(self, None, true);
|
||||
let part_type = attr.get_part_type();
|
||||
let part_type = unsafe { attr.get_part_type_none_mut() };
|
||||
SR1PartData {
|
||||
attr,
|
||||
x: self.x,
|
||||
|
@ -18,7 +18,7 @@ if __name__ == "__main__":
|
||||
os.chdir("./mods/dr_game/Difficult_Rocket_rs/src")
|
||||
os.chdir("./src")
|
||||
|
||||
subprocess.run(["cargo", "fmt", "--all"])
|
||||
subprocess.run(["cargo", "+nightly", "fmt", "--all"])
|
||||
|
||||
if args.clean:
|
||||
subprocess.run(["cargo", "clean"])
|
||||
|
Loading…
Reference in New Issue
Block a user