mirror of
https://github.com/Wincent01/InfectedRose.git
synced 2026-05-01 15:59:09 -05:00
c0c3d88477
* Full Read/Write support for newer level file formats. * Added pointer/length tokens. Database: * Made it more reliable. * Speed up some operations. * Emit more sql. * Import/Export from SQLite, not viable, takes a very long time. Database concepts: * Npc creation. * Mission creation, W.I.P.
44 lines
1.1 KiB
C#
44 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using InfectedRose.Core;
|
|
using RakDotNet.IO;
|
|
|
|
namespace InfectedRose.Database.Fdb
|
|
{
|
|
public class DatabaseFile : HashMap, IDeserializable
|
|
{
|
|
internal FdbTableHeader TableHeader { get; set; }
|
|
|
|
public void Deserialize(BitReader reader)
|
|
{
|
|
var tableCount = reader.Read<uint>();
|
|
|
|
using (new DatabaseScope(reader))
|
|
{
|
|
TableHeader = new FdbTableHeader(tableCount);
|
|
|
|
TableHeader.Deserialize(reader);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Compile the database to a hash-map
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This is a really long process and should be run in a Task.
|
|
/// </remarks>
|
|
/// <returns>Compiled database</returns>
|
|
public override byte[] Compile(Action<int> onData = default)
|
|
{
|
|
Structure = new List<object>
|
|
{
|
|
(uint) TableHeader.Tables.Length,
|
|
TableHeader
|
|
};
|
|
|
|
TableHeader.Compile(this);
|
|
|
|
return base.Compile(onData);
|
|
}
|
|
}
|
|
} |