-
Notifications
You must be signed in to change notification settings - Fork 9
/
EpicMMOSystem_API.cs
97 lines (81 loc) · 2.51 KB
/
EpicMMOSystem_API.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System;
using System.Reflection;
using EpicMMOSystem;
using UnityEngine.PostProcessing;
namespace API;
public static class EpicMMOSystem_API
{
private static API_State state = API_State.NotReady;
private static MethodInfo eGetLevel;
private static MethodInfo eAddExp;
private static MethodInfo eGetAttribute;
private static MethodInfo eSetSingleRate;
private enum API_State
{
NotReady, NotInstalled, Ready
}
public enum Attribut
{
Strength = 0, Agility = 1, Intellect = 2, Endurance = 3
}
public static int GetLevel()
{
int result = 0;
Init();
if (eGetLevel != null) result = (int)eGetLevel.Invoke(null, null);
return result;
}
public static int GetAttribute(Attribut attribute)
{
int result = 0;
Init();
if (eGetAttribute != null) result = (int)eGetAttribute.Invoke(null, new object[] {attribute});
return result;
}
public static void AddExp(int value)
{
Init();
eAddExp?.Invoke(null, new object[] { value });
}
public static void SetSingleRate(float rate)
{
Init();
eSetSingleRate?.Invoke(null, new object[] { rate });
}
private static void Init()
{
if (state is API_State.Ready or API_State.NotInstalled) return;
if (Type.GetType("EpicMMOSystem.EpicMMOSystem, EpicMMOSystem") == null)
{
state = API_State.NotInstalled;
return;
}
state = API_State.Ready;
Type actionsMO = Type.GetType("API.EMMOS_API, EpicMMOSystem");
eGetLevel = actionsMO.GetMethod("GetLevel", BindingFlags.Public | BindingFlags.Static);
eAddExp = actionsMO.GetMethod("AddExp", BindingFlags.Public | BindingFlags.Static);
eAddExp = actionsMO.GetMethod("GetAttribute", BindingFlags.Public | BindingFlags.Static);
eSetSingleRate = actionsMO.GetMethod("SetSingleRate", BindingFlags.Public | BindingFlags.Static);
}
}
//Don't Use
public static class EMMOS_API
{
public static int GetLevel()
{
return LevelSystem.Instance.getLevel();
}
public static void AddExp(int exp)
{
LevelSystem.Instance.AddExp(exp);
}
public static void SetSingleRate(float rate)
{
LevelSystem.Instance.SetSingleRate(rate);
}
public static int GetAttribute(EpicMMOSystem_API.Attribut attribute)
{
var index = (int)attribute;
return LevelSystem.Instance.getParameter((Parameter)index);
}
}