Estructura:

  • Objetivo
  • ¿Dónde está la UI en Intersect?
  • Examinando /Intersect.Client.Framework/Gwen/
  • Examinando /Intersect.Client.Core/Interface/
  • Proximos pasos

Objetivo

En este post pretendo definir un plan a seguir con el objetivo de hacer un primer reconocimiento para analizar y entender la UI de Intersect.
Así que comenzare por tratar de entender como funciona la UI en el proyecto.

¿Dónde está la UI en Intersect?

Analizando la estructura del proyecto que fue investigada previamente, pude observar 2 capas que estan relacionadas directamente con la UI del proyecto:

├─────────────────────────────────────────────────────────┤
CAPA 1: Intersect.Client.Framework/Gwen/
Contiene los componentes genéricos reutilizables (botones, cajas de texto, listas, etc.) y el motor de renderizado de UI (Gwen).
├─────────────────────────────────────────────────────────┤
CAPA 2: Intersect.Client.Core/Interface/
Como las ventanas concretas del juego (login, registro, inventario, chat, etc.) que usan los componentes de la Capa 1.
├─────────────────────────────────────────────────────────┤

Examinando Intersect.Client.Framework/Gwen/

Gwen es como un motor de UI de bajo nivel, tratar de comenzar por ahí no seria la mejor opción aunque sea la base de toda la UI, viéndolo desde otra analogía seria cómo averiguar como es la fabricación de un ladrillo cuando lo que queremos es remodelar una casa.

El siguiente paso será ir directamente a la «capa 2» y estudiar la carpeta /Intersect.Client.Core/Interface/, ya que contiene las ventanas reales del juego que quiero modificar.
Específicamente, comenzaré por ver algunos archivos de ejemplo y averiguar como se construye una ventana de ejemplo y tratar de entender cómo se conectan las ventanas entre sí.

Una vez comprendido el patrón de una ventana, podré aplicar el mismo conocimiento
a cualquier otra ventana del juego.
El objetivo final es poder modificar, añadir o crear nuevas ventanas de UI
adaptadas a las necesidades de mi proyecto.

Examinando Intersect.Client.Core/Interface/

ElementoDescripción
Debugging/DebugWindow.cs:
Ventana de debug con tabs (Info, Assets, Entities, Maps, Logs)
AssetsSearchableTreeDataProvider.cs:
Proveedor de datos de assets para debug
Providers/NodeUnderCursorProvider.cs:
Proveedor del nodo bajo cursor
Providers/ActivePlayerProvider.cs:
Proveedor del jugador activo
Game/Admin/:
AdminWindow.cs -Panel de administración
BanMuteBox.cs – Diálogo para ban/mute
TexturePicker.cs – Selector de texturas para admin
Bag/:
BagWindow.cs – contenedor de items
BagItem.cs – Item individual
Bank/:
BankWindow.cs – Banco para almacenar items
BankItem.cs – Item individual
Character/:
CharacterWindow.cs – Ventana personaje con stats
EquipmentItem.cs – Item de equipamiento individual
Chat/: Caja de chat
Crafting/: Mesa de crafteo
DescriptionWindows/:
Components/ – Componentes reutilizable
DescriptionWindowBase.cs – Base para ventanas de descripción
ItemDescriptionWindow.cs – Tooltip de descripción de item
SpellDescriptionWindow.cs – Tooltip de descripción de hechizo
EntityPanel/:
EntityBox.cs – Panel de entidad
PlayerStatusWindow.cs – Ventana de estados activos del jugador
SpellStatus.cs – Icono de estado de hechizo
Friends/ – Lista de amigos
Hotbar/ : Barra de acceso rápido
Inventory/ : Ventana de inventario
MapItem/ : Ventana de items en el suelo con botón «Loot All»
Shop/ : Ventana de tienda para comprar/vender
Spells/ : Ventana de hechizos similar al inventario
Trades/ : Ventana de intercambio entre jugadores
Typewriter/ – Efecto de escritura para textos de eventos/diálogos.
AnnouncementWindow.cs –
Draggable.cs – Elemento arrastrable para drag & drop de items/hechizos
EventWindow.cs – Ventana de diálogo de eventos
GameInterface.cs – CONTROLADOR MAESTRO DEL JUEGO. Coordina TODAS las ventanas durante el juego
GuildWindow.cs – Ventana de guild
MenuContainer.cs –  Barra de botones principal durante el juego
PartyWindow.cs – Ventana de grupo
PictureWindow.cs –
QuestOfferWindow.cs –
QuestsWindow.cs – Log de quests
SimplifiedEscapeMenu.cs – Menú de escape simplificado
SlotItem.cs – Item genérico en slot (base para inventario, banco, tienda, etc.)
TargetContextMenu.cs – Menú contextual al clickear entidad con opciones
Menu/CharacterCreationWindow.cs – Ventana de creación de personaje
CharacterSelectionPreviewMetadata.cs – Datos de preview de personaje
CreditsParser.cs – Parser de créditos con estructura
CreditsWindow.cs – Ventana de créditos
EscapeMenuWindow.cs – Menú de pausa/escape durante el juego.
EscapeMenuWindow.Designer.cs –
ForgotPasswordWindow.cs – Recuperación de contraseña. Campo para usuario/email y disclaimer
IMainMenuWindow.cs – Ventana principal del menú con botones
LoginWindow.cs – Ventana de inicio de sesión
MainMenu.cs – CONTROLADOR PRINCIPAL DEL MENÚ.
MainMenuWindow.cs – Ventana principal del menú con botones
MainMenuWindow.Designer.cs –
MenuGuiBase.cs – Contenedor base del menú
PasswordChangeMode.cs –
PasswordChangeWindow.cs – Cambio de contraseña
RegistrationWindow.cs – Ventana de registro
SelectCharacterWindow.cs – Selector de personaje
Shared/AlertWindow.cs – Ventana de alerta
InputBox.cs – Diálogo de entrada genérico
InputType.cs – Enum de tipos de input
SettingsWindow.cs –  Configuración completa del juego
StatisticsPanel.cs –  Panel de FPS, Ping,debug en tiempo real
VersionLabel.cs – Panel de versión del engine
VersionPanel.cs – Label de versión con click para copiar
Interface.csCONTROLADOR MAESTRO de toda la UI del juego
MutableInterface.csInterfaz mutable base que permite crear y manipular elementos UI
Window.csClase base abstracta para todas las ventanas del juego

Proximos pasos

Con esta exploración inicial, tenemos un panorama mucho mas amplio para saber como modificar nuestra UI.

Un buen punto de partida es personalizar toda la interfaz visible para el jugador, comenzando por las pantallas de login, registro y menú principal, que son el primer contacto con el juego.

¿Por donde comenzar?

-Identificar las ventanas clave
-Entender cómo se construye una ventana concreta
-Realizar una modificación mínima y documentar el proceso

Consejos para identificar la UI visible

1.-Ejecuta el cliente en modo depuración y anota los nombres de las ventanas que ves en cada pantalla (login, registro, creación de personaje, juego, etc.).

2.-Busca esos nombres comenzando en la carpeta Interface/ para tratar de localizarlos.

3.-Revisar las clases GameInterface.cs y MainMenu.cs porque allí se instancian y controlan las ventanas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *