예제 #1
0
def get_args(data: Dict[str, Any], key: str, _id: Any, default=None, type_check=None, _type="pokmon") -> Any:
    value = None
    if default is not None:
        value = data[key] if key in data else None if default == "NONE" else default
    else:
        if key not in data:
            raise err.PokemonParseError("No {} value for a {} ({}) !".format(key, _type, _id))
        value = data[key]
    if type_check:
        if value and not isinstance(value, type_check):
            raise err.PokemonParseError(
                "Invalid var type for {} need be {} for {} ({})".format(key, type_check, _type, _id))
    return value
예제 #2
0
    def __init__(self, id_: int, data: Dict):
        self.id_: int = id_
        self.parent: int = utils.get_args(data,
                                          "parent",
                                          id_,
                                          default=0,
                                          type_check=int)
        if not (0 <= self.parent <= NB_POKEMON) or (self.parent == id_
                                                    and id_ != 0):
            raise err.PokemonParseError(
                "Pokemon ({}) have invalid parent !".format(id_))
        self.types: List['pok_t.Type'] = [
            pok_t.TYPES[t] for t in utils.get_args(data, "type", id_)
        ]
        self.xp_points: int = utils.get_args(data,
                                             "xp_point",
                                             id_,
                                             type_check=int)
        self.color: str = utils.get_args(data, "color", id_, type_check=str)
        self.evolution: List[Dict[str, Any]] = utils.get_args(data,
                                                              "evolution",
                                                              id_,
                                                              default=[])
        self.female_rate: float = utils.get_args(data, "female_rate", id_)

        # self.display: displayer.Displayer = displayer.parse(utils.get_args(data, "display", id_),
        #                                                     "pokemon/" + to_3_digit(id_))
        # self.back_display: displayer.Displayer = displayer.parse(utils.get_args(data, "back_display", id_),
        #                                                          "pokemon/" + to_3_digit(id_))
        self.have_female_image = os.path.isfile(
            f'assets/textures/pokemon/female/{self.id_}.png')
        self.curve_name: str = utils.get_args(data,
                                              "curve",
                                              id_,
                                              type_check=str)
        self.curve: Callable[[int], float] = CURVE[self.curve_name]
        self.base_stats: Dict[str,
                              int] = utils.get_args(data, "base_stats", id_)
        self.ability: Dict[str, int] = utils.get_args(data,
                                                      "ability",
                                                      id_,
                                                      default={})
        self.catch_rate: float = utils.get_args(data, "catch_rate", id_)
        self.size = utils.get_args(data, "size", id_, default=0)
        self.weight = utils.get_args(data, "weight", id_, default=0)