// // MonsterParser.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.Enums; using NosSmooth.Data.Abstractions.Infos; using NosSmooth.Data.Abstractions.Language; using NosSmooth.Data.NOSFiles.Parsers.Dat; using Remora.Results; namespace NosSmooth.Data.NOSFiles.Parsers; /// public class MonsterParser : IInfoParser { /// public Result> Parse(NostaleFiles files) { var monsterDatResult = files.DatFiles.FindFile("Monster.dat"); if (!monsterDatResult.IsSuccess) { return Result>.FromError(monsterDatResult); } var reader = new DatReader(monsterDatResult.Entity); var result = new Dictionary(); while (reader.ReadItem(out var itemNullable)) { var item = itemNullable.Value; var vnum = item.GetEntry("VNUM").Read(1); var nameKey = item.GetEntry("NAME").Read(1); result.Add ( vnum, new MonsterInfo ( vnum, new TranslatableString(TranslationRoot.Monster, nameKey), item.GetEntry("LEVEL").Read(1) ) ); } return result; } private record MonsterInfo(int VNum, TranslatableString Name, int Level) : IMonsterInfo; }