213 lines
7.0 KiB
C#
213 lines
7.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using RecNet;
|
|
|
|
namespace RecRoom.Challenges
|
|
{
|
|
// Token: 0x02000AFC RID: 2812
|
|
public abstract class ChallengeBase : IChallenge, INMKELLJKBO, EBHIILNPABI
|
|
{
|
|
// Token: 0x170008DC RID: 2268
|
|
// (get) Token: 0x06015A63 RID: 88675 RVA: 0x0060475C File Offset: 0x0060295C
|
|
// (set) Token: 0x06015A64 RID: 88676 RVA: 0x00604764 File Offset: 0x00602964
|
|
public bool Complete { get; private set; }
|
|
|
|
// Token: 0x170008DD RID: 2269
|
|
// (get) Token: 0x06015A65 RID: 88677 RVA: 0x00604770 File Offset: 0x00602970
|
|
// (set) Token: 0x06015A66 RID: 88678 RVA: 0x00604778 File Offset: 0x00602978
|
|
public bool Dirty { get; protected set; }
|
|
|
|
// Token: 0x170008DE RID: 2270
|
|
// (get) Token: 0x06015A67 RID: 88679 RVA: 0x00604784 File Offset: 0x00602984
|
|
// (set) Token: 0x06015A68 RID: 88680 RVA: 0x0060478C File Offset: 0x0060298C
|
|
public bool UpdateServer { get; protected set; }
|
|
|
|
// Token: 0x170008DF RID: 2271
|
|
// (get) Token: 0x06015A69 RID: 88681 RVA: 0x00604798 File Offset: 0x00602998
|
|
public virtual ChallengeProgress Progress
|
|
{
|
|
get
|
|
{
|
|
return new ChallengeProgress
|
|
{
|
|
Count = ((!this.Complete) ? 0 : 1),
|
|
Total = 1
|
|
};
|
|
}
|
|
}
|
|
|
|
// Token: 0x170008E0 RID: 2272
|
|
// (get) Token: 0x06015A6A RID: 88682
|
|
public abstract ChallengeTypes ChallengeType { get; }
|
|
|
|
// Token: 0x170008E1 RID: 2273
|
|
// (get) Token: 0x06015A6B RID: 88683 RVA: 0x006047D0 File Offset: 0x006029D0
|
|
// (set) Token: 0x06015A6C RID: 88684 RVA: 0x006047D8 File Offset: 0x006029D8
|
|
public bool SkipSerialization { get; set; }
|
|
|
|
// Token: 0x170008E2 RID: 2274
|
|
// (get) Token: 0x06015A6D RID: 88685 RVA: 0x006047E4 File Offset: 0x006029E4
|
|
// (set) Token: 0x06015A6E RID: 88686 RVA: 0x006047EC File Offset: 0x006029EC
|
|
public bool UpdateServerOnReset { get; set; }
|
|
|
|
// Token: 0x170008E3 RID: 2275
|
|
// (get) Token: 0x06015A6F RID: 88687 RVA: 0x006047F8 File Offset: 0x006029F8
|
|
// (set) Token: 0x06015A70 RID: 88688 RVA: 0x00604800 File Offset: 0x00602A00
|
|
public bool IsMasterChallenge { get; set; }
|
|
|
|
// Token: 0x06015A71 RID: 88689 RVA: 0x0060480C File Offset: 0x00602A0C
|
|
public void EvaluateEvent(ChallengeEvents.IChallengeEventData challengeEventData)
|
|
{
|
|
this.Evaluate(challengeEventData);
|
|
}
|
|
|
|
// Token: 0x06015A72 RID: 88690 RVA: 0x00604818 File Offset: 0x00602A18
|
|
public bool Evaluate(ChallengeEvents.IChallengeEventData challengeEventData)
|
|
{
|
|
this.Dirty = false;
|
|
this.UpdateServer = false;
|
|
if (this.Complete && !this.IgnorePreviousCompletions)
|
|
{
|
|
return true;
|
|
}
|
|
if (this.Complete && this.IgnorePreviousCompletions)
|
|
{
|
|
this.Complete = false;
|
|
}
|
|
bool flag = this.EvaluateInternal(challengeEventData);
|
|
bool flag2 = flag != this.Complete;
|
|
bool flag3 = flag && !this.Complete;
|
|
if (this.Dirty)
|
|
{
|
|
this.UpdateEvent.LAMMJKLHNOL(delegate(UpdateChallenge _)
|
|
{
|
|
_(this);
|
|
});
|
|
}
|
|
if (flag2)
|
|
{
|
|
if (flag3)
|
|
{
|
|
this.UpdateServer = true;
|
|
this.Complete = true;
|
|
this.ChallengeCompleteEvent.LAMMJKLHNOL(delegate(ChallengeComplete _)
|
|
{
|
|
_(this, challengeEventData);
|
|
});
|
|
}
|
|
if (this.IgnorePreviousCompletions)
|
|
{
|
|
this.Complete = flag;
|
|
}
|
|
}
|
|
if (this.UpdateServer && this.IsMasterChallenge)
|
|
{
|
|
this.UpdateServerEvent.LAMMJKLHNOL(delegate(UpdateChallenge _)
|
|
{
|
|
_(this);
|
|
});
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06015A73 RID: 88691
|
|
protected abstract bool EvaluateInternal(ChallengeEvents.IChallengeEventData challengeEventData);
|
|
|
|
// Token: 0x06015A74 RID: 88692 RVA: 0x0060493C File Offset: 0x00602B3C
|
|
public virtual void Reset()
|
|
{
|
|
if (this.UpdateServerOnReset)
|
|
{
|
|
this.UpdateServer = true;
|
|
this.Dirty = true;
|
|
}
|
|
this.Complete = false;
|
|
}
|
|
|
|
// Token: 0x14000096 RID: 150
|
|
// (add) Token: 0x06015A75 RID: 88693 RVA: 0x00604960 File Offset: 0x00602B60
|
|
// (remove) Token: 0x06015A76 RID: 88694 RVA: 0x00604998 File Offset: 0x00602B98
|
|
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
public event ChallengeComplete ChallengeCompleteEvent;
|
|
|
|
// Token: 0x14000097 RID: 151
|
|
// (add) Token: 0x06015A77 RID: 88695 RVA: 0x006049D0 File Offset: 0x00602BD0
|
|
// (remove) Token: 0x06015A78 RID: 88696 RVA: 0x00604A08 File Offset: 0x00602C08
|
|
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
public event UpdateChallenge UpdateEvent;
|
|
|
|
// Token: 0x14000098 RID: 152
|
|
// (add) Token: 0x06015A79 RID: 88697 RVA: 0x00604A40 File Offset: 0x00602C40
|
|
// (remove) Token: 0x06015A7A RID: 88698 RVA: 0x00604A78 File Offset: 0x00602C78
|
|
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
public event UpdateChallenge UpdateServerEvent;
|
|
|
|
// Token: 0x14000099 RID: 153
|
|
// (add) Token: 0x06015A7B RID: 88699 RVA: 0x00604AB0 File Offset: 0x00602CB0
|
|
// (remove) Token: 0x06015A7C RID: 88700 RVA: 0x00604AE8 File Offset: 0x00602CE8
|
|
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
public event ChallengeNotifyEvent ChallengeNotifyEvent;
|
|
|
|
// Token: 0x06015A7D RID: 88701 RVA: 0x00604B20 File Offset: 0x00602D20
|
|
public void Notify(int count = 0, int total = 0)
|
|
{
|
|
this.ChallengeNotifyEvent.LAMMJKLHNOL(delegate(ChallengeNotifyEvent _)
|
|
{
|
|
_(this, count, total);
|
|
});
|
|
}
|
|
|
|
// Token: 0x06015A7E RID: 88702 RVA: 0x00604B60 File Offset: 0x00602D60
|
|
protected static void SerializeOptionalField<T>(string key, T value, T defaultValue, Dictionary<string, object> jsonDict) where T : struct, IComparable, IEquatable<T>
|
|
{
|
|
if (!EqualityComparer<T>.Default.Equals(value, defaultValue))
|
|
{
|
|
jsonDict[key] = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06015A7F RID: 88703 RVA: 0x00604B80 File Offset: 0x00602D80
|
|
public virtual Dictionary<string, object> Serialize()
|
|
{
|
|
Dictionary<string, object> dictionary = new Dictionary<string, object>();
|
|
dictionary["ct"] = (int)this.ChallengeType;
|
|
ChallengeBase.SerializeOptionalField<bool>("c", this.Complete, false, dictionary);
|
|
ChallengeBase.SerializeOptionalField<bool>("ipc", this.IgnorePreviousCompletions, true, dictionary);
|
|
return dictionary;
|
|
}
|
|
|
|
// Token: 0x06015A80 RID: 88704 RVA: 0x00604BD0 File Offset: 0x00602DD0
|
|
public void Deserialize(Dictionary<string, object> jsonDict)
|
|
{
|
|
this.IgnorePreviousCompletions = ChallengeParser.GetOptionalKey<bool>("ipc", jsonDict, true);
|
|
this.Complete = ChallengeParser.GetOptionalKey<bool>("c", jsonDict, false);
|
|
this.DeserializeInternal(jsonDict);
|
|
this.Initialize();
|
|
}
|
|
|
|
// Token: 0x06015A81 RID: 88705
|
|
protected abstract void DeserializeInternal(Dictionary<string, object> jsonDict);
|
|
|
|
// Token: 0x06015A82 RID: 88706 RVA: 0x00604C04 File Offset: 0x00602E04
|
|
protected virtual void Initialize()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003C0D RID: 15373
|
|
public bool IgnorePreviousCompletions = true;
|
|
|
|
// Token: 0x04003C0E RID: 15374
|
|
public const bool IGNORE_PREVIOUS_COMPLETIONS_DEFAULT = true;
|
|
|
|
// Token: 0x04003C13 RID: 15379
|
|
public const string IGNORE_PREVIOUS_COMPLETIONS_KEY = "ipc";
|
|
|
|
// Token: 0x04003C14 RID: 15380
|
|
public const string COMPLETE_KEY = "c";
|
|
|
|
// Token: 0x04003C15 RID: 15381
|
|
public const string CHALLENGE_TYPE_KEY = "ct";
|
|
}
|
|
}
|