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
| Parameter | Type | Description |
|---|---|---|
playerId | number | The 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
| Parameter | Type | Description |
|---|---|---|
playerId | number | The 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
| Parameter | Type | Description |
|---|---|---|
playerId | number | The 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
| Parameter | Type | Description |
|---|---|---|
playerId | number | The 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
| Parameter | Type | Description |
|---|---|---|
characterId | string | The 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
| Parameter | Type | Description |
|---|---|---|
characterId | string | The character's unique ID. |
patch | Partial<CharacterData> | Partial character data to merge. |
Returns
Promise<void>