| 44 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 45 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 46 | 
   | 
 procedure TForm_LevelDB.CreateLevel(Source, Target: String); | 
 
 
 
 
 
 
 
 
 | 47 | 
 + | 
 const | 
 
 
 
 
 
 
 
 
 | 48 | 
 + | 
   EmptyBytes: Array[0..31] of Byte = ( | 
 
 
 
 
 
 
 
 
 | 49 | 
 + | 
       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 50 | 
   | 
 var | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 51 | 
   | 
   DatHeader:        THeader; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 52 | 
   | 
   FilesHeader:      TFilesMap; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 338 | 
   | 
             begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 339 | 
   | 
               RawLinks[i].RawAddr := Stream_Sep.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 340 | 
   | 
               Stream_sep.CopyFrom(RawFileStream, RawFileStream.Size); | 
 
 
 
 
 
 
 
 
 | 341 | 
 + | 
               if (Stream_Sep.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 
 | 342 | 
 + | 
                 Stream_Sep.Write(EmptyBytes[0], 32 - (Stream_Sep.Size mod 32)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 343 | 
   | 
             end else begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 344 | 
   | 
               RawLinks[i].RawAddr := Stream_Raw.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 345 | 
   | 
               Stream_Raw.CopyFrom(RawFileStream, RawFileStream.Size); | 
 
 
 
 
 
 
 
 
 | 346 | 
 + | 
               if (Stream_Raw.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 
 | 347 | 
 + | 
                 Stream_Raw.Write(EmptyBytes[0], 32 - (Stream_Raw.Size mod 32)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 348 | 
   | 
             end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 349 | 
   | 
           end else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 350 | 
   | 
             RawLinks[i].RawAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 354 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 355 | 
   | 
       DatFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 356 | 
   | 
       Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size); | 
 
 
 
 
 
 
 
 
 | 357 | 
 + | 
       if (Stream_Body.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 
 | 358 | 
 + | 
         Stream_Body.Write(EmptyBytes[0], 32 - (Stream_Body.Size mod 32)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 359 | 
   | 
     end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 360 | 
   | 
     else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 361 | 
   | 
       FilesHeader[FileID].DataAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 386 | 
   | 
   for i := 0 to High(ExtensionsHeader) do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 387 | 
   | 
     Stream_Dat.Write(ExtensionsHeader[i], SizeOf(ExtensionsHeader[i])); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 388 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 389 | 
 + | 
   if (Stream_Dat.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 
 | 390 | 
 + | 
     Stream_Dat.Write(EmptyBytes[0], 32 - (Stream_Dat.Size mod 32)); | 
 
 
 
 
 
 
 
 
 | 391 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 392 | 
   | 
   DatHeader.DataSize  := Stream_Body.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 393 | 
   | 
   DatHeader.NamesSize := Stream_Names.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 394 | 
   | 
   DatHeader.DataAddr  := Stream_Dat.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 395 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 396 | 
   | 
   Stream_Body.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 397 | 
   | 
   Stream_Dat.CopyFrom(Stream_Body, Stream_Body.Size); | 
 
 
 
 
 
 
 
 
 | 398 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 399 | 
 + | 
   if (Stream_Dat.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 
 | 400 | 
 + | 
     Stream_Dat.Write(EmptyBytes[0], 32 - (Stream_Dat.Size mod 32)); | 
 
 
 
 
 
 
 
 
 | 401 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 402 | 
   | 
   DatHeader.NamesAddr := Stream_Dat.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 403 | 
   | 
   Stream_Names.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 404 | 
   | 
   Stream_Dat.CopyFrom(Stream_Names, Stream_Names.Size); |