-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRSClasses.cs
More file actions
119 lines (107 loc) · 6.62 KB
/
RSClasses.cs
File metadata and controls
119 lines (107 loc) · 6.62 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
119
using BepInEx;
using HarmonyLib;
using Jotunn.Utils;
using Photon.Pun;
using RSClasses.Utilities;
using Sonigon;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using ToggleCardsCategories;
using UnityEngine;
namespace RSClasses
{
[BepInDependency("com.aalund13.rounds.toggle_cards_categories", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("com.CrazyCoders.Rounds.RarityBundle", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("com.rsmind.rounds.fancycardbar", BepInDependency.DependencyFlags.SoftDependency)]
[BepInDependency("com.rsmind.rounds.weaponsmanager", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("com.willis.rounds.unbound", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("com.willuwontu.rounds.simulationChamber", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("com.willuwontu.rounds.tabinfo", BepInDependency.DependencyFlags.SoftDependency)]
[BepInDependency("pykess.rounds.plugins.cardchoicespawnuniquecardpatch", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("pykess.rounds.plugins.moddingutils", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("pykess.rounds.plugins.playerjumppatch", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("root.cardtheme.lib", BepInDependency.DependencyFlags.HardDependency)]
[BepInDependency("root.classes.manager.reborn", BepInDependency.DependencyFlags.HardDependency)]
[BepInPlugin(ModId, ModName, Version)]
[BepInProcess("Rounds.exe")]
public class RSClasses : BaseUnityPlugin
{
private const string ModId = "com.rsmind.rounds.RSClasses";
private const string ModName = "RSClasses";
public const string Version = "3.1.3";
public const string ModInitials = "RSC";
internal static Harmony harmony;
public static RSClasses instance { get; private set; }
void Awake()
{
harmony = new Harmony(ModId);
harmony.PatchAll();
assets = AssetUtils.LoadAssetBundleFromResources("rsclassart", typeof(RSClasses).Assembly);
if (assets == null)
{
UnityEngine.Debug.Log("Failed to load RSClasses asset bundle");
}
ToggleCardsCategoriesManager.instance.RegisterCategories(ModInitials);
cardHolder = assets.LoadAsset<GameObject>("CardHolder");
cardHolder.GetComponent<CardHolder>().RegisterCards();
}
internal static SoundEvent reflectSound;
internal static SoundEvent shatterSound;
internal static SoundEvent stardustSound;
internal static SoundEvent sovereignBladeChargeSound;
internal static SoundEvent sovereignBladeStrikeSound;
private static GameObject cardHolder;
void Start()
{
instance = this;
var plugins = (List<BaseUnityPlugin>)typeof(BepInEx.Bootstrap.Chainloader).GetField("_plugins", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
if (plugins.Exists(plugin => plugin.Info.Metadata.GUID == "com.willuwontu.rounds.tabinfo"))
{
TabinfoInterface.Setup();
}
AudioClip reflectAudioClip = RSClasses.assets.LoadAsset<AudioClip>("reflect.ogg"); // Load reflection sound effect
SoundContainer reflectSoundContainer = ScriptableObject.CreateInstance<SoundContainer>();
reflectSoundContainer.setting.volumeIntensityEnable = true;
reflectSoundContainer.audioClip[0] = reflectAudioClip;
reflectSound = ScriptableObject.CreateInstance<SoundEvent>();
reflectSound.soundContainerArray[0] = reflectSoundContainer;
AudioClip shatterAudioClip = RSClasses.assets.LoadAsset<AudioClip>("shatter.ogg"); // Load shatter sound effect
SoundContainer shatterSoundContainer = ScriptableObject.CreateInstance<SoundContainer>();
shatterSoundContainer.setting.volumeIntensityEnable = true;
shatterSoundContainer.audioClip[0] = reflectAudioClip;
shatterSound = ScriptableObject.CreateInstance<SoundEvent>();
shatterSound.soundContainerArray[0] = shatterSoundContainer;
AudioClip stardustAudioClip = RSClasses.assets.LoadAsset<AudioClip>("stardustHit.ogg"); // Load stardust sound effect
SoundContainer stardustSoundContainer = ScriptableObject.CreateInstance<SoundContainer>();
stardustSoundContainer.setting.volumeIntensityEnable = true;
stardustSoundContainer.audioClip[0] = stardustAudioClip;
stardustSound = ScriptableObject.CreateInstance<SoundEvent>();
stardustSound.soundContainerArray[0] = stardustSoundContainer;
AudioClip sovereignBladeChargeAudioClip = RSClasses.assets.LoadAsset<AudioClip>("SovereignBladeCharge.ogg"); // Load sovereign blade sound effects
SoundContainer sovereignBladeChargeSoundContainer = ScriptableObject.CreateInstance<SoundContainer>();
sovereignBladeChargeSoundContainer.setting.volumeIntensityEnable = true;
sovereignBladeChargeSoundContainer.audioClip[0] = sovereignBladeChargeAudioClip;
sovereignBladeChargeSound = ScriptableObject.CreateInstance<SoundEvent>();
sovereignBladeChargeSound.soundContainerArray[0] = sovereignBladeChargeSoundContainer;
AudioClip sovereignBladeStrikeAudioClip = RSClasses.assets.LoadAsset<AudioClip>("SovereignBladeStrike.ogg");
SoundContainer sovereignBladeStrikeSoundContainer = ScriptableObject.CreateInstance<SoundContainer>();
sovereignBladeStrikeSoundContainer.setting.volumeIntensityEnable = true;
sovereignBladeStrikeSoundContainer.audioClip[0] = sovereignBladeStrikeAudioClip;
sovereignBladeStrikeSound = ScriptableObject.CreateInstance<SoundEvent>();
sovereignBladeStrikeSound.soundContainerArray[0] = sovereignBladeStrikeSoundContainer;
DefaultPool pool = PhotonNetwork.PrefabPool as DefaultPool;
if (pool != null)
{
pool.ResourceCache.Add("Comet", assets.LoadAsset<GameObject>("Comet"));
pool.ResourceCache.Add("Stardust", assets.LoadAsset<GameObject>("Stardust"));
pool.ResourceCache.Add("Sword_Slash", assets.LoadAsset<GameObject>("Sword_Slash"));
}
// TODO
// Voidseer card that summons eldritch worms from fractures?
// Stargazer card that pulls/pushes comets when block/shoot?
}
public static bool Debug = false;
internal static AssetBundle assets;
}
}