public static BioQuestMap Load(Stream stream)
{
if (stream == null)
{
throw new ArgumentNullException(nameof(stream));
}
using (var reader = new BioQuestMapReader(stream))
{
var map = new BinaryBioQuestMap();
var questsCount = reader.ReadInt32();
map.Quests = new Dictionary<int, BioQuest>();
for (var i = 0; i < questsCount; i++)
{
var id = reader.ReadInt32();
var quest = reader.ReadQuest();
if (!map.Quests.ContainsKey(id))
{
map.Quests.Add(id, quest);
}
else
{
map.Quests[id] = quest;
}
}
//
var taskEvalsCount = reader.ReadInt32();
map.BoolTaskEvals = new Dictionary<int, BioStateTaskList>();
for (var i = 0; i < taskEvalsCount; i++)
{
var id = reader.ReadInt32();
var taskList = reader.ReadStateTaskList();
if (!map.BoolTaskEvals.ContainsKey(id))
{
map.BoolTaskEvals.Add(id, taskList);
}
else
{
map.BoolTaskEvals[id] = taskList;
}
}
//
var intTaskEvalsCount = reader.ReadInt32();
map.IntTaskEvals = new Dictionary<int, BioStateTaskList>();
for (var i = 0; i < intTaskEvalsCount; i++)
{
var id = reader.ReadInt32();
var taskList = reader.ReadStateTaskList();
if (!map.IntTaskEvals.ContainsKey(id))
{
map.IntTaskEvals.Add(id, taskList);
}
else
{
map.IntTaskEvals[id] = taskList;
}
}
//
var floatTaskEvalsCount = reader.ReadInt32();
map.FloatTaskEvals = new Dictionary<int, BioStateTaskList>();
for (var i = 0; i < floatTaskEvalsCount; i++)
{
var id = reader.ReadInt32();
var taskList = reader.ReadStateTaskList();
if (!map.FloatTaskEvals.ContainsKey(id))
{
map.FloatTaskEvals.Add(id, taskList);
}
else
{
map.FloatTaskEvals[id] = taskList;
}
}
return map;
}
}