private static void UpdateHP(ref EnemyHud __instance, Player player, float dt) { if (!Main.customEnemyHud.Value) { return; } Character character = null; foreach (KeyValuePair <Character, EnemyHud.HudData> keyValuePair in __instance.m_huds) { EnemyHud.HudData value = keyValuePair.Value; if (!value.m_character || !__instance.TestShow(value.m_character)) { if (character == null) { character = value.m_character; Object.Destroy(value.m_gui); } } else { if (value.m_character.IsPlayer()) { // Currently no edits to player } else if (value.m_character.IsBoss()) { if (!Main.hideEnemyHPText.Value) { Utils.FindChild(value.m_name.transform.parent, _bossHPPrefix).GetComponent <Text>().text = $"<size={_bossHPFontSize}>{Mathf.CeilToInt(value.m_character.GetHealth())} / {value.m_character.GetMaxHealth():0}</size>"; } } else { value.m_alerted.gameObject.SetActive(false); value.m_aware.gameObject.SetActive(false); bool aware = value.m_character.GetBaseAI().HaveTarget(); bool alerted = value.m_character.GetBaseAI().IsAlerted(); value.m_name.color = (aware || alerted) ? (alerted ? Color.red : Color.yellow) : Color.white; if (!Main.hideEnemyHPText.Value) { Utils.FindChild(value.m_name.transform.parent, _hpPrefix).GetComponent <Text>().text = $"<size={_hpFontSize}>{Mathf.CeilToInt(value.m_character.GetHealth())}/{value.m_character.GetMaxHealth():0}</size>"; } if (Main.enemyLvlStyle.Value == 1) { value.m_level2.gameObject.SetActive(false); value.m_level3.gameObject.SetActive(false); } } } } if (character != null) { __instance.m_huds.Remove(character); } }
// Token: 0x060004E4 RID: 1252 RVA: 0x00028744 File Offset: 0x00026944 private void ShowHud(Character c) { EnemyHud.HudData hudData; if (this.m_huds.TryGetValue(c, out hudData)) { return; } GameObject original; if (c.IsPlayer()) { original = this.m_baseHudPlayer; } else if (c.IsBoss()) { original = this.m_baseHudBoss; } else { original = this.m_baseHud; } hudData = new EnemyHud.HudData(); hudData.m_character = c; hudData.m_ai = c.GetComponent <BaseAI>(); hudData.m_gui = UnityEngine.Object.Instantiate <GameObject>(original, this.m_hudRoot.transform); hudData.m_gui.SetActive(true); hudData.m_healthRoot = hudData.m_gui.transform.Find("Health").gameObject; hudData.m_healthFast = hudData.m_healthRoot.transform.Find("health_fast").GetComponent <GuiBar>(); hudData.m_healthSlow = hudData.m_healthRoot.transform.Find("health_slow").GetComponent <GuiBar>(); hudData.m_level2 = (hudData.m_gui.transform.Find("level_2") as RectTransform); hudData.m_level3 = (hudData.m_gui.transform.Find("level_3") as RectTransform); hudData.m_alerted = (hudData.m_gui.transform.Find("Alerted") as RectTransform); hudData.m_aware = (hudData.m_gui.transform.Find("Aware") as RectTransform); hudData.m_name = hudData.m_gui.transform.Find("Name").GetComponent <Text>(); hudData.m_name.text = Localization.instance.Localize(c.GetHoverName()); this.m_huds.Add(c, hudData); }
// Token: 0x060004E5 RID: 1253 RVA: 0x000288F0 File Offset: 0x00026AF0 private void UpdateHuds(Player player, float dt) { Camera mainCamera = Utils.GetMainCamera(); if (!mainCamera) { return; } Character y = player ? player.GetHoverCreature() : null; if (player) { player.IsCrouching(); } Character character = null; foreach (KeyValuePair <Character, EnemyHud.HudData> keyValuePair in this.m_huds) { EnemyHud.HudData value = keyValuePair.Value; if (!value.m_character || !this.TestShow(value.m_character)) { if (character == null) { character = value.m_character; UnityEngine.Object.Destroy(value.m_gui); } } else { if (value.m_character == y) { value.m_hoverTimer = 0f; } value.m_hoverTimer += dt; float healthPercentage = value.m_character.GetHealthPercentage(); if (value.m_character.IsPlayer() || value.m_character.IsBoss() || value.m_hoverTimer < this.m_hoverShowDuration) { value.m_gui.SetActive(true); int level = value.m_character.GetLevel(); if (value.m_level2) { value.m_level2.gameObject.SetActive(level == 2); } if (value.m_level3) { value.m_level3.gameObject.SetActive(level == 3); } if (!value.m_character.IsBoss() && !value.m_character.IsPlayer()) { bool flag = value.m_character.GetBaseAI().HaveTarget(); bool flag2 = value.m_character.GetBaseAI().IsAlerted(); value.m_alerted.gameObject.SetActive(flag2); value.m_aware.gameObject.SetActive(!flag2 && flag); } } else { value.m_gui.SetActive(false); } value.m_healthSlow.SetValue(healthPercentage); value.m_healthFast.SetValue(healthPercentage); if (!value.m_character.IsBoss() && value.m_gui.activeSelf) { Vector3 position = Vector3.zero; if (value.m_character.IsPlayer()) { position = value.m_character.GetHeadPoint() + Vector3.up * 0.3f; } else { position = value.m_character.GetTopPoint(); } Vector3 vector = mainCamera.WorldToScreenPoint(position); if (vector.x < 0f || vector.x > (float)Screen.width || vector.y < 0f || vector.y > (float)Screen.height || vector.z > 0f) { value.m_gui.transform.position = vector; value.m_gui.SetActive(true); } else { value.m_gui.SetActive(false); } } } } if (character != null) { this.m_huds.Remove(character); } }
private static void PatchName(ref EnemyHud __instance, ref Character c) { if (!Main.customEnemyHud.Value) { return; } EnemyHud.HudData hudData; if (__instance.m_huds.TryGetValue(c, out _)) { return; } GameObject original; if (c.IsPlayer()) { original = __instance.m_baseHudPlayer; } else if (c.IsBoss()) { original = __instance.m_baseHudBoss; } else { original = __instance.m_baseHud; } hudData = new EnemyHud.HudData { m_character = c, m_ai = c.GetComponent <BaseAI>(), m_gui = Object.Instantiate(original, __instance.m_hudRoot.transform) }; hudData.m_gui.SetActive(true); hudData.m_healthRoot = hudData.m_gui.transform.Find("Health").gameObject; hudData.m_healthFast = hudData.m_healthRoot.transform.Find("health_fast").GetComponent <GuiBar>(); hudData.m_healthSlow = hudData.m_healthRoot.transform.Find("health_slow").GetComponent <GuiBar>(); hudData.m_level2 = (hudData.m_gui.transform.Find("level_2") as RectTransform); hudData.m_level3 = (hudData.m_gui.transform.Find("level_3") as RectTransform); hudData.m_alerted = (hudData.m_gui.transform.Find("Alerted") as RectTransform); hudData.m_aware = (hudData.m_gui.transform.Find("Aware") as RectTransform); hudData.m_name = hudData.m_gui.transform.Find("Name").GetComponent <Text>(); hudData.m_name.text = Localization.instance.Localize(c.GetHoverName()); if (c.IsPlayer()) { // Currently no edits to player } else if (c.IsBoss()) { if (!Main.hideEnemyHPText.Value) { // Edits to Boss HP Bar Text hpText = Object.Instantiate(hudData.m_name, hudData.m_name.transform.parent); hpText.name = _bossHPPrefix; hpText.rectTransform.anchoredPosition = new Vector2(hpText.rectTransform.anchoredPosition.x, 0.0f); // orig.y = 21f hpText.text = $"<size={_bossHPFontSize}>{hudData.m_character.GetHealth():0} / {hudData.m_character.GetMaxHealth():0}</size>"; hpText.color = Color.white; Object.Destroy(hpText.GetComponent <Outline>()); } } else { hudData.m_name.fontSize = Main.enemyHudTextSize.Value; if (Main.enemyLvlStyle.Value != 0) { hudData.m_name.text = hudData.m_name.text.Insert(0, $"<size={Main.enemyHudTextSize.Value - 2}><color=white>Lv.{c.m_level} </color></size> "); } if (!Main.hideEnemyHPText.Value) { Text hpText = Object.Instantiate(hudData.m_name, hudData.m_name.transform.parent); hpText.name = _hpPrefix; hpText.rectTransform.anchoredPosition = new Vector2(hpText.rectTransform.anchoredPosition.x, 7.0f); // orig.y = 21f hpText.text = $"<size={_hpFontSize}>{hudData.m_character.GetHealth():0}/{hudData.m_character.GetMaxHealth():0}</size>"; hpText.color = Color.white; Object.Destroy(hpText.GetComponent <Outline>()); } // Resize and position everything RectTransform hpRoot = (hudData.m_healthRoot.transform as RectTransform); Vector2 biggerBar = new Vector2(hpRoot.sizeDelta.x, hpRoot.sizeDelta.y * 3f); hpRoot.sizeDelta = biggerBar; hudData.m_alerted.gameObject.SetActive(false); hudData.m_aware.gameObject.SetActive(false); hudData.m_healthFast.m_bar.sizeDelta = new Vector2(hudData.m_healthFast.m_width, hpRoot.sizeDelta.y); hudData.m_healthSlow.m_bar.sizeDelta = new Vector2(hudData.m_healthSlow.m_width, hpRoot.sizeDelta.y); if (Main.enemyLvlStyle.Value == 1) { hudData.m_level2.gameObject.SetActive(false); hudData.m_level3.gameObject.SetActive(false); } } __instance.m_huds.Add(c, hudData); }