public override void OnEnabled() { base.OnEnabled(); singleton = this; ev = new EventHandlers(); Check035(); Exiled.Events.Handlers.Server.RoundStarted += ev.OnRoundStart; Exiled.Events.Handlers.Player.Escaping += ev.OnEscaping; Exiled.Events.Handlers.Player.Died += ev.OnPlayerDeath; Exiled.Events.Handlers.Server.RoundEnded += ev.OnRoundEnd; }
private void Update() { LocalUser localUser = LocalUserManager.GetFirstLocalUser(); if (CharacterBody == null && localUser != null) { CharacterBody = localUser.cachedBody; } if (StatsDisplay == null && CharacterBody != null) { StatsDisplay = CharacterBody.gameObject.AddComponent <Api.Notification>(); StatsDisplay.transform.SetParent(CharacterBody.transform); StatsDisplay.SetPosition(new Vector3((float)(Screen.width * 0.25), (float)(Screen.height * 0.25), 0)); StatsDisplay.GetTitle = () => "STATS"; StatsDisplay.GetDescription = GetCharacterStats; StatsDisplay.GenericNotification.fadeTime = 1f; StatsDisplay.GenericNotification.duration = 1800f; } if (CharacterBody == null && StatsDisplay != null) { Destroy(StatsDisplay.RootObject); Destroy(StatsDisplay.GenericNotification); Destroy(StatsDisplay); } if (localUser != null && localUser.inputPlayer != null && localUser.inputPlayer.GetButton("info")) { if (StatsDisplay != null && StatsDisplay.RootObject != null) { StatsDisplay.RootObject.SetActive(true); } } else { if (StatsDisplay != null && StatsDisplay.RootObject != null) { StatsDisplay.RootObject.SetActive(false); } } }
public static void Init(StatsDisplay statsDisplay, ConfigFile config) { //Soft dependency on mod loader _config = config; _statsDisplay = statsDisplay; Type modDetailsType = null; Type frogtownSharedType = null; foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) { if (!a.FullName.StartsWith("FrogtownShared,")) { continue; } var allTypes = a.GetTypes(); foreach (var t in allTypes) { switch (t.Name) { case "FrogtownModDetails": modDetailsType = t; break; case "FrogtownShared": frogtownSharedType = t; break; } } break; } try { if (modDetailsType == null || frogtownSharedType == null) { return; } //Will be set back to true by the manager when it initializes statsDisplay.Enabled = false; var obj = Activator.CreateInstance(modDetailsType, "com.kookehs.statsdisplay"); obj.SetFieldValue("description", "Displays character stats on Info Screen.", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); obj.SetFieldValue("OnGUI", new UnityAction(() => { OnSettingsGui(); }), System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); obj.SetFieldValue("afterToggle", new UnityAction(() => { statsDisplay.Enabled = obj.GetPropertyValue <bool>("enabled", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); }), System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); var register = frogtownSharedType.GetMethod("RegisterMod", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public); register?.Invoke(null, new[] { obj }); InitSettings(); } catch (Exception e) { Debug.Log("Failed to initialize mod manager features"); Debug.Log(e.Message); Debug.Log(e.StackTrace); } }