Módulo: Domain

Módulo: FirelandsDomain (src/domain)

La capa domain modela conceptos centrales de juego y cuentas y define interfaces de repositorio (ports). Sin SQL, sin sockets.

Fuentes compiladas

src/domain/CMakeLists.txt compila:

  • models/Realm.cpp — metadatos de reino para listas de reinos y estado en vivo
  • world/Map.cpp — grid de mapa / indexación de objetos
  • world/Creature.cpp, world/GameObject.cpp — entidades del mundo

Áreas header-only

ÁreaEjemplos
ModelsCharacter, PlayerCreateInfo, GmTicket, GossipMenu, NpcText, SpellDefinition, WebSession, Chat
World entitiesPlayer, WorldObject, Unit, Aura
Repository portsIAccountRepository, ICharacterRepository, IGossipRepository, INpcTextRepository, …
Domain portsIMapNotifier — callbacks de Player a sesión sin que domain importe infrastructure

Principios

  • Expresa qué manipula el emulador, no cómo se almacenan los datos o se envían los paquetes
  • Reglas puras de gameplay que no necesitan I/O pertenecen aquí
  • El parsing SQL y los packet handlers pertenecen a infrastructure o helpers de red en shared

Repository ports (resumen)

PortPropósito
IAccountRepositoryCuentas, verificadores SRP, session keys
IRealmRepositoryFilas de lista de reinos
ICharacterRepositoryCRUD de personajes
IPlayerCreateInfoRepositoryPosiciones iniciales, hechizos, skills
IGmTicketRepositoryTickets de ayuda GM
IGossipRepository / INpcTextRepository / IQuestGossipRepositoryDatos de gossip
ICreatureSpawnRepositorySpawns de criaturas
ISpellDefinitionStoreMetadatos de hechizos

Las implementaciones viven en infrastructure/persistence/MySql*.

Relacionado