public static void ClearEvents() { if (Instance == null) { Instance = new COTFEvents(); } try { var i = Instance.GetType(); var fields = i.GetFields(); foreach (var item in fields) { var field = item.GetValue(Instance); if (field is UnityEvent) { var fieldUE = (field as UnityEvent); fieldUE.RemoveAllListeners(); //fieldUE.AddListener(new UnityAction(() => Debug.Log("Event triggered: " + item.Name))); } else if (field is HitOtherEvent) { var fieldUE = (field as HitOtherEvent); fieldUE.RemoveAllListeners(); //fieldUE.AddListener(new UnityAction<HitOtherParams>((x) => Debug.Log("Event triggered: " + item.Name))); } else if (field is GotHitEvent) { var fieldUE = (field as GotHitEvent); fieldUE.RemoveAllListeners(); //fieldUE.AddListener(new UnityAction<GotHitParams>((x) => Debug.Log("Event triggered: " + item.Name))); } else if (field is GotHitByEnemyEvent) { var fieldUE = (field as GotHitByEnemyEvent); fieldUE.RemoveAllListeners(); //fieldUE.AddListener(new UnityAction<GotHitByEnemyParams>((x) => Debug.Log("Event triggered: " + item.Name))); } else if (field is HeadshotEvent) { var fieldUE = (field as HeadshotEvent); fieldUE.RemoveAllListeners(); //fieldUE.AddListener(new UnityAction<HeadshotParams>((x) => Debug.Log("Event triggered: " + item.Name))); } } } catch (Exception e) { ModAPI.Log.Write("Exception while resetting events " + e.Message); } }
public static void Initialize() { try { ModSettings.Version = ModAPI.Mods.LoadedMods["ChampionsOfForest"].Version; if (SteamDSConfig.isDedicated) { ModAPI.Log.Write("isDedicated true"); ModSettings.IsDedicated = true; } if (ModSettings.IsDedicated) { DedicatedServer.COTFDS.ReadDediServerConfig(); new GameObject("NetworkManagerObj").AddComponent <Network.NetworkManager>(); GameObject go = new GameObject("Playerobj"); go.AddComponent <ModReferences>(); ItemDataBase.Initialize(); EnemyManager.Initialize(); Network.NetworkManager.instance.onGetMessage += Network.CommandReader.OnCommand; ExpEvents.Initialize(); return; } ModSettings.DifficultyChosen = false; if (SceneManager.GetActiveScene().name == "TitleScene") { new GameObject("Resource Manager").AddComponent <ResourceLoader>(); ResourceLoader.InMainMenu = true; MainMenuVisual.Create(); } else { ResourceLoader.InMainMenu = false; NetworkPlayerStats.Reset(); COTFEvents.ClearEvents(); new GameObject("NetworkManagerObj").AddComponent <Network.NetworkManager>(); GameObject go = new GameObject("__COTFPlayerobj__"); var moddedPlayer = go.AddComponent <ModdedPlayer>(); moddedPlayer.SetStats(); go.AddComponent <Inventory>(); go.AddComponent <ModReferences>(); go.AddComponent <SpellCaster>(); go.AddComponent <ClientItemPicker>(); go.AddComponent <MeteorSpawner>(); go.AddComponent <BlackFlame>(); go.AddComponent <AsyncHit>(); go.AddComponent <GlobalSFX>(); go.AddComponent <TheFartCreator>(); go.AddComponent <RCoroutines>(); go.AddComponent <ActiveSpellManager>(); new GameObject("MainMenuObj").AddComponent <MainMenu>(); // go.AddComponent<Crafting>(); Network.CommandInitializer.Init(); CustomCrafting.Init(); BuffDB.FillBuffList(); ItemDataBase.Initialize(); SpellDataBase.Initialize(); EnemyManager.Initialize(); Network.NetworkManager.instance.onGetMessage += Network.CommandReader.OnCommand; Buildings.InitBuildings(); PerkDatabase.FillPerkList(); ExpEvents.Initialize(); Portal.InitializePortals(); CoopCustomWeapons.Init(); BallLightning.InitPrefab(); ResourceInitializer.SetupMeshesFromOtherAssets(); Cataclysm.AssignPrefabs(); MarkEnemy.AssignTextures(); } } catch (Exception ex) { ModAPI.Log.Write(ex.ToString()); } }