feat: Translate
This commit is contained in:
parent
94fb280d98
commit
04636e0979
6
DR.py
6
DR.py
@ -28,7 +28,9 @@ def print_path() -> None:
|
||||
print(f'{sys.path=}')
|
||||
print(f'{sys.path[0]=}')
|
||||
print(f'{sys.argv[0]=}')
|
||||
print(f'{os.curdir=}')
|
||||
print(f'{os.getcwd()=}')
|
||||
print(f'{os.path.abspath(os.curdir)=}')
|
||||
print(f'{os.path.abspath(__file__)=}')
|
||||
print(f'{os.path.realpath(__file__)=}')
|
||||
print(f'{os.path.split(os.path.split(os.path.realpath(__file__))[0])=}')
|
||||
@ -49,10 +51,10 @@ def main() -> None:
|
||||
from Difficult_Rocket import crash
|
||||
from Difficult_Rocket import DR_option
|
||||
try:
|
||||
from libs.pyglet_rs import get_version_str
|
||||
from libs.pyglet_rs import get_version_str, patch_vector
|
||||
print('pyglet_rs available:', get_version_str())
|
||||
print('trying to patch pyglet_rs')
|
||||
from libs.pyglet_rs import patch_vector
|
||||
patch_vector()
|
||||
except ImportError as e:
|
||||
print('pyglet_rs import error')
|
||||
traceback.print_exc()
|
||||
|
BIN
docs/src/nuitka/20230406-xml-parse-nuitka-pyinstaller.png
Normal file
BIN
docs/src/nuitka/20230406-xml-parse-nuitka-pyinstaller.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 196 KiB |
@ -22,7 +22,23 @@
|
||||
- [![Readme-gitee](https://img.shields.io/badge/Readme-中文(点我!)-blue.svg?style=flat-square)](../../README.md)
|
||||
- Using [SemVer 2.0.0](https://semver.org/) to manage version
|
||||
|
||||
## 202304 DR `0.7.2.1`
|
||||
## 202304 DR `0.7.2.2` + DR_rs `0.2.7.0`
|
||||
|
||||
### DR_rs V 0.2.7.0
|
||||
|
||||
- `python::translate::Translate`
|
||||
- 正在尝试用 Rust 重写一遍 `Difficult_Rocket.utils.translate`
|
||||
- Trying to rewrite `Difficult_Rocket.utils.translate` in Rust
|
||||
|
||||
### Changes
|
||||
|
||||
- `DR.py`
|
||||
- 向输出环境信息的地方加入 运行目录 信息
|
||||
- Add running directory information to the place where the output environment information
|
||||
- `os.curdir`
|
||||
- `os.path.abspath(os.curdir)`
|
||||
|
||||
## 20230405 DR `0.7.2.1`
|
||||
|
||||
### Changes
|
||||
|
||||
@ -218,6 +234,9 @@
|
||||
### 内部协议 13
|
||||
|
||||
```python
|
||||
from collections import namedtuple
|
||||
Version = namedtuple("Version", ["version"]) # 版本号 (用于通过 Pycharm 的检查)
|
||||
|
||||
game_version = Version("0.7.1.2") # 游戏版本
|
||||
build_version = Version("1.1.0.0") # 编译文件版本(与游戏本体无关)
|
||||
DR_rust_version = Version("0.2.5.3") # DR 的 Rust 编写部分的版本
|
||||
@ -783,7 +802,7 @@ long_version: 一个用于标记内部协议的整数
|
||||
- `test_logging_conf.py`
|
||||
- `test_speed_of_sprite.py`
|
||||
|
||||
## 2021/06/26 V 0.4.3
|
||||
## 20210626 V 0.4.3
|
||||
|
||||
### DEBUG
|
||||
|
||||
@ -799,7 +818,7 @@ long_version: 一个用于标记内部协议的整数
|
||||
- add performance_test folder
|
||||
- add some performances test
|
||||
|
||||
## 2021/05/24 V 0.4.2
|
||||
## 20210524 V 0.4.2
|
||||
|
||||
### DEBUG
|
||||
|
||||
@ -815,7 +834,7 @@ long_version: 一个用于标记内部协议的整数
|
||||
|
||||
- debug name_format
|
||||
|
||||
## 2021/04/17 V 0.4.1
|
||||
## 20210417 V 0.4.1
|
||||
|
||||
PS:
|
||||
|
||||
@ -836,7 +855,7 @@ PS:
|
||||
- plan to change config file format to .config (plan to)
|
||||
- reformat all files (including libs)
|
||||
|
||||
## 2021/04/09 V 0.2.3/4
|
||||
## 20210409 V 0.2.3/4
|
||||
|
||||
### Add
|
||||
|
||||
@ -853,7 +872,7 @@ PS:
|
||||
- `{date}` can be successful use in `tools.name_handler()` (if you define the format of date)
|
||||
- log file's filename incorrect (should be `xxxx-xx-xx xx-xx-xx DR.log` but be `{date} DR.log`)
|
||||
|
||||
## 2021/03/27 V 0.2.2/1
|
||||
## 20210327 V 0.2.2/1
|
||||
|
||||
### Add
|
||||
|
||||
|
@ -7,13 +7,14 @@
|
||||
*/
|
||||
|
||||
pub mod data {
|
||||
use pyo3::prelude::*;
|
||||
use serde_xml_rs::from_str;
|
||||
use std::collections::HashMap;
|
||||
|
||||
use pyo3::prelude::*;
|
||||
|
||||
use crate::sr1_data::part_list::RawPartList;
|
||||
use crate::sr1_data::ship::RawShip;
|
||||
use crate::types::sr1::{SR1PartList, SR1PartListTrait, SR1PartType, SR1Ship};
|
||||
use crate::types::sr1::{SR1PartList, SR1PartType, SR1Ship};
|
||||
use crate::types::sr1::{SR1PartListTrait, SR1ShipTrait};
|
||||
|
||||
#[pyclass]
|
||||
#[pyo3(name = "SR1PartType_rs")]
|
||||
@ -77,10 +78,32 @@ pub mod data {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[pyclass]
|
||||
#[pyo3(name = "SR1Ship_rs")]
|
||||
#[pyo3(
|
||||
text_signature = "(file_path = './configs/dock1.xml', part_list = './configs/PartList.xml', ship_name = 'NewShip')"
|
||||
)]
|
||||
pub struct PySR1Ship {
|
||||
pub ship: SR1Ship,
|
||||
pub part_list: SR1PartList,
|
||||
}
|
||||
|
||||
#[pymethods]
|
||||
impl PySR1Ship {
|
||||
#[new]
|
||||
fn new(file_path: String, part_list: String, ship_name: String) -> Self {
|
||||
let raw_ship: RawShip = RawShip::from_file(file_path).unwrap();
|
||||
let ship = raw_ship.to_sr_ship(Some(ship_name));
|
||||
let part_list = SR1PartList::from_file(part_list).unwrap();
|
||||
Self { ship, part_list }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub mod translate {
|
||||
use pyo3::prelude::*;
|
||||
use pyo3::types::PyDict;
|
||||
|
||||
#[pyclass]
|
||||
pub struct TranslateConfig {
|
||||
@ -94,8 +117,8 @@ pub mod translate {
|
||||
|
||||
#[pyclass]
|
||||
pub struct Translate {
|
||||
pub data: PyObject,
|
||||
pub data: Py<PyDict>,
|
||||
pub get_list: Vec<(String, bool)>,
|
||||
pub config: Config,
|
||||
pub config: TranslateConfig,
|
||||
}
|
||||
}
|
||||
|
@ -100,14 +100,17 @@ pub mod part_list {
|
||||
}
|
||||
|
||||
impl AttachPoints {
|
||||
#[inline]
|
||||
pub fn new(attaches: Vec<AttachPoint>) -> Self {
|
||||
AttachPoints { points: attaches }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn insert(&mut self, attach: AttachPoint) {
|
||||
self.points.push(attach);
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn unzip(&self) -> Vec<AttachPoint> {
|
||||
self.points.clone()
|
||||
}
|
||||
@ -124,6 +127,7 @@ pub mod part_list {
|
||||
}
|
||||
|
||||
impl Damage {
|
||||
#[inline]
|
||||
pub fn to_damage(&self) -> crate::types::sr1::Damage {
|
||||
crate::types::sr1::Damage {
|
||||
disconnect: self.disconnect,
|
||||
@ -235,6 +239,7 @@ pub mod part_list {
|
||||
}
|
||||
|
||||
impl SR1PartTypeData for RawPartType {
|
||||
#[inline]
|
||||
fn to_sr_part_type(&self) -> SR1PartType {
|
||||
let part_attr: Option<SR1PartTypeAttr> = match self.r#type {
|
||||
SR1PartTypeEnum::tank => {
|
||||
@ -347,6 +352,7 @@ pub mod part_list {
|
||||
}
|
||||
|
||||
impl SR1PartListTrait for RawPartList {
|
||||
#[inline]
|
||||
fn to_sr_part_list(&self, name: Option<String>) -> SR1PartList {
|
||||
let mut types: Vec<SR1PartType> = Vec::new();
|
||||
for part_data in self.part_types.iter() {
|
||||
@ -360,6 +366,7 @@ pub mod part_list {
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[pyfunction]
|
||||
#[pyo3(name = "part_list_read_test", signature = (file_name = "./configs/PartList.xml".to_string()))]
|
||||
pub fn read_part_list_py(_py: Python, file_name: Option<String>) -> PyResult<()> {
|
||||
@ -376,11 +383,14 @@ pub mod part_list {
|
||||
|
||||
#[allow(unused)]
|
||||
pub mod ship {
|
||||
use std::fs;
|
||||
|
||||
use pyo3::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
// use quick_xml::de::from_str;
|
||||
use serde_xml_rs::from_str;
|
||||
use serde_xml_rs::{expect, from_str};
|
||||
|
||||
use crate::types::sr1::{SR1Ship, SR1ShipTrait};
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct RawShip {
|
||||
@ -518,7 +528,24 @@ pub mod ship {
|
||||
pub child_part: i64,
|
||||
}
|
||||
|
||||
// pub fn read_ship_from_file(file_name: String) -> Result<RawShip, String> {
|
||||
impl SR1ShipTrait for RawShip {
|
||||
#[inline]
|
||||
fn to_sr_ship(&self, name: Option<String>) -> SR1Ship {
|
||||
todo!()
|
||||
}
|
||||
|
||||
// }
|
||||
#[inline]
|
||||
fn to_raw_ship(&self) -> RawShip {
|
||||
self.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl RawShip {
|
||||
#[inline]
|
||||
pub fn from_file(path: String) -> Option<RawShip> {
|
||||
let ship_file = fs::read_to_string(path).unwrap();
|
||||
let ship: RawShip = from_str(&ship_file).unwrap();
|
||||
Some(ship)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,12 +8,13 @@
|
||||
|
||||
pub mod sr1 {
|
||||
use std::collections::HashMap;
|
||||
// use super::math::{Shape, Point2D};
|
||||
|
||||
use crate::sr1_data::part_list::Damage as RawDamage;
|
||||
use crate::sr1_data::part_list::{
|
||||
AttachPoint, AttachPoints, Engine, Lander, Rcs, Shape as RawShape, Solar, Tank,
|
||||
};
|
||||
use crate::sr1_data::part_list::{RawPartList, RawPartType, SR1PartTypeEnum};
|
||||
use crate::sr1_data::ship::RawShip;
|
||||
|
||||
#[inline]
|
||||
pub fn map_ptype_textures(ptype: String) -> String {
|
||||
@ -212,6 +213,14 @@ pub mod sr1 {
|
||||
}
|
||||
|
||||
impl SR1PartList {
|
||||
pub fn from_file(file_name: String) -> Option<SR1PartList> {
|
||||
if let Some(raw_list) = RawPartList::from_file(file_name) {
|
||||
return Some(raw_list.to_sr_part_list(None));
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn get_hash_map(&mut self) -> HashMap<String, SR1PartType> {
|
||||
if let Some(map) = &self.cache {
|
||||
return map.clone();
|
||||
@ -235,6 +244,11 @@ pub mod sr1 {
|
||||
fn to_raw_part_list(&self) -> RawPartList;
|
||||
}
|
||||
|
||||
pub trait SR1ShipTrait {
|
||||
fn to_sr_ship(&self, name: Option<String>) -> SR1Ship;
|
||||
fn to_raw_ship(&self) -> RawShip;
|
||||
}
|
||||
|
||||
impl SR1PartList {
|
||||
#[inline]
|
||||
pub fn new(name: String, types: Vec<SR1PartType>) -> Self {
|
||||
@ -402,6 +416,7 @@ pub mod sr1 {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SR1Ship {
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
@ -410,6 +425,24 @@ pub mod sr1 {
|
||||
pub lift_off: bool,
|
||||
pub touch_ground: bool,
|
||||
}
|
||||
|
||||
impl SR1ShipTrait for SR1Ship {
|
||||
#[inline]
|
||||
fn to_sr_ship(&self, name: Option<String>) -> SR1Ship {
|
||||
if let Some(name) = name {
|
||||
let mut dupe = self.clone();
|
||||
dupe.name = name;
|
||||
dupe
|
||||
} else {
|
||||
self.clone()
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn to_raw_ship(&self) -> RawShip {
|
||||
todo!() // 1145行的内容
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
|
Loading…
Reference in New Issue
Block a user