mirror of
https://github.com/PaiGramTeam/EnkaNetwork.py.git
synced 2024-11-16 03:45:28 +00:00
154 lines
3.9 KiB
Python
154 lines
3.9 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Any
|
|
|
|
from ..enum import ElementType
|
|
from .utils import IconAsset
|
|
|
|
__all__ = (
|
|
'NamecardAsset',
|
|
'CharacterIconAsset',
|
|
'CharacterSkillAsset',
|
|
'CharacterConstellationsAsset',
|
|
'CharacterCostume',
|
|
'CharacterAsset'
|
|
)
|
|
|
|
|
|
class NamecardAsset(BaseModel):
|
|
""" Namecards (Assets)
|
|
|
|
Attributes
|
|
------------
|
|
id: :class:`int`
|
|
Namecard ID
|
|
hash_id: :class:`str`
|
|
Namecard hash id
|
|
icon: :class:`IconAsset`
|
|
A icon assets. Please refers in `IconAsset` class
|
|
banner: :class:`IconAsset`
|
|
A banner assets. Please refers in `IconAsset` class
|
|
navbar: :class:`IconAsset`
|
|
A navbar assets. Please refers in `IconAsset` class
|
|
"""
|
|
|
|
id: int = 0
|
|
hash_id: str = Field("", alias="nameTextMapHash")
|
|
icon: IconAsset
|
|
banner: IconAsset
|
|
navbar: IconAsset
|
|
|
|
|
|
class CharacterIconAsset(BaseModel):
|
|
""" Character Icon (Assets)
|
|
|
|
Attributes
|
|
------------
|
|
icon: :class:`IconAsset`
|
|
A icon assets. Please refers in `IconAsset` class
|
|
side: :class:`IconAsset`
|
|
A navbar assets. Please refers in `IconAsset` class
|
|
banner: :class:`IconAsset`
|
|
A banner assets. Please refers in `IconAsset` class
|
|
card: :class:`IconAsset`
|
|
A navbar assets. Please refers in `IconAsset` class
|
|
"""
|
|
icon: IconAsset
|
|
side: IconAsset
|
|
banner: IconAsset
|
|
card: IconAsset
|
|
|
|
|
|
class CharacterSkillAsset(BaseModel):
|
|
""" Character Skill(s) (Assets)
|
|
|
|
Attributes
|
|
------------
|
|
id: :class:`int`
|
|
Character skill(s) ID
|
|
pround_map: :class:`int`
|
|
pround map for a booest skill by constellation
|
|
hash_id: :class:`str`
|
|
Skill(s) hash id
|
|
icon: :class:`IconAsset`
|
|
A icon assets. Please refers in `IconAsset` class
|
|
"""
|
|
id: int = 0,
|
|
pround_map: int = 0,
|
|
hash_id: str = Field("", alias="nameTextMapHash")
|
|
icon: IconAsset = None
|
|
|
|
|
|
class CharacterConstellationsAsset(BaseModel):
|
|
""" Character Constellations (Assets)
|
|
|
|
Attributes
|
|
------------
|
|
id: :class:`int`
|
|
Character constellations ID
|
|
hash_id: :class:`str`
|
|
Constellations hash id
|
|
icon: :class:`IconAsset`
|
|
A icon assets. Please refers in `IconAsset` class
|
|
"""
|
|
id: int = 0
|
|
hash_id: str = Field("", alias="nameTextMapHash")
|
|
icon: IconAsset = None
|
|
|
|
|
|
class CharacterCostume(BaseModel):
|
|
""" Character Costume (Assets)
|
|
|
|
Attributes
|
|
------------
|
|
id: :class:`int`
|
|
Costume ID
|
|
hash_id: :class:`str`
|
|
Costume hash id
|
|
icon: :class:`IconAsset`
|
|
A icon assets. Please refers in `IconAsset` class
|
|
"""
|
|
id: int = 0
|
|
images: CharacterIconAsset = None
|
|
|
|
|
|
class CharacterAsset(BaseModel):
|
|
""" Character (Assets)
|
|
|
|
Attributes
|
|
------------
|
|
id: :class:`int`
|
|
Avatar ID
|
|
rarity: :class:`int`
|
|
Character rarity (5 stars or 4stars)
|
|
hash_id: :class:`str`
|
|
Character hash id
|
|
element: :class:`ElementType`
|
|
Character element type
|
|
images: :class:`CharacterIconAsset`
|
|
Character image data. Please refers in `CharacterIconAsset`
|
|
skill_id: :class:`int`
|
|
Character skill ID
|
|
skills: List[:class:`int`]
|
|
Character skill data list
|
|
constellations: List[:class:`int`]
|
|
Character constellations data list
|
|
"""
|
|
id: int = 0
|
|
rarity: int = 0
|
|
hash_id: str = Field("", alias="nameTextMapHash")
|
|
element: ElementType = ElementType.Unknown
|
|
images: CharacterIconAsset = None
|
|
skill_id: int = 0
|
|
skills: List[int] = []
|
|
constellations: List[int] = Field([], alias="talents")
|
|
|
|
class Config:
|
|
use_enum_values = True
|
|
|
|
def __init__(self, **data: Any) -> None:
|
|
super().__init__(**data)
|
|
|
|
self.element = ElementType(
|
|
data["costElemType"]) if data["costElemType"] != "" else ElementType.Unknown
|
|
self.rarity = 5 if data["qualityType"].endswith("_ORANGE") else 4
|