La versión 0.11.7 introdujo el framework de decoración basado en image tags (etiquetas de imagen), que permite ocultar/mostrar automáticamente una image tag en distintas ubicaciones según el fondo actual.
La versión 0.12.3 introdujo el reemplazo de image tags, que permite usar una image tag completamente distinta en diferentes fondos.
Esta guía está escrita para creadores de fondos personalizados y no profundiza en los aspectos técnicos del framework. Consulta Uso para saltarte las explicaciones sobre el fondo.
Índice
Componentes
MASImageTagDecoration
Esta es una representación en objeto de una decoración que corresponde a una image tag.
Su objetivo principal es permitir asociar datos adicionales a una decoración, como ex_props, por ejemplo.
En general, no tendrás que construir estos objetos.
MASAdvancedDecoFrame
Almacena atributos que se pasarían a renpy.show. Es parecido al currying (una forma de preparar funciones con parámetros fijados).
Esto solo debe usarse con objetos MASImageTagDecoration
Probablemente tendrás que construir estos objetos para definir la posición de una decoración. El constructor recibe los mismos parámetros que renpy.show, excluyendo name.
MASImageTagDecoDefinition
Vincula image tags (objetos MASImageTagDecoration) con objetos MASAdvancedDecoFrame para fondos concretos.
Toda decoración basada en image tags debe tener uno de estos para que el framework deco considere esa tag como una decoración.
En general, no tendrás que construir estos objetos.
Comportamiento del sistema (simplificado)
Cuando queremos mostrar una decoración, le pedimos al sistema que la muestre mediante la función show tag. Eso prepara la decoración para mostrarse si tiene una entrada en su MASImageTagDecoDefinition para el fondo actual. Sin embargo, la imagen real solo se muestra cuando cambia el fondo o hay un cambio de escena, lo que permite que la imagen se disuelva en la escena de forma limpia.
El sistema gestiona automáticamente tanto la ocultación como la visualización de decoraciones según los objetos MASImageTagDecoDefinition. Si una decoración no tiene un mapeo (asignación entre elementos) a un objeto MASAdvancedDecoFrame en su MASImageTagDecoDefinition, la decoración se oculta. En caso contrario, los objetos MASAdvancedDecoFrame permiten mostrar decoraciones en distintas ubicaciones según el fondo.
Uso
Paso 1 - determina qué objetos de decoración te sirven para tu fondo
Tendrás que revisar cada imagen de decoración y decidir si puede mostrarse en tu fondo. Si puede, tendrás que especificar un objeto MASAdvancedDecoFrame (o usar uno existente) para definir la mejor posición en ese fondo.
Si debe mostrarse una imagen diferente, puedes asociar otra image tag (y, opcionalmente, un frame) con la decoración para tu fondo.
Para ver la lista de objetos de decoración actuales, consulta aquí (enlace)
Paso 2 - registra esos objetos de decoración para tu fondo
Tendrás que escribir una línea por cada objeto de decoración que quieras permitir en tu fondo. Esto debe colocarse después del código que crea el objeto de fondo.
Aquí puedes usar 2 APIs (interfaces de funciones del sistema):
MASImageTagDecoDefinition.register_img
Parámetros:
tag- (REQUIRED) image tag del objeto de decoración con el que registrarbg_id- (REQUIRED) ID del objeto de fondo que se va a registrar (debe ser el ID de tu fondo)adv_deco_frame- (REQUIRED) objetoMASAdvancedDecoFrameque se usará al mostrar esta decoración en tu fondoreplace_tag- (optional) - NEW in 0.12.3+ - image tag que se usará en lugar de la imagen de decoración estándar
Usa esta función cuando el objeto de decoración se pueda mostrar en tu fondo, pero en una ubicación distinta a la predeterminada.
Aquí tienes un ejemplo que registra el árbol de Navidad en tu fondo usando un zorder de 7. (El valor por defecto es 6)
MASImageTagDecoDefinition.register_img(
"mas_d25_tree",
"your_custom_background_id",
MASAdvancedDecoFrame(zorder=7)
)
Aquí tienes un ejemplo que registra un árbol personalizado en tu fondo.
MASImageTagDecoDefinition.register_img(
"mas_d25_tree",
"your_custom_background_id",
MASAdvancedDecoFrame(),
replace_tag="your_custom_d25_tree"
)
MASImageTagDecoDefinition.register_img_same
Parámetros:
tag- (REQUIRED) image tag del objeto de decoración con el que registrarbg_id_src- (REQUIRED) ID del objeto de fondo del que copiarMASAdvancedDecoFramebg_id_dest- (REQUIRED) ID del objeto de fondo que se va a registrar (debe ser el ID de tu fondo)
Usa esta función si el objeto de decoración puede mostrarse en tu fondo en la misma posición en la que se muestra en otro fondo. Por ejemplo, si la ubicación predeterminada de una decoración ya te sirve, aquí pasarías store.mas_background.MBG_DEF.
Aquí tienes un ejemplo que registra el árbol de Navidad en tu fondo usando la posición predeterminada.
MASImageTagDecoDefinition.register_img_same(
"mas_d25_tree",
store.mas_background.MBG_DEF,
"your_custom_background_id"
)
Paso 3 - completado
¡Y ya está! Una vez registres las imágenes, el framework Deco debería encargarse del resto.
Objetos de decoración estándar
Para probar cómo se ven y su posición predeterminada, usa la API show deco con show_now en True.
NOTA: probablemente todas las imágenes compuestas no funcionen en otros fondos. Lo sentimos.
player-bday
- próximamente
o31
mas_o31_wall_candle- vela enjaulada sostenida por una mano demonik(a)mas_o31_cat_frame- un cuadro de gato en la pared detrás de Monika que es algo más de lo que parecemas_o31_wall_bats- adhesivos de murciélagos para la pared bajo el calendariomas_o31_window_ghost- fantasma de papel que cuelga de la ventanamas_o31_cobwebs- telarañas + araña que cuelgan por las esquinas de la habitaciónmas_o31_candles- mesa con un candelabro de 2 brazosmas_o31_jack_o_lantern- jack o' lantern colocada en la parte trasera izquierda de la habitaciónmas_o31_garlands- una tira de banderines de o31 que, supongo, llamamos guirnaldasmas_o31_ceiling_lights- bombillas que cuelgan del techomas_o31_ceiling_deco- decoración que cuelga del techomas_o31_vignette- viñeta especial específica de o31
d25
mas_d25_banners- composición de corona y calcetín.mas_d25_garlands- cosa verde que supongo que se llama guirnaldasmas_d25_gifts- regalos que van debajo del árbol de Navidadmas_d25_lights- luces que van alrededor de la habitaciónmas_d25_tree- árbol de Navidad
APIs
mas_showDecoTag
Parámetros:
tag- (REQUIRED) image tag de la decoración que se va a mostrarshow_now- [optional] pasa True para mostrar una decoración de inmediato; con False se esperará al siguiente cambio de fondo o de escena.
Esta es la forma principal de mostrar una decoración. show_now solo se recomienda en pruebas, ya que no disolverá las imágenes dentro de la escena.
mas_hideDecoTag
Parámetros:
tag- (REQUIRED) image tag de la decoración que se va a ocultarhide_now- [optional] pasa True para ocultar una decoración de inmediato; con False se esperará al siguiente cambio de fondo o de escena.
Esta es la forma principal de ocultar una decoración. hide_now solo se recomienda en pruebas, ya que no disolverá las imágenes fuera de la escena.
mas_isDecoTagEnabled
(NEW in 0.12.3+)
Parámetros:
tag- (REQUIRED) image tag de la decoración de la que quieres comprobar si está habilitada
RETURNS True si la deco está habilitada, False si no
Esto no significa que la decoración sea realmente visible en la imagen. Esto comprueba si la decoración está configurada para mostrarse, pero, por el comportamiento del sistema, puede que la decoración real no sea visible para el usuario.
mas_isDecoTagVisible
Parámetros:
tag- (REQUIRED) image tag de la decoración de la que quieres comprobar la visibilidad
RETURNS True si la deco es visible, False si no
Esto sí comprueba si la decoración es visible en la imagen.