Skip to main content

CharacterService

Defined in: src/modules/core/characters/character.service.ts:71

Service for managing player characters and profiles.

Provides functionality for:

  • Loading and caching player profiles
  • Loading and caching characters
  • Character selection UI flow
  • Character-player mapping
  • Character data persistence
  • Per-player observable for active character state

Example

class MyService {
    private characterService = inject(CharacterService);
 
    async doSomething(playerId: number) {
        const character = await this.characterService.getActiveCharacter(playerId);
        // Use character...
    }
}

Constructors

Constructor

new CharacterService(): CharacterService;

Returns

CharacterService

Methods

cleanupClientSide()

cleanupClientSide(): void;

Defined in: src/modules/core/characters/character.service.ts:136

Clean up client-side resources.

Returns

void


clearAllState()

clearAllState(): void;

Defined in: src/modules/core/characters/character.service.ts:330

Clears all in-memory state. Called on module stop to ensure clean state on resource restart.

Returns

void


createCharacter()

createCharacter(ctx: EventContext<[number, string]>): Promise\<Character\>;

Defined in: src/modules/core/characters/character.service.ts:209

Called from web UI when player wants to create a new character. Returns the character data. Client is responsible for updating UI state.

Parameters

ParameterType
ctxEventContext<[number, string]>

Returns

Promise<Character>


deleteCharacter()

deleteCharacter(ctx: EventContext<[number]>): Promise<CharacterSummary[]>;

Defined in: src/modules/core/characters/character.service.ts:275

Delete a character by slot. Returns the updated list of character summaries.

Parameters

ParameterType
ctxEventContext<[number]>

Returns

Promise<CharacterSummary[]>


detachCharacter()

detachCharacter(playerId: number): void;

Defined in: src/modules/core/characters/character.service.ts:410

Detaches a character from a player, clearing all cached state. Called when a player disconnects.

Parameters

ParameterTypeDescription
playerIdnumberThe server ID of the player.

Returns

void


ensurePlayerProfile()

ensurePlayerProfile(playerId: number): Promise\<PlayerProfile\>;

Defined in: src/modules/core/characters/character.service.ts:358

Ensures a player profile exists, loading from database or creating if needed. Results are cached for subsequent calls.

Parameters

ParameterTypeDescription
playerIdnumberThe server ID of the player.

Returns

Promise<PlayerProfile>

The player's profile.


getActiveCharacter()

getActiveCharacter(playerId: number): Character | null;

Defined in: src/modules/core/characters/character.service.ts:388

Gets the currently active character for a player from cache.

Parameters

ParameterTypeDescription
playerIdnumberThe server ID of the player.

Returns

Character | null

The cached character, or null if not loaded.


getActiveCharacterObservable()

getActiveCharacterObservable(): ServerOwnedObservable<Character | null>;

Defined in: src/modules/core/characters/character.service.ts:119

Get the active character observable for client-side subscription. On client: subscribe to receive active character updates.

Returns

ServerOwnedObservable<Character | null>


getPlayerForCharacter()

getPlayerForCharacter(characterId: string): number | null;

Defined in: src/modules/core/characters/character.service.ts:399

Gets the player ID that owns a specific character.

Parameters

ParameterTypeDescription
characterIdstringThe character's unique ID.

Returns

number | null

The player's server ID, or null if not found.


initClientSide()

initClientSide(): void;

Defined in: src/modules/core/characters/character.service.ts:127

Initialize client-side observable subscription (if needed).

Returns

void


initiateCharacterSelection()

initiateCharacterSelection(ctx: EventContext<[]>): Promise<CharacterSummary[]>;

Defined in: src/modules/core/characters/character.service.ts:150

Called from client when player joins. Loads character summaries. Returns the list of characters for the player to choose from. Note: The client is responsible for updating the selectionState observable.

Parameters

ParameterType
ctxEventContext<[]>

Returns

Promise<CharacterSummary[]>


patchCharacterData()

patchCharacterData(characterId: string, patch: Partial\<CharacterData\>): Promise<void>;

Defined in: src/modules/core/characters/character.service.ts:442

Patches character data fields and persists to database. Also updates the in-memory cache.

Parameters

ParameterTypeDescription
characterIdstringThe character's unique ID.
patchPartial<CharacterData>Partial character data to merge.

Returns

Promise<void>


selectCharacter()

selectCharacter(ctx: EventContext<[number]>): Promise\<Character\>;

Defined in: src/modules/core/characters/character.service.ts:169

Called from web UI when player selects an existing character. Returns the character data. Client is responsible for updating UI state.

Parameters

ParameterType
ctxEventContext<[number]>

Returns

Promise<Character>