PyLibMS 2.0.4__tar.gz → 2.0.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/LMS_Field.py +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/Stream.py +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Definitions/LMS_MessageText.py +2 -3
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/MSBTStream.py +12 -5
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/ATR1.py +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/TXT2.py +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/LMS_Tag.py +2 -3
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/Stream.py +20 -10
- pylibms-2.0.6/LMS/Message/Tag/System_Definition.py +83 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Config.py +25 -22
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/Tags.py +2 -2
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/Value.py +2 -2
- pylibms-2.0.6/MANIFEST.in +2 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/PKG-INFO +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/PKG-INFO +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/SOURCES.txt +1 -1
- {pylibms-2.0.4 → pylibms-2.0.6}/pyproject.toml +1 -1
- pylibms-2.0.4/LMS/Message/Tag/System.yaml +0 -47
- pylibms-2.0.4/MANIFEST.in +0 -3
- {pylibms-2.0.4 → pylibms-2.0.6}/LICENSE +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/LMS_Exceptions.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/LMS_FileInfo.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/Stream/FileInfo.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/Stream/Hashtable.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/Stream/Section.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Common/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/LMS_DataType.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Field/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/FileIO/Encoding.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/FileIO/Stream.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Definitions/LMS_FieldMap.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Definitions/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/MSBT.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/MSBTEntry.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/TSY1.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Section/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/LMS_TagExceptions.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/Tag_Formats.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/Tag/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Message/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Attribute.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Color.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Style.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/Tag.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Definitions/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/MSBP.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/MSBPRead.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/ALI2.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/ATI2.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/CLR1.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/SYL3.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/String.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/TAG2.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/TGG2.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/Section/TGP2.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/Project/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/Attributes.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Definitions/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Presets/Tomodachi Life.yaml +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/Presets/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/TitleConfig/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/LMS/__init__.py +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/dependency_links.txt +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/requires.txt +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/PyLibMS.egg-info/top_level.txt +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/README.md +0 -0
- {pylibms-2.0.4 → pylibms-2.0.6}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from LMS.TitleConfig.Definitions.Value import ValueDefinition
|
|
2
1
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
3
2
|
from LMS.Field.LMS_Field import LMS_Field
|
|
4
3
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
4
|
+
from LMS.TitleConfig.Definitions.Value import ValueDefinition
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def read_field(reader: FileReader, definition: ValueDefinition) -> LMS_Field:
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import re
|
|
2
2
|
from typing import overload
|
|
3
3
|
|
|
4
|
-
from LMS.TitleConfig.Config import TagConfig
|
|
5
4
|
from LMS.Field.LMS_Field import LMS_Field
|
|
6
5
|
from LMS.Message.Tag.LMS_Tag import LMS_DecodedTag, LMS_EncodedTag, LMS_TagBase
|
|
7
|
-
from LMS.Message.Tag.Tag_Formats import
|
|
8
|
-
|
|
6
|
+
from LMS.Message.Tag.Tag_Formats import DECODED_FORMAT, ENCODED_FORMAT, TAG_FORMAT
|
|
7
|
+
from LMS.TitleConfig.Config import TagConfig
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
class LMS_MessageText:
|
|
@@ -3,16 +3,23 @@ from typing import BinaryIO
|
|
|
3
3
|
from LMS.Common import LMS_Exceptions
|
|
4
4
|
from LMS.Common.Stream.FileInfo import read_file_info, write_file_info
|
|
5
5
|
from LMS.Common.Stream.Hashtable import read_labels, write_labels
|
|
6
|
-
from LMS.Common.Stream.Section import (
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
from LMS.Common.Stream.Section import (
|
|
7
|
+
read_section_data,
|
|
8
|
+
write_section,
|
|
9
|
+
write_unsupported_section,
|
|
10
|
+
)
|
|
9
11
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
10
12
|
from LMS.Message.MSBT import MSBT
|
|
11
13
|
from LMS.Message.MSBTEntry import MSBTEntry
|
|
12
|
-
from LMS.Message.Section.ATR1 import (
|
|
13
|
-
|
|
14
|
+
from LMS.Message.Section.ATR1 import (
|
|
15
|
+
read_decoded_atr1,
|
|
16
|
+
read_encoded_atr1,
|
|
17
|
+
write_decoded_atr1,
|
|
18
|
+
write_encoded_atr1,
|
|
19
|
+
)
|
|
14
20
|
from LMS.Message.Section.TSY1 import read_tsy1, write_tsy1
|
|
15
21
|
from LMS.Message.Section.TXT2 import read_txt2, write_txt2
|
|
22
|
+
from LMS.TitleConfig.Config import AttributeConfig, TagConfig
|
|
16
23
|
|
|
17
24
|
|
|
18
25
|
def read_msbt(
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
|
|
2
1
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
3
2
|
from LMS.Field.LMS_Field import LMS_DataType, LMS_Field
|
|
4
3
|
from LMS.Field.Stream import read_field, write_field
|
|
5
4
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
6
5
|
from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
|
|
6
|
+
from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def read_encoded_atr1(
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
from LMS.TitleConfig.Definitions.Tags import TagConfig
|
|
2
1
|
from LMS.FileIO.Encoding import FileEncoding
|
|
3
2
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
4
3
|
from LMS.Message.Definitions.LMS_MessageText import LMS_MessageText
|
|
5
4
|
from LMS.Message.Tag.LMS_Tag import LMS_TagBase
|
|
6
5
|
from LMS.Message.Tag.Stream import read_tag, write_tag
|
|
6
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def read_txt2(
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import re
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
3
|
|
|
4
|
-
from LMS.TitleConfig.Definitions.Tags import TagConfig
|
|
5
4
|
from LMS.Field.LMS_Field import LMS_Field, cast_value
|
|
6
5
|
from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
|
|
7
6
|
from LMS.Message.Tag.LMS_TagExceptions import LMS_InvalidTagFormatError
|
|
8
|
-
from LMS.Message.Tag.Tag_Formats import
|
|
9
|
-
|
|
7
|
+
from LMS.Message.Tag.Tag_Formats import DECODED_FORMAT, ENCODED_FORMAT, PARAMETER_FORMAT
|
|
8
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
class LMS_TagBase(ABC):
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
|
|
2
1
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
3
2
|
from LMS.Field.LMS_Field import LMS_Field
|
|
4
3
|
from LMS.Field.Stream import read_field, write_field
|
|
5
4
|
from LMS.FileIO.Stream import FileReader, FileWriter
|
|
6
5
|
from LMS.Message.Definitions.LMS_FieldMap import LMS_FieldMap
|
|
7
6
|
from LMS.Message.Tag.LMS_Tag import LMS_DecodedTag, LMS_EncodedTag, LMS_TagBase
|
|
8
|
-
from LMS.Message.Tag.LMS_TagExceptions import (
|
|
9
|
-
|
|
7
|
+
from LMS.Message.Tag.LMS_TagExceptions import (
|
|
8
|
+
LMS_TagReadingError,
|
|
9
|
+
LMS_TagWritingException,
|
|
10
|
+
)
|
|
11
|
+
from LMS.Message.Tag.System_Definition import SYSTEM_GROUP
|
|
12
|
+
from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
def read_tag(
|
|
@@ -18,7 +21,8 @@ def read_tag(
|
|
|
18
21
|
) -> LMS_EncodedTag | LMS_DecodedTag:
|
|
19
22
|
end = reader.tell() + param_size
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
# System tags of group 0 are always defined, ensure they are read like any other decoded tag by default
|
|
25
|
+
if config is None and group_index > 0:
|
|
22
26
|
parameters = _read_encoded_parameters(reader, param_size)
|
|
23
27
|
|
|
24
28
|
if parameters is None:
|
|
@@ -26,7 +30,10 @@ def read_tag(
|
|
|
26
30
|
|
|
27
31
|
return LMS_EncodedTag(group_index, tag_index, parameters)
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
if group_index == 0:
|
|
34
|
+
definition = SYSTEM_GROUP[tag_index]
|
|
35
|
+
else:
|
|
36
|
+
definition = config.get_definition_by_indexes(group_index, tag_index)
|
|
30
37
|
|
|
31
38
|
# If the parameters were omitted from the definition but the tag still has defined parameters, read them.
|
|
32
39
|
# This is to account for encoded tags that group have tag names attatched.
|
|
@@ -59,20 +66,20 @@ def write_tag(writer: FileWriter, tag: LMS_TagBase) -> None:
|
|
|
59
66
|
|
|
60
67
|
if tag.parameters is None:
|
|
61
68
|
writer.write_uint16(0)
|
|
62
|
-
return
|
|
69
|
+
return
|
|
63
70
|
|
|
64
71
|
if isinstance(tag, LMS_EncodedTag):
|
|
65
72
|
_write_encoded_parameters(writer, tag.parameters)
|
|
66
73
|
else:
|
|
67
74
|
_write_decoded_parameters(writer, tag)
|
|
68
75
|
|
|
69
|
-
return
|
|
76
|
+
return
|
|
70
77
|
|
|
71
78
|
|
|
72
79
|
# --
|
|
73
80
|
def _read_encoded_parameters(reader: FileReader, param_size: int) -> list[str] | None:
|
|
74
81
|
if param_size == 0:
|
|
75
|
-
return
|
|
82
|
+
return
|
|
76
83
|
|
|
77
84
|
hex_parameters = reader.read_bytes(param_size).hex().upper()
|
|
78
85
|
encoded_parameters = [
|
|
@@ -88,8 +95,11 @@ def _write_encoded_parameters(writer: FileWriter, parameters: list[str] | None)
|
|
|
88
95
|
|
|
89
96
|
|
|
90
97
|
def _read_decoded_parameters(
|
|
91
|
-
reader: FileReader, definition: TagDefinition
|
|
92
|
-
) -> LMS_FieldMap:
|
|
98
|
+
reader: FileReader, definition: TagDefinition | None
|
|
99
|
+
) -> LMS_FieldMap | None:
|
|
100
|
+
if definition.parameters is None:
|
|
101
|
+
return
|
|
102
|
+
|
|
93
103
|
parameters = {}
|
|
94
104
|
for param in definition.parameters:
|
|
95
105
|
param_offset = reader.tell()
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from LMS.Field.LMS_DataType import LMS_DataType
|
|
2
|
+
from LMS.TitleConfig.Definitions.Tags import TagDefinition
|
|
3
|
+
from LMS.TitleConfig.Definitions.Value import ValueDefinition
|
|
4
|
+
|
|
5
|
+
RUBY_TAG = TagDefinition(
|
|
6
|
+
group_name="System",
|
|
7
|
+
group_index=0,
|
|
8
|
+
tag_name="Ruby",
|
|
9
|
+
tag_index=0,
|
|
10
|
+
description="Displays a RUBY character.",
|
|
11
|
+
parameters=[
|
|
12
|
+
ValueDefinition(
|
|
13
|
+
name="rt", description="The ruby character.", datatype=LMS_DataType.STRING
|
|
14
|
+
)
|
|
15
|
+
],
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
FONT_TAG = TagDefinition(
|
|
19
|
+
group_name="System",
|
|
20
|
+
group_index=0,
|
|
21
|
+
tag_name="Font",
|
|
22
|
+
tag_index=1,
|
|
23
|
+
description="Sets the font file of text.",
|
|
24
|
+
parameters=[
|
|
25
|
+
ValueDefinition(
|
|
26
|
+
name="face", description="The font face name.", datatype=LMS_DataType.STRING
|
|
27
|
+
)
|
|
28
|
+
],
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
SIZE_TAG = TagDefinition(
|
|
32
|
+
group_name="System",
|
|
33
|
+
group_index=0,
|
|
34
|
+
tag_name="Size",
|
|
35
|
+
tag_index=2,
|
|
36
|
+
description="Alters the size of text.",
|
|
37
|
+
parameters=[
|
|
38
|
+
ValueDefinition(
|
|
39
|
+
name="percent",
|
|
40
|
+
description="The new size as a percent.",
|
|
41
|
+
datatype=LMS_DataType.UINT16,
|
|
42
|
+
)
|
|
43
|
+
],
|
|
44
|
+
)
|
|
45
|
+
COLOR_TAG = TagDefinition(
|
|
46
|
+
group_name="System",
|
|
47
|
+
group_index=0,
|
|
48
|
+
tag_name="Color",
|
|
49
|
+
tag_index=3,
|
|
50
|
+
description="Sets the color of text in a message in RGBA form.",
|
|
51
|
+
parameters=[
|
|
52
|
+
ValueDefinition(
|
|
53
|
+
name="r", description="The red color value.", datatype=LMS_DataType.UINT8
|
|
54
|
+
),
|
|
55
|
+
ValueDefinition(
|
|
56
|
+
name="g", description="The green color value.", datatype=LMS_DataType.UINT8
|
|
57
|
+
),
|
|
58
|
+
ValueDefinition(
|
|
59
|
+
name="b", description="The blue color value.", datatype=LMS_DataType.UINT8
|
|
60
|
+
),
|
|
61
|
+
ValueDefinition(
|
|
62
|
+
name="a",
|
|
63
|
+
description="The alpha transprency value.",
|
|
64
|
+
datatype=LMS_DataType.UINT8,
|
|
65
|
+
),
|
|
66
|
+
],
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
PAGEBREAK_TAG = TagDefinition(
|
|
70
|
+
group_name="System",
|
|
71
|
+
group_index=0,
|
|
72
|
+
tag_name="PageBreak",
|
|
73
|
+
tag_index=4,
|
|
74
|
+
description="Displays text in the same label on different pages.",
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
SYSTEM_GROUP = {
|
|
78
|
+
0: RUBY_TAG,
|
|
79
|
+
1: FONT_TAG,
|
|
80
|
+
2: SIZE_TAG,
|
|
81
|
+
3: COLOR_TAG,
|
|
82
|
+
4: PAGEBREAK_TAG,
|
|
83
|
+
}
|
|
@@ -3,11 +3,11 @@ from typing import Self
|
|
|
3
3
|
|
|
4
4
|
import yaml
|
|
5
5
|
|
|
6
|
+
from LMS.Field.LMS_DataType import LMS_DataType
|
|
7
|
+
from LMS.Project.MSBP import MSBP
|
|
6
8
|
from LMS.TitleConfig.Definitions.Attributes import AttributeConfig
|
|
7
9
|
from LMS.TitleConfig.Definitions.Tags import TagConfig, TagDefinition
|
|
8
10
|
from LMS.TitleConfig.Definitions.Value import ValueDefinition
|
|
9
|
-
from LMS.Field.LMS_DataType import LMS_DataType
|
|
10
|
-
from LMS.Project.MSBP import MSBP
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class TitleConfig:
|
|
@@ -15,12 +15,14 @@ class TitleConfig:
|
|
|
15
15
|
|
|
16
16
|
# Populate the preset list from the directory
|
|
17
17
|
PRESET_LIST = [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def __init__(
|
|
18
|
+
file.name.removesuffix(".yaml")
|
|
19
|
+
for file in resources.files("LMS.TitleConfig.Presets").iterdir()
|
|
20
|
+
if file.name.endswith(".yaml")
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
def __init__(
|
|
24
|
+
self, attribute_configs: dict[str, AttributeConfig], tag_config: TagConfig
|
|
25
|
+
):
|
|
24
26
|
self._attribute_configs = attribute_configs
|
|
25
27
|
self._tag_config = tag_config
|
|
26
28
|
|
|
@@ -61,22 +63,15 @@ class TitleConfig:
|
|
|
61
63
|
else:
|
|
62
64
|
parsed_content = content
|
|
63
65
|
|
|
64
|
-
|
|
65
|
-
tag_config = []
|
|
66
|
-
|
|
67
|
-
# Add the System tag definitions to the config
|
|
68
|
-
with resources.open_text("LMS.Message.Tag", "System.yaml") as f:
|
|
69
|
-
system_tags = yaml.safe_load(f)
|
|
70
|
-
tag_config = system_tags
|
|
71
|
-
|
|
66
|
+
raw_tag_config = []
|
|
72
67
|
# Combine with the rest of the cofnig
|
|
73
|
-
group_map
|
|
68
|
+
group_map = parsed_content["tag_definitions"]["groups"]
|
|
74
69
|
for tag_def in parsed_content["tag_definitions"]["tags"]:
|
|
75
|
-
|
|
70
|
+
raw_tag_config.append(tag_def)
|
|
76
71
|
|
|
77
72
|
# Load tag definitions
|
|
78
73
|
tag_definitions = []
|
|
79
|
-
for tag_def in
|
|
74
|
+
for tag_def in raw_tag_config:
|
|
80
75
|
tag_name = tag_def["name"]
|
|
81
76
|
group_index, tag_index = tag_def["group_index"], tag_def["tag_index"]
|
|
82
77
|
group_name = group_map[group_index]
|
|
@@ -92,7 +87,11 @@ class TitleConfig:
|
|
|
92
87
|
param_description = param_def["description"]
|
|
93
88
|
datatype = LMS_DataType.from_string(param_def["datatype"])
|
|
94
89
|
list_items = param_def.get("list_items")
|
|
95
|
-
parameters.append(
|
|
90
|
+
parameters.append(
|
|
91
|
+
ValueDefinition(
|
|
92
|
+
param_name, param_description, datatype, list_items
|
|
93
|
+
)
|
|
94
|
+
)
|
|
96
95
|
|
|
97
96
|
tag_definitions.append(
|
|
98
97
|
TagDefinition(
|
|
@@ -121,7 +120,9 @@ class TitleConfig:
|
|
|
121
120
|
definition = ValueDefinition(name, description, datatype, list_items)
|
|
122
121
|
definitions.append(definition)
|
|
123
122
|
|
|
124
|
-
structure = AttributeConfig(
|
|
123
|
+
structure = AttributeConfig(
|
|
124
|
+
structure_name, structure["description"], definitions
|
|
125
|
+
)
|
|
125
126
|
attribute_config[structure_name] = structure
|
|
126
127
|
|
|
127
128
|
return cls(attribute_config, tag_config)
|
|
@@ -151,7 +152,9 @@ class TitleConfig:
|
|
|
151
152
|
# These files were generated from the source machine from the actual libMS tool
|
|
152
153
|
# Shorten the filename with basname and replace the extension with .msbt for lookup later when reading a MSBT
|
|
153
154
|
config[tag_key] = {
|
|
154
|
-
"groups": {
|
|
155
|
+
"groups": {
|
|
156
|
+
i + 1: group.name for i, group in enumerate(project.tag_groups[1:])
|
|
157
|
+
},
|
|
155
158
|
"tags": [],
|
|
156
159
|
}
|
|
157
160
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from dataclasses import dataclass
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
4
|
|
|
5
5
|
from LMS.TitleConfig.Definitions.Value import ValueDefinition
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ class TagDefinition:
|
|
|
14
14
|
tag_name: str
|
|
15
15
|
tag_index: int
|
|
16
16
|
description: str
|
|
17
|
-
parameters: list[ValueDefinition]
|
|
17
|
+
parameters: list[ValueDefinition] = field(default=None)
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
@dataclass(frozen=True)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
1
|
+
from dataclasses import dataclass, field
|
|
2
2
|
|
|
3
3
|
from LMS.Field.LMS_DataType import LMS_DataType
|
|
4
4
|
|
|
@@ -8,4 +8,4 @@ class ValueDefinition:
|
|
|
8
8
|
name: str
|
|
9
9
|
description: str
|
|
10
10
|
datatype: LMS_DataType
|
|
11
|
-
list_items: dict[int, str]
|
|
11
|
+
list_items: dict[int, str] = field(default=None)
|
|
@@ -29,7 +29,7 @@ LMS/Message/Section/__init__.py
|
|
|
29
29
|
LMS/Message/Tag/LMS_Tag.py
|
|
30
30
|
LMS/Message/Tag/LMS_TagExceptions.py
|
|
31
31
|
LMS/Message/Tag/Stream.py
|
|
32
|
-
LMS/Message/Tag/
|
|
32
|
+
LMS/Message/Tag/System_Definition.py
|
|
33
33
|
LMS/Message/Tag/Tag_Formats.py
|
|
34
34
|
LMS/Message/Tag/__init__.py
|
|
35
35
|
LMS/Project/MSBP.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "PyLibMS"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.6"
|
|
8
8
|
requires-python = ">=3.10"
|
|
9
9
|
description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
|
|
10
10
|
readme = "README.md"
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
- name: Ruby
|
|
2
|
-
group_index: 0
|
|
3
|
-
tag_index: 0
|
|
4
|
-
description: 'Displays a RUBY character.'
|
|
5
|
-
parameters:
|
|
6
|
-
- name: rt
|
|
7
|
-
description: 'The ruby character.'
|
|
8
|
-
datatype: string
|
|
9
|
-
- name: Font
|
|
10
|
-
group_index: 0
|
|
11
|
-
tag_index: 1
|
|
12
|
-
description: 'Sets the font file of text.'
|
|
13
|
-
parameters:
|
|
14
|
-
- name: face
|
|
15
|
-
description: 'The font face name.'
|
|
16
|
-
datatype: string
|
|
17
|
-
- name: Size
|
|
18
|
-
group_index: 0
|
|
19
|
-
tag_index: 2
|
|
20
|
-
description: 'Alters the size of text.'
|
|
21
|
-
parameters:
|
|
22
|
-
- name: percent
|
|
23
|
-
description: 'The new size as a percent.'
|
|
24
|
-
datatype: uint16
|
|
25
|
-
- name: Color
|
|
26
|
-
group_index: 0
|
|
27
|
-
tag_index: 3
|
|
28
|
-
description: 'Sets the color of text in a message in RGBA form.'
|
|
29
|
-
parameters:
|
|
30
|
-
- name: r
|
|
31
|
-
description: 'The red color value.'
|
|
32
|
-
datatype: uint8
|
|
33
|
-
- name: g
|
|
34
|
-
description: 'The green color value.'
|
|
35
|
-
datatype: uint8
|
|
36
|
-
- name: b
|
|
37
|
-
description: 'The blue color value.'
|
|
38
|
-
datatype: uint8
|
|
39
|
-
- name: a
|
|
40
|
-
description: 'The alpha transprency value.'
|
|
41
|
-
datatype: uint8
|
|
42
|
-
- name: PageBreak
|
|
43
|
-
group_index: 0
|
|
44
|
-
tag_index: 4
|
|
45
|
-
description: 'Displays text in the same label on different pages.'
|
|
46
|
-
parameters: []
|
|
47
|
-
|
pylibms-2.0.4/MANIFEST.in
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|