Skip to main content

CharacterService

Defined in: src/modules/characters/character.service.ts:59

Service for managing player characters and profiles.

Provides functionality for:

  • Loading and caching player profiles
  • Loading and caching characters
  • 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.ensureCharacterForPlayer(playerId);
// Use character...
}
}

Constructors

Constructor

new CharacterService(): CharacterService;

Returns

CharacterService

Methods

cleanupClientSide()

cleanupClientSide(): void;

Defined in: src/modules/characters/character.service.ts:103

Clean up client-side resources.

Returns

void


clearAllState()

clearAllState(): void;

Defined in: src/modules/characters/character.service.ts:116

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

Returns

void


detachCharacter()

detachCharacter(playerId: number): void;

Defined in: src/modules/characters/character.service.ts:228

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


ensureCharacterForPlayer()

ensureCharacterForPlayer(playerId: number): Promise\<Character\>;

Defined in: src/modules/characters/character.service.ts:171

Ensures a character exists for the player, loading from database or creating if needed. Results are cached for subsequent calls. Also updates the per-player observable for the active character.

Parameters

ParameterTypeDescription
playerIdnumberThe server ID of the player.

Returns

Promise<Character>

The player's character.


ensurePlayerProfile()

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

Defined in: src/modules/characters/character.service.ts:139

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/characters/character.service.ts:206

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/characters/character.service.ts:86

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/characters/character.service.ts:217

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/characters/character.service.ts:94

Initialize client-side observable subscription (if needed).

Returns

void


patchCharacterData()

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

Defined in: src/modules/characters/character.service.ts:253

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>