void AlignIcons(List <ActiveSpellIcon> icons, IconsPositioning iconsPositioning) { Vector2 rowOrigin = iconsPositioning.origin; Vector2 position = rowOrigin; int column = 0; foreach (ActiveSpellIcon spell in icons) { if (spell.poolIndex < maxIconPool) { Panel icon = iconPool[spell.poolIndex]; icon.Enabled = true; icon.BackgroundTexture = DaggerfallUI.Instance.SpellIconCollection.GetSpellIcon(spell.icon); icon.Position = position; icon.Size = iconsPositioning.iconSize; icon.ToolTipText = spell.displayName; if (++column == iconsPositioning.iconColumns) { rowOrigin += iconsPositioning.rowStep; position = rowOrigin; column = 0; } else { position += iconsPositioning.columnStep; } } } }
void InitIcons() { switch (DaggerfallUnity.Settings.IconsPositioningScheme.ToLower()) { case "classic": // row of big buff icons at the top, wrapping downward, row of debuffs at the bottom, wrapping upward selfIconsPositioning = new IconsPositioning(new Vector2(16, 16), new Vector2(27, 16), new Vector2(24, 0), new Vector2(0, 24), 12); otherIconsPositioning = new IconsPositioning(new Vector2(16, 16), new Vector2(27, 177), new Vector2(24, 0), new Vector2(0, -24), 12); break; case "medium": // same as classic, slightly smaller icons selfIconsPositioning = new IconsPositioning(new Vector2(12, 12), new Vector2(27, 16), new Vector2(16, 0), new Vector2(0, 16), 16); otherIconsPositioning = new IconsPositioning(new Vector2(12, 12), new Vector2(27, 177), new Vector2(16, 0), new Vector2(0, -16), 16); break; case "small": // same as classic, even smaller icons, wrapped to stays on left side of screen selfIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 16), new Vector2(10, 0), new Vector2(0, 10), 6); otherIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 177), new Vector2(10, 0), new Vector2(0, -10), 6); break; case "smalldeckleft": // same as small, but slightly slanted toward the center of the screen selfIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 28), new Vector2(10, -2), new Vector2(0, 10), 6); otherIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 165), new Vector2(10, 2), new Vector2(0, -10), 6); break; case "smalldeckright": // same as smalldeckleft, but on the right side of screen selfIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(296, 28), new Vector2(-10, -2), new Vector2(0, 10), 6); otherIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(296, 165), new Vector2(-10, 2), new Vector2(0, -10), 6); break; case "smallvertleft": // Two aligned columns on the left, buffs going downward, debuffs going upward selfIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 16), new Vector2(0, 10), new Vector2(10, 0), 10); otherIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 177), new Vector2(0, -10), new Vector2(10, 0), 4); break; case "smallvertright": // Two aligned columns on the right, buffs going downward, debuffs going upward selfIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(296, 16), new Vector2(0, 10), new Vector2(-10, 0), 10); otherIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(296, 177), new Vector2(0, -10), new Vector2(-10, 0), 4); break; case "smallhorzbottom": // No wrapping, two rows at the bottom of screen, debuffs above buffs selfIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 177), new Vector2(10, 0), new Vector2(0, 0), 0); otherIconsPositioning = new IconsPositioning(new Vector2(8, 8), new Vector2(27, 167), new Vector2(10, 0), new Vector2(0, 0), 0); break; } // Setup default tooltip if (DaggerfallUnity.Settings.EnableToolTips) { defaultToolTip = new ToolTip(); defaultToolTip.ToolTipDelay = DaggerfallUnity.Settings.ToolTipDelayInSeconds; defaultToolTip.BackgroundColor = DaggerfallUnity.Settings.ToolTipBackgroundColor; defaultToolTip.TextColor = DaggerfallUnity.Settings.ToolTipTextColor; defaultToolTip.Parent = this; } // Setup icon panels for (int i = 0; i < iconPool.Length; i++) { iconPool[i] = new Panel { BackgroundColor = Color.clear, // classic uses a black background AutoSize = AutoSizeModes.None, Enabled = false, ToolTip = defaultToolTip }; Components.Add(iconPool[i]); } }