Files

65 lines
4.1 KiB
Markdown

# 2D Shell — el marco donde se dibuja cualquier juego 2D
2D Shell es la pantalla vacía que los juegos 2D rellenan: la imagen del lugar actual, el reloj y la barra de herramientas arriba, espacio para paneles y la esquina de notificaciones. Por sí sola no muestra nada. Los mods de contenido meten en ella sus propias capas: el Dialog Engine añade el cuadro de texto y las opciones de una novela visual, y el mod RPG añade el mapa de tiles transitable, de modo que una novela y un RPG de tiles comparten el mismo marco, la misma barra de herramientas y los mismos menús.
Lo incluye todo juego 2D: Cthangover, My Novel y RPG Plus.
![La misma carcasa en dos juegos: una escena de Cthangover con el cuadro de texto y las opciones, y la aldea de RPG Plus con el mapa de tiles; ambos tienen el reloj arriba a la izquierda y la barra de herramientas arriba a la derecha.](assets/two-games.jpg)
## Lo que ves en pantalla
![Una escena de Cthangover: el fondo de la cocina, el reloj y un contador de raciones arriba a la izquierda, la barra de herramientas arriba a la derecha, las opciones «Leave» y «Cook», y el cuadro de texto abajo.](assets/novel-scene.jpg)
En esta escena, la carcasa aporta:
- **la imagen del lugar** — la cocina, con su sombreado según la hora y sus luces (Time Engine);
- **la barra superior** — el reloj arriba a la izquierda, la barra de herramientas arriba a la derecha y, en medio, el indicador de guardado y, de noche, la lámpara portátil;
- **la esquina de notificaciones** bajo el reloj;
- **espacio para paneles** — la bolsa, el mapa o el diario se abren sobre la escena.
El cuadro de texto y las opciones vienen del Dialog Engine, y el contador de raciones de Cooking: son capas que esos mods añaden a la carcasa.
## Las capas, de atrás hacia delante
```text
BaseScene
└── Scene
├── ModFirstPanel capas de mods por detrás de todo
├── ViewBox el lugar: luces, fondo, primer plano, Lastground
├── (content layer) capa de un mod de contenido, p. ej. el lienzo de diálogos o el mundo RPG
├── TopView reloj, barra de herramientas, indicador de guardado, lámpara
├── ModBeforeUIPanel paneles de la barra: bolsa, mapa, diario, menú…
├── NotificationPanel mensajes en la esquina superior izquierda
└── ModLastPanel capas superpuestas sobre todo, p. ej. la ventana de la mesa de trabajo
```
Las capas posteriores se dibujan sobre las anteriores.
## Para autores de mods
**Añadir una capa de contenido con un parche de escena.** Un parche es un `.tscn` en la carpeta `patches/` de tu mod, en la misma ruta que la escena de la carcasa. Instancia la escena de la carcasa y añade o cambia nodos. El parche del Dialog Engine añade el lienzo de diálogos justo después del visor:
```text
patches/scenes/ui/base_scene.tscn
```
```text
[ext_resource type="PackedScene" path="res://mods/shell2d_base/scenes/ui/base_scene.tscn" id="1_target"]
[ext_resource type="PackedScene" path="res://scenes/ui/dialog_canvas.tscn" id="3_dialog"]
[node name="BaseScene" instance=ExtResource("1_target")]
[node name="DialogCanvas" parent="Scene" index="2" instance=ExtResource("3_dialog")]
```
El mod RPG añade su `RpgWorldHost` del mismo modo, así que un juego con ambos muestra el mapa de tiles y, encima, las líneas de diálogo.
**Añadir un panel sin parche.** Un panel de la barra o una capa superpuesta se declara en la sección `ui` del manifiesto con uno de los slots de la carcasa: `ModBeforeUIPanel`, `ModLastPanel` o el `Lastground` del visor. Los campos están en la guía del mod UI.
**Declara la dependencia.** Un mod que necesite el marco 2D lista `shell2d_base` en `depends`; la carcasa de por sí trae Time Engine y UI.
## Si algo falla
1. **Una pantalla negra con solo la barra de herramientas.** Ningún mod de contenido está rellenando la carcasa (falta el Dialog Engine o el mod RPG en el juego), o la escena no tiene fondo.
2. **Un panel aparece detrás de la escena.** Su manifiesto nombra un slot que se dibuja demasiado pronto; usa `ModBeforeUIPanel` o `ModLastPanel`.