1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-24 16:01:26 +00:00

generate and use Limb enums (TODO: check Skin skels and implement for Curve skels)

This commit is contained in:
Dragorn421 2025-02-09 01:53:00 +01:00
parent 589916d767
commit 3dc74cde04
No known key found for this signature in database
GPG key ID: 381AEBAF3D429335
8 changed files with 231 additions and 85 deletions

View file

@ -1,5 +1,6 @@
import dataclasses
import enum
from typing import Optional
from xml.etree.ElementTree import Element
from .base import (
@ -109,24 +110,43 @@ class LimbType(enum.Enum):
class SkeletonResourceDesc(ResourceDesc):
type: SkeletonType
limb_type: LimbType
limb_enum_name: Optional[str]
limb_enum_none_member_name: Optional[str]
limb_enum_max_member_name: Optional[str]
def handler_Skeleton(symbol_name, offset, collection, reselem: Element):
skel_type = SkeletonType[reselem.attrib["Type"].upper()]
limb_type = LimbType[reselem.attrib["LimbType"].upper()]
return SkeletonResourceDesc(
symbol_name, offset, collection, reselem, skel_type, limb_type
symbol_name,
offset,
collection,
reselem,
skel_type,
limb_type,
reselem.attrib.get("EnumName"),
reselem.attrib.get("LimbNone"),
reselem.attrib.get("LimbMax"),
)
@dataclasses.dataclass(eq=False)
class LimbResourceDesc(ResourceDesc):
limb_type: LimbType
limb_enum_member_name: Optional[str]
def handler_Limb(symbol_name, offset, collection, reselem: Element):
limb_type = LimbType[reselem.attrib["LimbType"].upper()]
return LimbResourceDesc(symbol_name, offset, collection, reselem, limb_type)
return LimbResourceDesc(
symbol_name,
offset,
collection,
reselem,
limb_type,
reselem.attrib.get("EnumName"),
)
@dataclasses.dataclass(eq=False)