mapinfolist.pas 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. unit mapinfolist;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils,
  6. fpjson, jsonparser;
  7. type
  8. { TMapInfoList }
  9. TMapInfoList = class
  10. private
  11. Filename: String;
  12. public
  13. Data: TJSONArray;
  14. procedure Open(AFilename: String);
  15. procedure Save;
  16. function GetMapName(MapId: Integer): String;
  17. end;
  18. implementation
  19. procedure TMapInfoList.Open(AFilename: String);
  20. var
  21. Stream: TFileStream;
  22. Parser: TJSONParser;
  23. begin
  24. Filename := AFilename;
  25. try
  26. Stream := TFileStream.Create(AFilename, fmOpenRead);
  27. Parser := TJSONParser.Create(Stream);
  28. try
  29. Data := TJSONArray(Parser.Parse);
  30. finally
  31. Parser.Free;
  32. end;
  33. finally
  34. Stream.Free;
  35. end;
  36. end;
  37. procedure TMapInfoList.Save;
  38. begin
  39. end;
  40. function TMapInfoList.GetMapName(MapId: Integer): String;
  41. var
  42. Name: String = '';
  43. begin
  44. if (MapId >= 1) and (MapId < Data.Count) then begin
  45. Name := Trim(Data.Objects[MapId].Strings['name']);
  46. end;
  47. if Name = '' then
  48. Name := Format('%0.3d',[MapId]);
  49. GetMapName := Name;
  50. end;
  51. end.