AquariumFishData
A classe AquariumFishData é uma das classes especiais fornecidas pela biblioteca para auxiliar na modificação de dados existentes ou na adição de novas entradas aos arquivos do jogo. Especificamente, AquariumFishData é usada para editar o arquivo Data/AquariumFish. Ela permite modificar ou adicionar novas entradas aos arquivos do jogo de forma segura e controlada [1].
AquariumFishData herda de modelsData que fornece a estrutura base e integração com o Content Patcher [4].
Construtor
def __init__(
self,
key: str,
SpriteIndex:int,
type: str,
idle: Optional[list[int]]=None,
animation: Optional[list[int]]=None,
dart: Optional[list[int]]=None,
animation2: Optional[list[int]]=None,
texture:Optional[str]=None,
hatPosition: Optional[Position]=None
)
Parâmetros
| Name | Type | Description |
|---|---|---|
key |
(str) |
O id do peixe para o aquƔrio. |
SpriteIndex |
(int) |
Ćndice do sprite no arquivo de textura. |
type |
(str) |
O tipo de peixe, que influencia seu comportamento. Valores possĆveis: (eel, cephalopod, crawl, ground, fish, front_crawl) |
idle |
(list[int]) |
A animação usada pelo peixe quando estÔ ocioso. Uma lista de posições de frames. |
animation |
(list[int]) |
A animação usada pelo peixe quando ele estÔ disparando. Uma lista de posições de frames. |
dart |
(list[int]) |
A animação usada pelo peixe quando ele estÔ disparando. Uma lista de posições de frames. |
animation2 |
(list[int]) |
A animação usada pelo peixe quando ele estÔ disparando. Uma lista de posições de frames. |
texture |
(str) |
O nome do recurso para a textura que contém o sprite do peixe. O padrão é LooseSprites/AquariumFish. |
hatPosition |
(Position) |
A posição do pixel do chapéu no sprite, especificada como um objeto com valores X e Y. Peixes personalizados em aquÔrios podem usar chapéus, assim como ouriços-do-mar baunilha. |
Comportamento
Instâncias de AquariumFishData são projetadas para serem usadas dentro do campo Entries de uma ação EditData. Quando você deseja adicionar um novo peixe ao aquÔrio. Ao criar um objeto AquariumFishData com os parâmetros desejados e fornecer sua representação JSON (getJson()) como um valor no dicionÔrio Entries (usando a chave do objeto), você instrui o Content Patcher a escrever esses dados no arquivo Data/AquariumFish. Essa abordagem estruturada ajuda os desenvolvedores a evitar erros comuns associados a arquivos JSON manuais. Criando um novo objeto: usando AquariumFishData Para criar um novo objeto, você primeiro instancia a classe AquariumFishData com todos os detalhes necessÔrios para o novo item. Em seguida, você usa esta instância AquariumFishData dentro do dicionÔrio Entries de uma ação EditData, mapeando a chave do AquariumFishData para sua representação JSON obtida via novo_item.getJson(). A ação EditData deve ter Data/Objects como alvo (Target).
Criando um novo peixe no aquƔrio
ModEntry.py:
from StardewValley import Manifest, EditData
from StardewValley.contentpatcher import ContentPatcher
from StardewValley.Data import AquariumFishData
# ... (dentro de um mƩtodo como contents(self) na sua classe de mod)
# Primeiro criando um objeto da classe AquariumFishData _> valores fictĆcios.
aquarium_fish = AquariumFishData(
key="pard_fish",
SpriteIndex=0,
type="fish",
idle=[10, 11, 12],
animation=[13, 14, 15],
dart=[16, 17, 18],
animation2=[19, 20, 21],
texture=f"LooseSprites/{self.content.Manifest.UniqueID}_aquariumfish_image",
hatPosition=Position(22, 23)
)
# Registrando a ação EditData para adicionar o novo peixe
self.content.registryContentData(
EditData(
LogName="Criando um novo peixe no aquƔrio", # Nome para o log do Content Patcher
Target="Data/AquariumFish", # O arquivo de dados a ser modificado
Entries={
# Mapeia a chave do seu peixe para a representação JSON do peixe
aquarium_fish.key: aquarium_fish.getJson()
}
)
)
Criando um peixe personalizado no aquƔrio usando classe Personalizada
pardfish.py
from StardewValley.Data import AquariumFishData
from StardewValley.helper import Helper
class Pardfish(AquariumFishData):
def __init__(self):
self.key="pard_fish"
self.SpriteIndex=0
self.type="fish"
self.idle=[10, 11, 12]
self.animation=[13, 14, 15]
self.dart=[16, 17, 18]
self.animation2=[19, 20, 21]
self.texture=f"LooseSprites/{self.content.Manifest.UniqueID}_aquariumfish_image"
self.hatPosition=Position(22, 23)
ModEntry.py:
from StardewValley import Manifest, EditData
from StardewValley.helper import Helper
from pardfish import Pardfish #novo arquivo a classe criada acima importada
# ... (dentro de um mƩtodo como contents(self) na sua classe de mod)
pardfish=Pardfish()
self.content.registryContentData(
EditData(
LogName="Criando um novo peixe no aquƔrio", # Nome para o log do Content Patcher
Target="Data/AquariumFish", # O arquivo de dados a ser modificado
Entries={
# Mapeia a chave do seu peixe para a representação JSON do peixe
pardfish.key: pardfish.getJson()
}
)
)