Skip to content
🚧 Esta documentação ainda está em desenvolvimento e pode conter informações incompletas.

AudioChangesData

A classe AudioChangesData é uma das classes especiais fornecidas pela biblioteca para auxiliar na adição ou modificação de áudios do jogo stardew valley, através do arquivo Data/AudioChanges. Embora o xnb presente nesse caminho não contenha dados, pois são modificados pelo código interno do jogo, esse é o caminho para que se possa modificar os áudios do game.

Construtor

def __init__(self,
    key:str,
    ID:str,
    FilePaths:list[str],
    Category: str,
    StreamVorbis: bool, Looped: bool,
    UseReverb:bool,
    CustomFields: Optional[dict[str,str]] = None
)

Parâmetros

Name Type Description
key (str) O ID exclusivo para a chave presente no arquivo Data/AudioChanges.
ID (str) O ID exclusivo para o sinal de áudio, usado ao reproduzir o som no jogo.
FilePaths (list[str]) Uma lista de caminhos de arquivo absolutos (não nomes de ativos) dos quais carregar o áudio. Cada arquivo pode ser .ogg ou .wav. Se você listar vários caminhos, um aleatório será escolhido sempre que for reproduzido.
Category (str) A categoria de áudio, que determina qual controle deslizante de volume nas opções do jogo se aplica. Deve ser Default, Music, Sound, Ambient, ou Footsteps (veja a descrição de cada categoria). O padrão é Default.
StreamVorbis (bool) Se o áudio deve ser transmitido do disco ao ser reproduzido, em vez de ser carregado na memória antecipadamente. Isso só é possível para arquivos Ogg Vorbis (.ogg), que, caso contrário, serão descompactados na memória durante o carregamento. O padrão é falso. -> true=Reduz o uso de memória quando o sinal de áudio não está ativo, mas aumenta o impacto no desempenho quando ele é reproduzido. -> false=Aumenta o uso de memória (já que está totalmente carregado na memória), mas reduz o impacto no desempenho quando reproduzido.
Looped (bool) Se o sinal de áudio é reproduzido em loop contínuo até ser interrompido. Padrão falso.
UseReverb (bool) Se um efeito de reverberação deve ser aplicado ao áudio. Padrão: falso.
CustomFields (dict[str, str]) Os campos personalizados para esta entrada.

Comportamento

Instâncias de AudioChangesData são projetadas para serem usadas dentro do campo Entries de uma ação EditData. Quando você deseja adicionar um novo audio ao jogo, ou alterar um existente. Ao criar um objeto AudioChangesData 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/AudioChanges. Essa abordagem estruturada ajuda os desenvolvedores a evitar erros comuns associados a arquivos JSON manuais. Criando um novo objeto: usando AudioChangesData Para criar um novo objeto, você primeiro instancia a classe AudioChangesData com todos os detalhes necessários para o novo item. Em seguida, você usa esta instância AudioChangesData dentro do dicionário Entries de uma ação EditData, mapeando a chave do AudioChangesData para sua representação JSON obtida via novo_item.getJson(). A ação EditData deve ter Data/Objects como alvo (Target).

Exemplo simples de novo audio

ModEntry.py:

from StardewValley import Manifest, EditData
from StardewValley.contentpatcher import ContentPatcher
from StardewValley.Data import AudioChangesData, AudioCategoryList

# ... (dentro de um método como contents(self) na sua classe de mod)

# Primeiro criando um objeto da classe AudioChangesData _> valores fictícios.
categorias=AudioCategoryList()
audio_changes = AudioChangesData(
    key=f"{self.content.Manifest.UniqueID}_new_audio",
    ID=f"{self.content.Manifest.UniqueID}_new_audio",
    FilePaths=["new_audio.ogg"], #or new_audio.wav
    Category=categorias.Music,
    StreamVorbis=True,
    Looped=True,
    UseReverb=False
)

self.content.registryContentData(
    EditData(
        LogName="Criando um novo audio", # Nome para o log do Content Patcher
        Target="Data/AudioChanges", # O arquivo de dados a ser modificado
        Entries={audio_changes.key: audio_changes.getJson()} # Dicionário de novos audios
    )
)

Exemplo usando classe personalizada

newaudio.py

from StardewValley.Data import AudioChangesData, AudioCategoryList
from StardewValley.helper import Helper

class NewAudio(AudioChangesData):
    def __init__(self, mod:Helper):
        self.key=f"{mod.content.Manifest.UniqueID}_new_audio"
        self.ID=f"{mod.content.Manifest.UniqueID}_new_audio"
        self.FilePaths=["new_audio.ogg"] #or new_audio.wav
        self.Category=AudioCategoryList().Music
        self.StreamVorbis=True
        self.Looped=True
        self.UseReverb=False

ModEntry.py

from StardewValley import Manifest, EditData
from StardewValley.Helper import Helper
from newaudio import NewAudio

# ... (dentro de um método como contents(self) na sua classe de mod)

# Registrando a ação EditData para adicionar o novo audio
newaudio=NewAudio(self)
self.content.registryContentData(
    EditData(
        LogName="Criando um novo audio", # Nome para o log do Content Patcher
        Target="Data/AudioChanges", # O arquivo de dados a ser modificado
        Entries={
            newaudio.key: newaudio.getJson()
        }
    )
)