118 lines
4.3 KiB
C#
118 lines
4.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using RecNet;
|
|
using UnityEngine;
|
|
|
|
namespace RecRoom.Challenges
|
|
{
|
|
// Token: 0x02000B0F RID: 2831
|
|
public class ChallengeParser
|
|
{
|
|
// Token: 0x06015AEF RID: 88815 RVA: 0x00605768 File Offset: 0x00603968
|
|
public static IChallenge FromJsonDict(Dictionary<string, object> dict)
|
|
{
|
|
ChallengeTypes? challengeType = ChallengeParser.GetChallengeType(dict);
|
|
if (challengeType != null)
|
|
{
|
|
switch (challengeType.Value)
|
|
{
|
|
case ChallengeTypes.Challenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<Challenge>(dict);
|
|
case ChallengeTypes.ChallengeCountChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<ChallengeCountChallenge>(dict);
|
|
case ChallengeTypes.TimedBufferChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<TimedBufferChallenge>(dict);
|
|
case ChallengeTypes.DynamicFloatArithmeticChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<DynamicFloatArithmeticChallenge>(dict);
|
|
case ChallengeTypes.DynamicIntArithmeticChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<DynamicIntArithmeticChallenge>(dict);
|
|
case ChallengeTypes.RequiredToolChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<RequiredToolChallenge>(dict);
|
|
case ChallengeTypes.RequiredEventTypeChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<RequiredEventTypeChallenge>(dict);
|
|
case ChallengeTypes.RequiredActivityChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<RequiredActivityChallenge>(dict);
|
|
case ChallengeTypes.RequiredEnemyTypeChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<RequiredEnemyTypeChallenge>(dict);
|
|
case ChallengeTypes.BoolVarEqualsChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<BoolVarEqualsChallenge>(dict);
|
|
case ChallengeTypes.DiscGolfFinishUnderParChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<DiscGolfFinishUnderParChallenge>(dict);
|
|
case ChallengeTypes.RequiredGameModeActivityChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<RequiredGameModeActivityChallenge>(dict);
|
|
case ChallengeTypes.CompleteGameWithoutChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<CompleteGameWithoutChallenge>(dict);
|
|
case ChallengeTypes.RequiredGestureChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<RequiredGestureChallenge>(dict);
|
|
case ChallengeTypes.HitstreakChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<HitstreakChallenge>(dict);
|
|
case ChallengeTypes.HitstreakCountChallenge:
|
|
return OFPFHHLNHIC.DKMOHDIJHAE<HitstreakCountChallenge>(dict);
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x06015AF0 RID: 88816 RVA: 0x00605850 File Offset: 0x00603A50
|
|
private static ChallengeTypes? GetChallengeType(Dictionary<string, object> dict)
|
|
{
|
|
if (dict != null && dict.ContainsKey("ct"))
|
|
{
|
|
ChallengeTypes challengeTypes = (ChallengeTypes)OFPFHHLNHIC.KOFIKGFMMKD<int>("ct", dict);
|
|
return new ChallengeTypes?(challengeTypes);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Token: 0x06015AF1 RID: 88817 RVA: 0x00605890 File Offset: 0x00603A90
|
|
public static bool TryGetChallenge(string key, Dictionary<string, object> dict, out IChallenge challenge)
|
|
{
|
|
challenge = null;
|
|
object obj = null;
|
|
if (dict.TryGetValue(key, out obj) && obj != null)
|
|
{
|
|
Dictionary<string, object> dictionary = (Dictionary<string, object>)obj;
|
|
challenge = ChallengeParser.FromJsonDict(dictionary);
|
|
if (challenge != null)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Token: 0x06015AF2 RID: 88818 RVA: 0x006058D0 File Offset: 0x00603AD0
|
|
public static List<IChallenge> GetChallengeSet(string key, Dictionary<string, object> jsonDict)
|
|
{
|
|
if (jsonDict.ContainsKey(key))
|
|
{
|
|
List<Dictionary<string, object>> list = OFPFHHLNHIC.NGILNLCIOJM<Dictionary<string, object>>(key, jsonDict);
|
|
return new List<IChallenge>(from _ in list.Select(new Func<Dictionary<string, object>, IChallenge>(ChallengeParser.FromJsonDict))
|
|
where _ != null
|
|
select _);
|
|
}
|
|
return new List<IChallenge>();
|
|
}
|
|
|
|
// Token: 0x06015AF3 RID: 88819 RVA: 0x00605944 File Offset: 0x00603B44
|
|
public static T GetOptionalKey<T>(string key, Dictionary<string, object> jsonDict, T defaultValue = default(T))
|
|
{
|
|
if (jsonDict.ContainsKey(key))
|
|
{
|
|
try
|
|
{
|
|
return OFPFHHLNHIC.KOFIKGFMMKD<T>(key, jsonDict);
|
|
}
|
|
catch
|
|
{
|
|
Debug.LogError("Badly formatted data for optional key:" + key);
|
|
return defaultValue;
|
|
}
|
|
return defaultValue;
|
|
}
|
|
return defaultValue;
|
|
}
|
|
}
|
|
}
|