mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-09-28 03:46:14 +00:00
添加新的数据结构
This commit is contained in:
parent
ce69716987
commit
6433ddba87
@ -13,14 +13,24 @@ class ArtifactInfo(BaseObject):
|
||||
|
||||
def __init__(self, item_id: int = 0, name: str = "", level: int = 0, main_item: Optional[GameItem] = None,
|
||||
pos: Union[Enum, str] = "", star: int = 1, sub_item: Optional[List[GameItem]] = None, icon: str = ""):
|
||||
"""
|
||||
:param item_id: item_id
|
||||
:param name: 圣遗物名字
|
||||
:param level: 圣遗物等级
|
||||
:param main_item: 主词条
|
||||
:param pos: 圣遗物类型
|
||||
:param star: 星级
|
||||
:param sub_item: 副词条
|
||||
:param icon: 图片
|
||||
"""
|
||||
self.icon = icon
|
||||
self.item_id = item_id
|
||||
self.level = level # 等级
|
||||
self.main_item = main_item # 主属性
|
||||
self.name = name # 名称
|
||||
self.pos = pos # 圣遗物类型
|
||||
self.star = star # 星级
|
||||
self.sub_item: List[GameItem] = [] # 词条列表
|
||||
self.level = level
|
||||
self.main_item = main_item
|
||||
self.name = name
|
||||
self.pos = pos
|
||||
self.star = star
|
||||
self.sub_item: List[GameItem] = []
|
||||
if sub_item is not None:
|
||||
self.sub_item = sub_item
|
||||
|
120
model/game/character.py
Normal file
120
model/game/character.py
Normal file
@ -0,0 +1,120 @@
|
||||
from typing import Optional, List
|
||||
|
||||
from model.baseobject import BaseObject
|
||||
from model.game.artifact import ArtifactInfo
|
||||
from model.game.fetter import FetterInfo
|
||||
from model.game.skill import Skill
|
||||
from model.game.talent import Talent
|
||||
from model.game.weapon import WeaponInfo
|
||||
from model.types import JSONDict
|
||||
|
||||
|
||||
class CharacterValueInfo(BaseObject):
|
||||
"""
|
||||
角色数值信息
|
||||
"""
|
||||
|
||||
def __init__(self, hp: float = 0, base_hp: float = 0, atk: float = 0, base_atk: float = 0,
|
||||
def_value: float = 0, base_def: float = 0, elemental_mastery: float = 0, crit_rate: float = 0,
|
||||
crit_dmg: float = 0, energy_recharge: float = 0, heal_bonus: float = 0, healed_bonus: float = 0,
|
||||
physical_dmg_sub: float = 0, physical_dmg_bonus: float = 0, dmg_bonus: float = 0):
|
||||
"""
|
||||
:param hp: 生命值
|
||||
:param base_hp: 基础生命值
|
||||
:param atk: 攻击力
|
||||
:param base_atk: 基础攻击力
|
||||
:param def_value: 防御力
|
||||
:param base_def: 基础防御力
|
||||
:param elemental_mastery: 元素精通
|
||||
:param crit_rate: 暴击率
|
||||
:param crit_dmg: 暴击伤害
|
||||
:param energy_recharge: 充能效率
|
||||
:param heal_bonus: 治疗
|
||||
:param healed_bonus: 受治疗
|
||||
:param physical_dmg_sub: 物理伤害加成
|
||||
:param physical_dmg_bonus: 物理伤害抗性
|
||||
:param dmg_bonus: 伤害加成
|
||||
"""
|
||||
self.dmg_bonus = dmg_bonus
|
||||
self.physical_dmg_bonus = physical_dmg_bonus
|
||||
self.physical_dmg_sub = physical_dmg_sub
|
||||
self.healed_bonus = healed_bonus
|
||||
self.heal_bonus = heal_bonus
|
||||
self.energy_recharge = energy_recharge
|
||||
self.crit_dmg = crit_dmg
|
||||
self.crit_rate = crit_rate
|
||||
self.elemental_mastery = elemental_mastery
|
||||
self.base_def = base_def
|
||||
self.def_value = def_value
|
||||
self.base_atk = base_atk
|
||||
self.atk = atk
|
||||
self.base_hp = base_hp
|
||||
self.hp = hp
|
||||
|
||||
@property
|
||||
def add_hp(self) -> float:
|
||||
return self.hp - self.base_hp
|
||||
|
||||
@property
|
||||
def add_atk(self) -> float:
|
||||
return self.atk - self.base_atk
|
||||
|
||||
@property
|
||||
def add_def(self) -> float:
|
||||
return self.def_value - self.base_def
|
||||
|
||||
__slots__ = (
|
||||
"hp", "base_hp", "atk", "base_atk", "def_value", "base_def", "elemental_mastery", "crit_rate", "crit_dmg",
|
||||
"energy_recharge", "dmg_bonus", "physical_dmg_bonus", "physical_dmg_sub", "healed_bonus",
|
||||
"heal_bonus")
|
||||
|
||||
|
||||
class CharacterInfo(BaseObject):
|
||||
"""
|
||||
角色信息
|
||||
"""
|
||||
|
||||
def __init__(self, name: str = "", level: int = 0, fetter: Optional[FetterInfo] = None,
|
||||
base_value: Optional[CharacterValueInfo] = None, weapon: Optional[WeaponInfo] = None,
|
||||
artifact: Optional[List[ArtifactInfo]] = None, skill: Optional[List[Skill]] = None,
|
||||
talent: Optional[List[Talent]] = None):
|
||||
"""
|
||||
:param name: 角色名字
|
||||
:param level: 角色等级
|
||||
:param fetter: 好感度
|
||||
:param base_value: 基础数值
|
||||
:param weapon: 武器
|
||||
:param artifact: 圣遗物
|
||||
:param skill: 技能
|
||||
:param talent: 命座
|
||||
"""
|
||||
self.talent = talent
|
||||
self.skill = skill
|
||||
self.artifact = artifact
|
||||
self.weapon = weapon
|
||||
self.base_value = base_value
|
||||
self.fetter = fetter
|
||||
self.level = level
|
||||
self.name = name
|
||||
|
||||
def to_dict(self) -> JSONDict:
|
||||
data = super().to_dict()
|
||||
if self.artifact:
|
||||
data["artifact"] = [e.to_dict() for e in self.artifact]
|
||||
if self.artifact:
|
||||
data["skill"] = [e.to_dict() for e in self.skill]
|
||||
if self.artifact:
|
||||
data["talent"] = [e.to_dict() for e in self.talent]
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
def de_json(cls, data: Optional[JSONDict]) -> Optional["CharacterInfo"]:
|
||||
data = cls._parse_data(data)
|
||||
if not data:
|
||||
return None
|
||||
data["artifact"] = ArtifactInfo.de_list(data.get("sub_item"))
|
||||
data["skill"] = Skill.de_list(data.get("sub_item"))
|
||||
data["talent"] = Talent.de_list(data.get("sub_item"))
|
||||
return cls(**data)
|
||||
|
||||
__slots__ = ("name", "level", "level", "fetter", "base_value", "weapon", "artifact", "skill", "talent")
|
15
model/game/fetter.py
Normal file
15
model/game/fetter.py
Normal file
@ -0,0 +1,15 @@
|
||||
from model.baseobject import BaseObject
|
||||
|
||||
|
||||
class FetterInfo(BaseObject):
|
||||
"""
|
||||
好感度信息
|
||||
"""
|
||||
|
||||
def __init__(self, level: int = 0):
|
||||
"""
|
||||
:param level: 等级
|
||||
"""
|
||||
self.level = level
|
||||
|
||||
__slots__ = ("level",)
|
21
model/game/skill.py
Normal file
21
model/game/skill.py
Normal file
@ -0,0 +1,21 @@
|
||||
from model.baseobject import BaseObject
|
||||
|
||||
|
||||
class Skill(BaseObject):
|
||||
"""
|
||||
技能信息
|
||||
"""
|
||||
|
||||
def __init__(self, skill_id: int = 0, name: str = "", level: int = 0, icon: str = ""):
|
||||
"""
|
||||
:param skill_id: 技能ID
|
||||
:param name: 技能名称
|
||||
:param level: 技能等级
|
||||
:param icon: 技能图标
|
||||
"""
|
||||
self.icon = icon
|
||||
self.level = level
|
||||
self.name = name
|
||||
self.skill_id = skill_id
|
||||
|
||||
__slots__ = ("skill_id", "name", "level", "icon")
|
19
model/game/talent.py
Normal file
19
model/game/talent.py
Normal file
@ -0,0 +1,19 @@
|
||||
from model.baseobject import BaseObject
|
||||
|
||||
|
||||
class Talent(BaseObject):
|
||||
"""
|
||||
命座
|
||||
"""
|
||||
|
||||
def __init__(self, talent_id: int = 0, name: str = "", icon: str = ""):
|
||||
"""
|
||||
:param talent_id: 命座ID
|
||||
:param name: 命座名字
|
||||
:param icon: 图标
|
||||
"""
|
||||
self.icon = icon
|
||||
self.name = name
|
||||
self.talent_id = talent_id
|
||||
|
||||
__slots__ = ("talent_id", "name", "icon")
|
37
model/game/weapon.py
Normal file
37
model/game/weapon.py
Normal file
@ -0,0 +1,37 @@
|
||||
from enum import Enum
|
||||
from typing import Union, Optional, List
|
||||
|
||||
from model.base import GameItem
|
||||
from model.baseobject import BaseObject
|
||||
|
||||
|
||||
class WeaponInfo(BaseObject):
|
||||
"""
|
||||
武器信息
|
||||
"""
|
||||
|
||||
def __init__(self, item_id: int = 0, name: str = "", level: int = 0, main_item: Optional[GameItem] = None,
|
||||
affix: int = 0, pos: Union[Enum, str] = "", star: int = 1, sub_item: Optional[GameItem] = None,
|
||||
icon: str = ""):
|
||||
"""
|
||||
:param item_id: item_id
|
||||
:param name: 武器名字
|
||||
:param level: 武器等级
|
||||
:param main_item: 主词条
|
||||
:param affix: 精炼等级
|
||||
:param pos: 武器类型
|
||||
:param star: 星级
|
||||
:param sub_item: 副词条
|
||||
:param icon: 图片
|
||||
"""
|
||||
self.affix = affix
|
||||
self.icon = icon
|
||||
self.item_id = item_id
|
||||
self.level = level
|
||||
self.main_item = main_item
|
||||
self.name = name
|
||||
self.pos = pos
|
||||
self.star = star
|
||||
self.sub_item = sub_item
|
||||
|
||||
__slots__ = ("name", "type", "value", "pos", "star", "sub_item", "main_item", "level", "item_id", "icon", "affix")
|
Loading…
Reference in New Issue
Block a user