// // InfoService.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using NosSmooth.Data.Abstractions; using NosSmooth.Data.Abstractions.Infos; using NosSmooth.Data.Abstractions.Language; using NosSmooth.Data.NOSFiles.Parsers; using Remora.Results; namespace NosSmooth.Data.NOSFiles; /// internal class InfoService : IInfoService { private readonly NostaleData _nostaleData; /// /// Initializes a new instance of the class. /// /// The parsed data. public InfoService(NostaleData nostaleData) { _nostaleData = nostaleData; } /// public Task> GetItemInfoAsync(int vnum, CancellationToken ct = default) { if (!_nostaleData.Items.ContainsKey(vnum)) { return Task.FromResult(Result.FromError(new NotFoundError($"Couldn't find item {vnum}"))); } return Task.FromResult(Result.FromSuccess(_nostaleData.Items[vnum])); } /// public Task> GetMapInfoAsync(int id, CancellationToken ct = default) { if (!_nostaleData.Maps.ContainsKey(id)) { return Task.FromResult(Result.FromError(new NotFoundError($"Couldn't find map {id}"))); } return Task.FromResult(Result.FromSuccess(_nostaleData.Maps[id])); } /// public Task> GetMonsterInfoAsync(int vnum, CancellationToken ct = default) { if (!_nostaleData.Monsters.ContainsKey(vnum)) { return Task.FromResult(Result.FromError(new NotFoundError($"Couldn't find monster {vnum}"))); } return Task.FromResult(Result.FromSuccess(_nostaleData.Monsters[vnum])); } /// public Task> GetSkillInfoAsync(int vnum, CancellationToken ct = default) { if (!_nostaleData.Skills.ContainsKey(vnum)) { return Task.FromResult(Result.FromError(new NotFoundError($"Couldn't find skill {vnum}"))); } return Task.FromResult(Result.FromSuccess(_nostaleData.Skills[vnum])); } }