forked from aly/qstbak
755 lines
20 KiB
C#
755 lines
20 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Immutable;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using Questionable.Model;
|
|
using Questionable.Model.Questing;
|
|
|
|
namespace Questionable.Data;
|
|
|
|
internal sealed class QuestChainBuilder
|
|
{
|
|
[Serializable]
|
|
[CompilerGenerated]
|
|
private sealed class _003C_003Ec
|
|
{
|
|
public static readonly _003C_003Ec _003C_003E9 = new _003C_003Ec();
|
|
|
|
public static Comparison<QuestId> _003C_003E9__6_1;
|
|
|
|
internal int _003CGetChainGraph_003Eb__6_1(QuestId a, QuestId b)
|
|
{
|
|
return _200D_202A_200B_200D_202E_206E_202C_206E_200E_206E_200D_206A_200F_202B_206B_206F_200C_202C_206D_202D_200C_200E_200E_202D_200F_200F_200F_200D_206A_206F_200D_202D_202E_206E_202D_206D_202E_200F_206C_200F_202E((ElementId)a).CompareTo(_200D_202A_200B_200D_202E_206E_202C_206E_200E_206E_200D_206A_200F_202B_206B_206F_200C_202C_206D_202D_200C_200E_200E_202D_200F_200F_200F_200D_206A_206F_200D_202D_202E_206E_202D_206D_202E_200F_206C_200F_202E((ElementId)b));
|
|
}
|
|
|
|
static ushort _200D_202A_200B_200D_202E_206E_202C_206E_200E_206E_200D_206A_200F_202B_206B_206F_200C_202C_206D_202D_200C_200E_200E_202D_200F_200F_200F_200D_206A_206F_200D_202D_202E_206E_202D_206D_202E_200F_206C_200F_202E(ElementId P_0)
|
|
{
|
|
return P_0.Value;
|
|
}
|
|
}
|
|
|
|
private readonly QuestData _questData;
|
|
|
|
private readonly Dictionary<QuestId, List<QuestId>> _descendants = new Dictionary<QuestId, List<QuestId>>();
|
|
|
|
private readonly Dictionary<QuestId, QuestChain> _cache = new Dictionary<QuestId, QuestChain>();
|
|
|
|
private readonly Dictionary<QuestId, QuestChainGraph> _graphCache = new Dictionary<QuestId, QuestChainGraph>();
|
|
|
|
public QuestChainBuilder(QuestData questData)
|
|
{
|
|
_questData = questData;
|
|
IEnumerator<KeyValuePair<ElementId, IQuestInfo>> enumerator = _questData.AllQuests.GetEnumerator();
|
|
try
|
|
{
|
|
while (_206F_202C_206E_206F_200B_206E_202D_200E_200E_200B_206A_206D_206E_200E_200E_200D_202E_200E_202B_206E_202E_206A_200C_202E_202C_206E_206B_200D_206C_200D_202A_202D_206D_206E_206B_200F_206C_206B_206D_206C_202E((IEnumerator)enumerator))
|
|
{
|
|
var (elementId2, questInfo2) = (KeyValuePair<ElementId, IQuestInfo>)(ref enumerator.Current);
|
|
if (!(elementId2 is QuestId item))
|
|
{
|
|
continue;
|
|
}
|
|
foreach (PreviousQuestInfo previousQuest in questInfo2.PreviousQuests)
|
|
{
|
|
if (!_descendants.TryGetValue(previousQuest.QuestId, out List<QuestId> value))
|
|
{
|
|
value = new List<QuestId>();
|
|
_descendants[previousQuest.QuestId] = value;
|
|
}
|
|
value.Add(item);
|
|
}
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
if (enumerator != null)
|
|
{
|
|
_206F_202E_206D_200E_206A_206C_202D_206E_206E_206E_206F_206B_200D_200C_200D_202B_202A_200E_202A_206B_202A_206A_206A_200C_206F_206F_206F_206A_200B_202A_202E_202D_200E_202B_206E_206E_206D_200E_206F_200C_202E((IDisposable)enumerator);
|
|
}
|
|
}
|
|
}
|
|
|
|
public QuestChain GetChain(QuestId questId)
|
|
{
|
|
QuestChain value;
|
|
int num = ((!_cache.TryGetValue(questId, out value)) ? (-1661948315) : (-1661948316));
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1661948315;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
{
|
|
List<QuestId> list = new List<QuestId>();
|
|
CollectAncestors(questId, list, new HashSet<QuestId>());
|
|
list.Add(questId);
|
|
List<QuestId> list2 = new List<QuestId>();
|
|
CollectDescendants(questId, list2, new HashSet<QuestId>());
|
|
QuestChain questChain = new QuestChain(list, list2, questId);
|
|
_cache[questId] = questChain;
|
|
return questChain;
|
|
}
|
|
case 1:
|
|
return value;
|
|
case 2:
|
|
goto IL_009e;
|
|
}
|
|
continue;
|
|
IL_009e:
|
|
num = -1661948316;
|
|
}
|
|
}
|
|
|
|
public QuestChainGraph GetChainGraph(QuestId questId)
|
|
{
|
|
int num = ((!_graphCache.TryGetValue(questId, out QuestChainGraph value)) ? 194094588 : 194094591);
|
|
Dictionary<QuestId, List<QuestId>> prerequisites;
|
|
PreviousQuestInfo current3 = default(PreviousQuestInfo);
|
|
QuestId current7 = default(QuestId);
|
|
int num11 = default(int);
|
|
QuestId current8 = default(QuestId);
|
|
int num21 = default(int);
|
|
int num19 = default(int);
|
|
List<List<QuestId>> list2 = default(List<List<QuestId>>);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 194094590;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
goto IL_005d;
|
|
case 1:
|
|
return value;
|
|
case 2:
|
|
{
|
|
HashSet<QuestId> hashSet = new HashSet<QuestId>();
|
|
CollectAllRelated(questId, hashSet);
|
|
prerequisites = new Dictionary<QuestId, List<QuestId>>();
|
|
Dictionary<QuestId, List<QuestId>> dictionary = new Dictionary<QuestId, List<QuestId>>();
|
|
using (HashSet<QuestId>.Enumerator enumerator = hashSet.GetEnumerator())
|
|
{
|
|
num = 102426660;
|
|
while (true)
|
|
{
|
|
int num5 = num;
|
|
num3 = 102426662;
|
|
num4 = num5;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
num = 102426660;
|
|
break;
|
|
case 2:
|
|
num = (enumerator.MoveNext() ? 102426661 : 102426663);
|
|
break;
|
|
case 3:
|
|
{
|
|
QuestId current = enumerator.Current;
|
|
prerequisites[current] = new List<QuestId>();
|
|
dictionary[current] = new List<QuestId>();
|
|
num = 102426660;
|
|
break;
|
|
}
|
|
case 1:
|
|
goto end_IL_009e;
|
|
}
|
|
continue;
|
|
end_IL_009e:
|
|
break;
|
|
}
|
|
}
|
|
foreach (QuestId item in hashSet)
|
|
{
|
|
if (!_questData.TryGetQuestInfo(item, out IQuestInfo questInfo))
|
|
{
|
|
continue;
|
|
}
|
|
using ImmutableList<PreviousQuestInfo>.Enumerator enumerator2 = questInfo.PreviousQuests.GetEnumerator();
|
|
num = 986674695;
|
|
while (true)
|
|
{
|
|
int num6 = num;
|
|
num3 = 986674692;
|
|
num4 = num6;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 3:
|
|
num = (enumerator2.MoveNext() ? 986674694 : 986674693);
|
|
break;
|
|
case 4:
|
|
prerequisites[item].Add(current3.QuestId);
|
|
dictionary[current3.QuestId].Add(item);
|
|
num = 986674695;
|
|
break;
|
|
case 2:
|
|
current3 = enumerator2.Current;
|
|
num = ((!hashSet.Contains(current3.QuestId)) ? 986674695 : 986674688);
|
|
break;
|
|
case 0:
|
|
num = 986674695;
|
|
break;
|
|
case 1:
|
|
goto end_IL_0189;
|
|
}
|
|
continue;
|
|
end_IL_0189:
|
|
break;
|
|
}
|
|
}
|
|
Dictionary<QuestId, int> dictionary2 = new Dictionary<QuestId, int>();
|
|
List<QuestId> list = hashSet.Where((QuestId q) => prerequisites[q].Count == 0).ToList();
|
|
using (HashSet<QuestId>.Enumerator enumerator = hashSet.GetEnumerator())
|
|
{
|
|
num = 1881646025;
|
|
while (true)
|
|
{
|
|
int num7 = num;
|
|
num3 = 1881646027;
|
|
num4 = num7;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 3:
|
|
num = 1881646025;
|
|
break;
|
|
case 2:
|
|
num = (enumerator.MoveNext() ? 1881646026 : 1881646027);
|
|
break;
|
|
case 1:
|
|
{
|
|
QuestId current4 = enumerator.Current;
|
|
dictionary2[current4] = 0;
|
|
num = 1881646025;
|
|
break;
|
|
}
|
|
case 0:
|
|
goto end_IL_02bf;
|
|
}
|
|
continue;
|
|
end_IL_02bf:
|
|
break;
|
|
}
|
|
}
|
|
Dictionary<QuestId, int> dictionary3 = new Dictionary<QuestId, int>();
|
|
using (HashSet<QuestId>.Enumerator enumerator = hashSet.GetEnumerator())
|
|
{
|
|
num = -45802294;
|
|
while (true)
|
|
{
|
|
int num8 = num;
|
|
num3 = -45802293;
|
|
num4 = num8;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 1:
|
|
num = (enumerator.MoveNext() ? (-45802295) : (-45802296));
|
|
break;
|
|
case 2:
|
|
{
|
|
QuestId current5 = enumerator.Current;
|
|
dictionary3[current5] = prerequisites[current5].Count;
|
|
num = -45802294;
|
|
break;
|
|
}
|
|
case 0:
|
|
num = -45802294;
|
|
break;
|
|
case 3:
|
|
goto end_IL_036c;
|
|
}
|
|
continue;
|
|
end_IL_036c:
|
|
break;
|
|
}
|
|
}
|
|
Queue<QuestId> queue = new Queue<QuestId>(list);
|
|
using (List<QuestId>.Enumerator enumerator3 = list.GetEnumerator())
|
|
{
|
|
num = 32820321;
|
|
while (true)
|
|
{
|
|
int num9 = num;
|
|
num3 = 32820322;
|
|
num4 = num9;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
num = 32820321;
|
|
break;
|
|
case 3:
|
|
num = (enumerator3.MoveNext() ? 32820323 : 32820320);
|
|
break;
|
|
case 1:
|
|
{
|
|
QuestId current6 = enumerator3.Current;
|
|
dictionary2[current6] = 0;
|
|
num = 32820321;
|
|
break;
|
|
}
|
|
case 2:
|
|
goto end_IL_042d;
|
|
}
|
|
continue;
|
|
end_IL_042d:
|
|
break;
|
|
}
|
|
}
|
|
while (queue.Count > 0)
|
|
{
|
|
QuestId key = queue.Dequeue();
|
|
using List<QuestId>.Enumerator enumerator3 = dictionary[key].GetEnumerator();
|
|
num = -1942600016;
|
|
while (true)
|
|
{
|
|
int num10 = num;
|
|
num3 = -1942600013;
|
|
num4 = num10;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 2:
|
|
num = -1942600016;
|
|
break;
|
|
case 4:
|
|
current7 = enumerator3.Current;
|
|
num11 = dictionary2[key] + 1;
|
|
num = ((num11 <= dictionary2[current7]) ? (-1942600011) : (-1942600013));
|
|
break;
|
|
case 1:
|
|
queue.Enqueue(current7);
|
|
num = -1942600016;
|
|
break;
|
|
case 0:
|
|
dictionary2[current7] = num11;
|
|
num = -1942600011;
|
|
break;
|
|
case 6:
|
|
{
|
|
QuestId key2 = current7;
|
|
int num12 = dictionary3[key2];
|
|
num3 = 1;
|
|
num4 = num12;
|
|
dictionary3[key2] = ~(~num4 + num3);
|
|
num = ((dictionary3[current7] != 0) ? (-1942600016) : (-1942600014));
|
|
break;
|
|
}
|
|
case 3:
|
|
num = (enumerator3.MoveNext() ? (-1942600009) : (-1942600010));
|
|
break;
|
|
case 5:
|
|
goto end_IL_04e3;
|
|
}
|
|
continue;
|
|
end_IL_04e3:
|
|
break;
|
|
}
|
|
}
|
|
using (HashSet<QuestId>.Enumerator enumerator = hashSet.GetEnumerator())
|
|
{
|
|
num = -234574320;
|
|
while (true)
|
|
{
|
|
int num13 = num;
|
|
num3 = -234574318;
|
|
num4 = num13;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 2:
|
|
num = (enumerator.MoveNext() ? (-234574314) : (-234574319));
|
|
break;
|
|
case 4:
|
|
current8 = enumerator.Current;
|
|
num = (dictionary2.ContainsKey(current8) ? (-234574320) : (-234574317));
|
|
break;
|
|
case 0:
|
|
num = -234574320;
|
|
break;
|
|
case 1:
|
|
dictionary2[current8] = 0;
|
|
num = -234574320;
|
|
break;
|
|
case 3:
|
|
goto end_IL_0638;
|
|
}
|
|
continue;
|
|
end_IL_0638:
|
|
break;
|
|
}
|
|
}
|
|
num = ((hashSet.Count > 0) ? (-2059298114) : (-2059298113));
|
|
while (true)
|
|
{
|
|
int num14 = num;
|
|
num3 = -2059298115;
|
|
num4 = num14;
|
|
int num15 = num4 + num3;
|
|
int num16 = num4 & num3;
|
|
int num20;
|
|
switch (num15 - (num16 + num16))
|
|
{
|
|
case 0:
|
|
num = ((num21 <= num19) ? (-2059298120) : (-2059298116));
|
|
break;
|
|
case 2:
|
|
num20 = 0;
|
|
goto IL_07cb;
|
|
case 5:
|
|
{
|
|
list2.Add(new List<QuestId>());
|
|
int num22 = num21;
|
|
num3 = 1;
|
|
num4 = num22;
|
|
int num23 = num4 ^ num3;
|
|
int num24 = num4 & num3;
|
|
num21 = num23 + (num24 + num24);
|
|
num = -2059298115;
|
|
break;
|
|
}
|
|
case 4:
|
|
num = -2059298113;
|
|
break;
|
|
case 3:
|
|
num20 = _202C_206A_200F_200D_202D_206C_200B_206B_206D_200B_206B_206E_202E_202A_206C_202C_206B_200E_206C_200E_200D_200D_202B_202C_202E_200F_206D_202A_206C_202C_206E_202E_200F_206F_200C_200C_200B_200E_206D_206F_202E((IEnumerable<int>)dictionary2.Values);
|
|
goto IL_07cb;
|
|
case 1:
|
|
{
|
|
using (HashSet<QuestId>.Enumerator enumerator = hashSet.GetEnumerator())
|
|
{
|
|
num = -1078522335;
|
|
while (true)
|
|
{
|
|
int num17 = num;
|
|
num3 = -1078522335;
|
|
num4 = num17;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
num = (enumerator.MoveNext() ? (-1078522336) : (-1078522334));
|
|
break;
|
|
case 1:
|
|
{
|
|
QuestId current9 = enumerator.Current;
|
|
list2[dictionary2[current9]].Add(current9);
|
|
num = -1078522335;
|
|
break;
|
|
}
|
|
case 2:
|
|
num = -1078522335;
|
|
break;
|
|
case 3:
|
|
goto end_IL_07f7;
|
|
}
|
|
continue;
|
|
end_IL_07f7:
|
|
break;
|
|
}
|
|
}
|
|
using (List<List<QuestId>>.Enumerator enumerator4 = list2.GetEnumerator())
|
|
{
|
|
num = -1375899676;
|
|
while (true)
|
|
{
|
|
int num18 = num;
|
|
num3 = -1375899676;
|
|
num4 = num18;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
num = (enumerator4.MoveNext() ? (-1375899673) : (-1375899675));
|
|
break;
|
|
case 3:
|
|
enumerator4.Current.Sort((QuestId a, QuestId b) => _003C_003Ec._200D_202A_200B_200D_202E_206E_202C_206E_200E_206E_200D_206A_200F_202B_206B_206F_200C_202C_206D_202D_200C_200E_200E_202D_200F_200F_200F_200D_206A_206F_200D_202D_202E_206E_202D_206D_202E_200F_206C_200F_202E((ElementId)a).CompareTo(_003C_003Ec._200D_202A_200B_200D_202E_206E_202C_206E_200E_206E_200D_206A_200F_202B_206B_206F_200C_202C_206D_202D_200C_200E_200E_202D_200F_200F_200F_200D_206A_206F_200D_202D_202E_206E_202D_206D_202E_200F_206C_200F_202E((ElementId)b)));
|
|
num = -1375899676;
|
|
break;
|
|
case 2:
|
|
num = -1375899676;
|
|
break;
|
|
case 1:
|
|
goto end_IL_08ab;
|
|
}
|
|
continue;
|
|
end_IL_08ab:
|
|
break;
|
|
}
|
|
}
|
|
QuestChainGraph questChainGraph = new QuestChainGraph(prerequisites, dictionary, dictionary2, list2, questId);
|
|
_graphCache[questId] = questChainGraph;
|
|
return questChainGraph;
|
|
}
|
|
IL_07cb:
|
|
num19 = num20;
|
|
list2 = new List<List<QuestId>>();
|
|
num21 = 0;
|
|
num = -2059298115;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
continue;
|
|
IL_005d:
|
|
num = 194094591;
|
|
}
|
|
}
|
|
|
|
public void Invalidate()
|
|
{
|
|
_cache.Clear();
|
|
_graphCache.Clear();
|
|
}
|
|
|
|
private void CollectAllRelated(QuestId questId, HashSet<QuestId> result)
|
|
{
|
|
CollectAncestorsSet(questId, result);
|
|
result.Add(questId);
|
|
CollectDescendantsSet(questId, result);
|
|
}
|
|
|
|
private void CollectAncestorsSet(QuestId questId, HashSet<QuestId> visited)
|
|
{
|
|
int num = (visited.Add(questId) ? 1731520860 : 1731520863);
|
|
IQuestInfo questInfo = default(IQuestInfo);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1731520861;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 4:
|
|
num = 1731520863;
|
|
break;
|
|
case 1:
|
|
num = (_questData.TryGetQuestInfo(questId, out questInfo) ? 1731520861 : 1731520862);
|
|
break;
|
|
case 2:
|
|
return;
|
|
case 3:
|
|
return;
|
|
case 0:
|
|
{
|
|
using ImmutableList<PreviousQuestInfo>.Enumerator enumerator = questInfo.PreviousQuests.GetEnumerator();
|
|
num = -152844110;
|
|
while (true)
|
|
{
|
|
int num5 = num;
|
|
num3 = -152844109;
|
|
num4 = num5;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 3:
|
|
num = -152844110;
|
|
break;
|
|
case 2:
|
|
{
|
|
PreviousQuestInfo current = enumerator.Current;
|
|
CollectAncestorsSet(current.QuestId, visited);
|
|
num = -152844110;
|
|
break;
|
|
}
|
|
case 1:
|
|
num = (enumerator.MoveNext() ? (-152844111) : (-152844109));
|
|
break;
|
|
case 0:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void CollectDescendantsSet(QuestId questId, HashSet<QuestId> visited)
|
|
{
|
|
int num = (visited.Add(questId) ? 1111057688 : 1111057690);
|
|
List<QuestId> value = default(List<QuestId>);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1111057691;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 4:
|
|
num = 1111057690;
|
|
break;
|
|
case 2:
|
|
return;
|
|
case 3:
|
|
num = (_descendants.TryGetValue(questId, out value) ? 1111057691 : 1111057689);
|
|
break;
|
|
case 1:
|
|
return;
|
|
case 0:
|
|
{
|
|
using List<QuestId>.Enumerator enumerator = value.GetEnumerator();
|
|
num = 1156773667;
|
|
while (true)
|
|
{
|
|
int num7 = num;
|
|
num3 = 1156773667;
|
|
num4 = num7;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 2:
|
|
num = 1156773667;
|
|
break;
|
|
case 1:
|
|
{
|
|
QuestId current = enumerator.Current;
|
|
CollectDescendantsSet(current, visited);
|
|
num = 1156773667;
|
|
break;
|
|
}
|
|
case 0:
|
|
num = (enumerator.MoveNext() ? 1156773666 : 1156773664);
|
|
break;
|
|
case 3:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void CollectAncestors(QuestId questId, List<QuestId> result, HashSet<QuestId> visited)
|
|
{
|
|
int num = (visited.Add(questId) ? 807904870 : 807904864);
|
|
IQuestInfo questInfo = default(IQuestInfo);
|
|
PreviousQuestInfo current = default(PreviousQuestInfo);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 807904866;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 1:
|
|
return;
|
|
case 4:
|
|
num = (_questData.TryGetQuestInfo(questId, out questInfo) ? 807904865 : 807904867);
|
|
break;
|
|
case 2:
|
|
return;
|
|
case 0:
|
|
num = 807904864;
|
|
break;
|
|
case 3:
|
|
{
|
|
using ImmutableList<PreviousQuestInfo>.Enumerator enumerator = questInfo.PreviousQuests.GetEnumerator();
|
|
num = 960895852;
|
|
while (true)
|
|
{
|
|
int num5 = num;
|
|
num3 = 960895855;
|
|
num4 = num5;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
num = 960895852;
|
|
break;
|
|
case 3:
|
|
num = (enumerator.MoveNext() ? 960895851 : 960895854);
|
|
break;
|
|
case 2:
|
|
result.Add(current.QuestId);
|
|
num = 960895852;
|
|
break;
|
|
case 4:
|
|
current = enumerator.Current;
|
|
CollectAncestors(current.QuestId, result, visited);
|
|
num = (result.Contains(current.QuestId) ? 960895852 : 960895853);
|
|
break;
|
|
case 1:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void CollectDescendants(QuestId questId, List<QuestId> result, HashSet<QuestId> visited)
|
|
{
|
|
int num = (visited.Add(questId) ? (-599330933) : (-599330934));
|
|
List<QuestId> value = default(List<QuestId>);
|
|
QuestId current = default(QuestId);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -599330936;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 1:
|
|
return;
|
|
case 2:
|
|
return;
|
|
case 4:
|
|
num = -599330934;
|
|
break;
|
|
case 3:
|
|
num = (_descendants.TryGetValue(questId, out value) ? (-599330936) : (-599330935));
|
|
break;
|
|
case 0:
|
|
{
|
|
using List<QuestId>.Enumerator enumerator = value.GetEnumerator();
|
|
num = -1727068589;
|
|
while (true)
|
|
{
|
|
int num7 = num;
|
|
num3 = -1727068591;
|
|
num4 = num7;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 5:
|
|
num = -1727068589;
|
|
break;
|
|
case 4:
|
|
result.Add(current);
|
|
num = -1727068592;
|
|
break;
|
|
case 3:
|
|
current = enumerator.Current;
|
|
num = (result.Contains(current) ? (-1727068592) : (-1727068587));
|
|
break;
|
|
case 2:
|
|
num = (enumerator.MoveNext() ? (-1727068590) : (-1727068591));
|
|
break;
|
|
case 1:
|
|
CollectDescendants(current, result, visited);
|
|
num = -1727068589;
|
|
break;
|
|
case 0:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
static bool _206F_202C_206E_206F_200B_206E_202D_200E_200E_200B_206A_206D_206E_200E_200E_200D_202E_200E_202B_206E_202E_206A_200C_202E_202C_206E_206B_200D_206C_200D_202A_202D_206D_206E_206B_200F_206C_206B_206D_206C_202E(IEnumerator P_0)
|
|
{
|
|
return P_0.MoveNext();
|
|
}
|
|
|
|
static void _206F_202E_206D_200E_206A_206C_202D_206E_206E_206E_206F_206B_200D_200C_200D_202B_202A_200E_202A_206B_202A_206A_206A_200C_206F_206F_206F_206A_200B_202A_202E_202D_200E_202B_206E_206E_206D_200E_206F_200C_202E(IDisposable P_0)
|
|
{
|
|
P_0.Dispose();
|
|
}
|
|
|
|
static int _202C_206A_200F_200D_202D_206C_200B_206B_206D_200B_206B_206E_202E_202A_206C_202C_206B_200E_206C_200E_200D_200D_202B_202C_202E_200F_206D_202A_206C_202C_206E_202E_200F_206F_200C_200C_200B_200E_206D_206F_202E(IEnumerable<int> P_0)
|
|
{
|
|
return P_0.Max();
|
|
}
|
|
}
|