private static void CustomBuff(BuffDisplay self, RectTransform trans, List <BuffIcon> buffIcons) { Vector2 zero = Vector2.zero; if (self.buffIconPrefab) { for (int i = 0; i < CustomBuffs.buffs.Count; i++) { var type = self.source.GetComponentInParent(CustomBuffs.buffs[i].type); if (type == null) { buffIcons.RemoveAll(p => p.buffIndex == BuffIndex.Count + 1 + i); } else { BuffIcon buff = Newbuff(i, trans, buffIcons, self.buffIconPrefab, out bool createdbuff); zero.x += (buffIcons.Count - (createdbuff ? 0 : 1)) * self.iconWidth; buff.rectTransform.anchoredPosition = zero; Effectsbuff(buff, CustomBuffs.buffs[i], type); if (createdbuff) { buffIcons.Add(buff); } } } } }
private static void checkBuffs(BuffDisplay self, bufficons bufficons) { foreach (var bufficon in bufficons.buffIcons) { if (self.source.HasBuff(bufficon.buffIndex)) { editBuffs(bufficons, bufficon); } } }
// Start is called before the first frame update private void Start() { TpPosition = new Vector3(0f, 0f, 0f); PlayerControllerScript = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>(); mySource = GameObject.FindGameObjectWithTag("Player").GetComponent <AudioSource>(); FloatingPositionDown = transform.position.y; FloatingPositionUp = transform.position.y + 0.2f; Debug.Log(gameObject.transform.position.y + " == with"); Debug.Log(transform.position.y + " == without"); goUp = true; score = GameObject.FindObjectOfType <Score>(); buffDisplay = GameObject.FindObjectOfType <BuffDisplay>(); }
public void ShowBuff(BuffInfo info, BuffDisplay display) { if (_displayedBuffs.TryGetValue(info.AffectedStat, out var displayed)) { if (info.TurnCount <= 0) { _displayedBuffs.Remove(info.AffectedStat); Destroy(displayed.gameObject); } else { displayed.SetData(display.statusIcon, info.TurnCount); } } else { var buff = Instantiate(displayPrefab, content); buff.SetData(display.statusIcon, info.TurnCount); _displayedBuffs.Add(info.AffectedStat, buff); } RefreshDisplay(); }
private static void Buff(BuffDisplay self, RectTransform trans, ref List <BuffIcon> buffIcons) { if (self.buffIconPrefab) { var type = self.source.GetComponentInParent <counting>(); if (type != null) { BuffIcon buff = null; for (int i = 0; i < buffIcons.Count; i++) { if (buffIcons[i].buffIndex == BuffIndex.Count + 412) { buff = buffIcons[i]; break; } } Vector2 zero = Vector2.zero; if (buff == null) { buff = Instantiate(self.buffIconPrefab, trans)?.GetComponent <BuffIcon>(); buff.buffIndex = BuffIndex.Count + 412; zero.x += buffIcons.Count * self.iconWidth; buff.buffCount = 1; } else { zero.x += (buffIcons.Count - 1) * self.iconWidth; } buff.rectTransform.anchoredPosition = zero; if (EntityStates.Bandit.Timer.Timer.numbers == false) { buff.stackCount.text = string.Empty; } else { buff.stackCount.text = type.timeLeft.ToString("0.0"); } if (type.timeLeft < EntityStates.Bandit.Timer.Timer.fadeout) { buff.stackCount.alpha = (float)Math.Sqrt((double)type.timeLeft / EntityStates.Bandit.Timer.Timer.fadeout); } else { buff.stackCount.alpha = 1f; } if (buff.stackCount.alpha < 1f) { Color color = buff.iconImage.color; color.a = buff.stackCount.alpha; buff.iconImage.color = color; } buff.iconImage.sprite = sprite; buffIcons.Add(buff); } } }
private static void BuffDisplay_AllocateIcons(On.RoR2.UI.BuffDisplay.orig_AllocateIcons orig, BuffDisplay self) { orig(self); if (self != null) { if (self.source != null) { if (icons == null) { icons = typeof(BuffDisplay).GetField("buffIcons", BindingFlags.NonPublic | BindingFlags.Instance); } if (form == null) { form = typeof(BuffDisplay).GetField("rectTranform", BindingFlags.NonPublic | BindingFlags.Instance); } List <BuffIcon> buffIcons = (List <BuffIcon>)icons?.GetValue(self); if (buffIcons != null) { RectTransform trans = (RectTransform)form?.GetValue(self); if (trans != null) { Buff(self, trans, ref buffIcons); } else { Debug.LogError("Can't get tranform"); } } else { Debug.LogError("Can't get bufficons"); } } } }
private void BuffDisplay_UpdateLayout(On.RoR2.UI.BuffDisplay.orig_UpdateLayout orig, BuffDisplay self) { orig(self); //checks if it has a body, should fix ice elites if (self.source) { //using a component to keep track of the lists var bufficons = self.GetComponent <bufficons>(); if (bufficons == null) { List <BuffIcon> listbufficons = (List <BuffIcon>)icons.GetValue(self); bufficons = self.gameObject.AddComponent <bufficons>(); bufficons.buffIcons = listbufficons; bufficons.timedbuffs = (IList)buffs.GetValue(self.source); } checkBuffs(self, bufficons); } }
private void BuffDisplay_UpdateLayout(On.RoR2.UI.BuffDisplay.orig_UpdateLayout orig, BuffDisplay self) { orig(self); if (self.source) { var bufficons = self.GetComponent <bufficons>(); if (bufficons == null) { List <BuffIcon> listbufficons = (List <BuffIcon>)icons.GetValue(self); bufficons = self.gameObject.AddComponent <bufficons>(); bufficons.buffIcons = listbufficons; bufficons.timedbuffs = (IList)buffs.GetValue(self.source); } checkBuffs(self, bufficons); } }