This repository was archived by the owner on Jun 12, 2024. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExamplePlugin.cs
More file actions
Latest commit
118 lines (88 loc) · 4.39 KB
/
Copy pathExamplePlugin.cs
File metadata and controls
118 lines (88 loc) · 4.39 KB
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
usingSystem;
usingBepInEx;
usingBepInEx.Configuration;
usingHarmonyLib;
usingUnityEngine;
usingLSFunctions;
usingExampleCompanion.Managers;
usingRTFunctions.Functions.Managers;
namespaceExampleCompanion
{
[BepInPlugin("com.mecha.examplecompanion","ExampleCompanion","1.0.5")]
publicclassExamplePlugin:BaseUnityPlugin
{
publicstaticExamplePlugininst;
publicstaticstringclassName="[<color=#3AD4F5>ExampleCompanion</color>] "+PluginInfo.PLUGIN_VERSION+"\n";
readonlyHarmonyharmony=newHarmony("Example");
publicstaticConfigFileModConfig=>inst.Config;
publicstaticAction<EditorManager>onEditorAwake=delegate(EditorManagerx){};
publicstaticAction<bool>onEditorToggle=delegate(boolx){};
publicstaticAction<string>onSceneLoad=delegate(stringx){};
publicstaticAction<GameManager>onGameAwake=delegate(GameManagerx){};
publicstaticActiononInit=delegate()
{
vargameObject=newGameObject("ExampleManager");
gameObject.transform.SetParent(SystemManager.inst.transform);
gameObject.AddComponent<ExampleManager>();
};
#region Configs
publicstaticConfigEntry<bool>ExampleSpawns{get;set;}
publicstaticConfigEntry<float>ExampleVisibility{get;set;}
publicstaticConfigEntry<bool>ExampleVisible{get;set;}
publicstaticConfigEntry<KeyCode>ExampleVisiblityToggle{get;set;}
publicstaticConfigEntry<bool>EnabledInEditor{get;set;}
publicstaticConfigEntry<bool>EnabledInMenus{get;set;}
publicstaticConfigEntry<bool>EnabledInArcade{get;set;}
#endregion
voidAwake()
{
ExampleSpawns=Config.Bind("Spawning","Enabled",true);
ExampleVisibility=Config.Bind("Visibility","Amount",0.5f);
ExampleVisible=Config.Bind("Visibility","Enabled",false);
ExampleVisiblityToggle=Config.Bind("Visibility","Toggle KeyCode",KeyCode.O);
EnabledInArcade=Config.Bind("Visibility","In Arcade",false,"Includes Editor Preview.");
EnabledInEditor=Config.Bind("Visibility","In Editor",true);
EnabledInMenus=Config.Bind("Visibility","In Menus",false);
Config.SettingChanged+=newEventHandler<SettingChangedEventArgs>(UpdateSettings);
harmony.PatchAll(typeof(ExamplePlugin));
if(!ModCompatibility.mods.ContainsKey("ExampleCompanion"))
{
varmod=newModCompatibility.Mod(this,GetType());
mod.Methods.Add("InitExample",(Action)InitExample);
ModCompatibility.mods.Add("ExampleCompanion",mod);
}
// Plugin startup logic
Logger.LogInfo($"Plugin ExampleCompanion is loaded!");
}
voidUpdate()
{
if(Input.GetKeyDown(ExampleVisiblityToggle.Value)&&!LSHelpers.IsUsingInputField())
ExampleVisible.Value=!ExampleVisible.Value;
}
publicstaticvoidInitExample()
{
if(!ExampleManager.inst&&ExampleSpawns.Value)ExampleManager.Init();
}
staticvoidUpdateSettings(objectsender,EventArgse)
{
if(!ExampleManager.inst&&ExampleSpawns.Value)
ExampleManager.Init();
}
[HarmonyPatch(typeof(EditorManager),"Awake")]
[HarmonyPostfix]
staticvoidEditorAwakePostfix(EditorManager__instance)=>onEditorAwake(__instance);
[HarmonyPatch(typeof(EditorManager),"ToggleEditor")]
[HarmonyPostfix]
staticvoidToggleEditorPostfix(EditorManager__instance)=>onEditorToggle(__instance.isEditing);
[HarmonyPatch(typeof(SystemManager),"Awake")]
[HarmonyPostfix]
staticvoidSystemAwakePostfix()=>InitExample();
[HarmonyPatch(typeof(SceneManager),"LoadScene",newType[]{typeof(string)})]
[HarmonyPostfix]
staticvoidLoadScenePostfix(string__0)=>onSceneLoad(__0);
[HarmonyPatch(typeof(GameManager),"Awake")]
[HarmonyPostfix]
staticvoidGameManagerAwakePostfix(GameManager__instance)=>onGameAwake(__instance);
publicstaticvoidLogFormat(stringstr,paramsobject[]v)=>Debug.LogFormat("{0}{1}",className,string.Format(str,v));
}
}