0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00
server/project/src/services/MatchBotDetailsCacheService.ts
Alex d13e86ba46 Rebranding to SPT (!345)
Rebranded src code and scripts to SPT

Co-authored-by: clodan <clodan@clodan.com>
Reviewed-on: SPT-AKI/Server#345
Co-authored-by: Alex <clodan@noreply.dev.sp-tarkov.com>
Co-committed-by: Alex <clodan@noreply.dev.sp-tarkov.com>
2024-05-21 17:59:04 +00:00

51 lines
1.6 KiB
TypeScript

import { inject, injectable } from "tsyringe";
import { IBotBase } from "@spt/models/eft/common/tables/IBotBase";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { LocalisationService } from "@spt/services/LocalisationService";
/** Cache bots in a dictionary, keyed by the bots name, keying by name isnt ideal as its not unique but this is used by the post-raid system which doesnt have any bot ids, only name */
@injectable()
export class MatchBotDetailsCacheService
{
protected botDetailsCache: Record<string, IBotBase> = {};
constructor(
@inject("WinstonLogger") protected logger: ILogger,
@inject("LocalisationService") protected localisationService: LocalisationService,
)
{}
/**
* Store a bot in the cache, keyed by its name
* @param botToCache Bot details to cache
*/
public cacheBot(botToCache: IBotBase): void
{
this.botDetailsCache[`${botToCache.Info.Nickname.trim()}${botToCache.Info.Side}`] = botToCache;
}
/**
* Clean the cache of all bot details
*/
public clearCache(): void
{
this.botDetailsCache = {};
}
/**
* Find a bot in the cache by its name and side
* @param botName Name of bot to find
* @returns Bot details
*/
public getBotByNameAndSide(botName: string, botSide: string): IBotBase
{
const botInCache = this.botDetailsCache[`${botName}${botSide}`];
if (!botInCache)
{
this.logger.warning(`bot not found in match bot cache: ${botName} ${botSide}`);
}
return botInCache;
}
}