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
| Parameter | Type |
|---|---|
ctx | EventContext<[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
| Parameter | Type |
|---|---|
ctx | EventContext<[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
| Parameter | Type | Description |
|---|---|---|
playerId | number | The 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
| 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/core/characters/character.service.ts:388
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/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
| 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/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
| Parameter | Type |
|---|---|
ctx | EventContext<[]> |
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
| Parameter | Type | Description |
|---|---|---|
characterId | string | The character's unique ID. |
patch | Partial<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
| Parameter | Type |
|---|---|
ctx | EventContext<[number]> |
Returns
Promise<Character>