1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-06-08 01:21:52 +00:00

Better automatic names for Limbs and JointKeys, and implement more get_as_xml (#2590)

This commit is contained in:
Dragorn421 2025-06-06 03:55:30 +02:00 committed by GitHub
parent 747006fdd4
commit b84d1afc67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 35 additions and 2 deletions

View file

@ -1110,6 +1110,10 @@ class BinaryBlobResource(Resource):
# Nothing specific to do
return RESOURCE_PARSE_SUCCESS
def get_as_xml(self):
return f"""\
<Blob Name="{self.symbol_name}" Size="0x{self.range_end - self.range_start:X}" Offset="0x{self.range_start:X}"/>"""
def get_c_reference(self, resource_offset):
return f"&{self.symbol_name}[{resource_offset}]"

View file

@ -275,6 +275,15 @@ class TextureResource(Resource):
self.width_name = f"{self.symbol_name}_WIDTH"
self.height_name = f"{self.symbol_name}_HEIGHT"
def get_as_xml(self):
tlut_offset_attr = (
f' TlutOffset="0x{self.resource_tlut.range_start:X}"'
if self.resource_tlut
else ""
)
return f"""\
<Texture Name="{self.symbol_name}" Format="{self.fmt.name.lower()}{self.siz.bpp}" Width="{self.width}" Height="{self.height}" Offset="0x{self.range_start:X}"{tlut_offset_attr}/>"""
def check_declare_length(self):
return (
hasattr(self, "HACK_IS_STATIC_ON") or EXPLICIT_DL_AND_TEX_SIZES
@ -1347,6 +1356,10 @@ class DListResource(Resource, can_size_be_unknown=True):
return RESOURCE_PARSE_SUCCESS
def get_as_xml(self):
return f"""\
<DList Name="{self.symbol_name}" Offset="0x{self.range_start:X}"/>"""
def get_c_declaration_base(self):
if hasattr(self, "HACK_IS_STATIC_ON") or EXPLICIT_DL_AND_TEX_SIZES:
length = (self.range_end - self.range_start) // 8

View file

@ -164,7 +164,11 @@ class LegacyAnimationResource(CDataResource):
lambda file, offset: LegacyJointKeyArrayResource(
file,
offset,
f"{self.name}_{address_jointKey:08X}_JointKeys",
(
f"{self.symbol_name.removesuffix('Anim')}JointKeys"
if self.symbol_name.endswith("Anim")
else f"{self.symbol_name}_{address_jointKey:08X}_JointKeys"
),
),
)
resource_jointKey.set_length(self.cdata_unpacked["limbCount"] + 1)

View file

@ -65,6 +65,10 @@ class StandardLimbResource(CDataResource):
def set_enum_member_name(self, enum_member_name: str):
self.enum_member_name = enum_member_name
def get_as_xml(self) -> str:
return f"""\
<Limb Name="{self.symbol_name}" LimbType="Standard" EnumName="{self.enum_member_name}" Offset="0x{self.range_start:X}"/>"""
def get_c_declaration_base(self):
return f"StandardLimb {self.symbol_name}"
@ -101,6 +105,10 @@ class LODLimbResource(CDataResource):
def set_enum_member_name(self, enum_member_name: str):
self.enum_member_name = enum_member_name
def get_as_xml(self):
return f"""\
<Limb Name="{self.symbol_name}" LimbType="LOD" EnumName="{self.enum_member_name}" Offset="0x{self.range_start:X}"/>"""
def get_c_declaration_base(self):
return f"LodLimb {self.symbol_name}"
@ -241,7 +249,11 @@ class SkeletonResourceABC(SkeletonResourceBaseABC):
lambda file, offset: resource.limbs_array_type(
file,
offset,
f"{resource.name}_{address:08X}_Limbs",
(
f"{resource.name.removesuffix('Skel')}Limbs"
if resource.name.endswith("Skel")
else f"{resource.name}_{address:08X}_Limbs"
),
),
)
resource_limbs.set_length(