Made the popup system a lot more generic

This commit is contained in:
Sebastian Bularca
2026-04-06 20:38:58 +02:00
parent fa7659d905
commit cfe202da44
21 changed files with 840 additions and 682 deletions

View File

@@ -103,10 +103,10 @@ namespace Nox.Game.UI {
private void BuildCharacterPopup(PopupContentBuilder builder, CharacterDefinition member) {
// Header
builder
.AddHeader(member.Name)
.AddText($"{member.Race} {member.Class}", "#CCCCCC")
.AddText($"Role: {member.Role}")
.AddSeparator();
.AddText(member.Name, PopupElementType.Header)
.AddText($"{member.Race} {member.Class}", "#CCCCCC", PopupElementType.Text)
.AddText($"Role: {member.Role}", PopupElementType.Text)
.AddSeparator(PopupElementType.Separator);
// Stats
if(member.Stats?.stats != null) {
@@ -115,12 +115,12 @@ namespace Nox.Game.UI {
var health = member.Stats.GetValue(StatType.Health);
var mana = member.Stats.GetValue(StatType.Mana);
builder
.AddStat("Level", level)
.AddStat("XP", xp)
.AddSeparator()
.AddStat("Health", health)
.AddStat("Mana", mana)
.AddSeparator();
.AddNameValue("Level", level, PopupElementType.LabelValueText)
.AddNameValue("XP", xp, PopupElementType.LabelValueText)
.AddSeparator(PopupElementType.Separator)
.AddNameValue("Health", health, PopupElementType.LabelValueText)
.AddNameValue("Mana", mana, PopupElementType.LabelValueText)
.AddSeparator(PopupElementType.Separator);
}
// Attributes
@@ -129,26 +129,26 @@ namespace Nox.Game.UI {
if(attr.attribute == AttributeType.None) {
continue;
}
builder.AddStat(attr.attribute.ToString(), attr.value);
builder.AddNameValue(attr.attribute.ToString(), attr.value, PopupElementType.LabelValueText);
}
}
builder.AddSeparator();
builder.AddSeparator(PopupElementType.Separator);
// Perks
if(member.Perks?.perks != null && member.Perks.perks.Count > 0) {
builder.AddText("Perks", "#FFD700");
if(member.Perks?.perks is { Count: > 0 }) {
builder.AddText("Perks", "#FFD700", PopupElementType.Text);
foreach(var perk in member.Perks.perks) {
builder.AddText($" {perk.Name}");
builder.AddText($" {perk.Name}", PopupElementType.Text);
}
builder.AddSeparator();
builder.AddSeparator(PopupElementType.Separator);
}
// Modifiers
if(member.Modifiers?.modifiers is { Count: > 0 }) {
builder.AddText("Modifiers", "#87CEEB");
builder.AddText("Modifiers", "#87CEEB", PopupElementType.Text);
foreach(var mod in member.Modifiers.modifiers) {
var target = mod.Target != null ? mod.Target.ToString() : "";
builder.AddText($" {mod.Name} ({mod.Operation} {mod.Value} {target})");
builder.AddText($" {mod.Name} ({mod.Operation} {mod.Value} {target})", PopupElementType.Text);
}
}
}

View File

@@ -21,6 +21,22 @@ MonoBehaviour:
followMouseOffset: {x: 15, y: -15}
touchHoldDuration: 0.6
gamepadFocusTrigger: 1
elementPrefabs:
- type:
id: header
prefab: {fileID: 7034836061828108288, guid: dfc1bc0bd5b4905409615c3e770a5b77, type: 3}
- type:
id: image
prefab: {fileID: 5887814251614319338, guid: 5e715f4b614d02b4fa0b4d3fcfe3c053, type: 3}
- type:
id: label_value_text
prefab: {fileID: 6246834368258800846, guid: 5882db210c62d8647858933649f64c29, type: 3}
- type:
id: separator
prefab: {fileID: 6770634903822758885, guid: 7ccdfa1a2079db044be4b1684303ec7f, type: 3}
- type:
id: text
prefab: {fileID: 3157287847714375358, guid: bfa97c92d1878cc448ddc7dc456f4b17, type: 3}
categoryPriorities:
- category:
id: Character

View File

@@ -68,11 +68,6 @@ MonoBehaviour:
content: {fileID: 176628901263125209}
canvasGroup: {fileID: 1835601435911948781}
background: {fileID: 8899521584296352500}
headerPrefab: {fileID: 6612787789151041457, guid: dfc1bc0bd5b4905409615c3e770a5b77, type: 3}
textPrefab: {fileID: 2506259255305457008, guid: bfa97c92d1878cc448ddc7dc456f4b17, type: 3}
statPrefab: {fileID: 1843470073663794312, guid: 5882db210c62d8647858933649f64c29, type: 3}
imagePrefab: {fileID: 7093821785826926595, guid: 5e715f4b614d02b4fa0b4d3fcfe3c053, type: 3}
separatorPrefab: {fileID: 4190588985333916705, guid: 7ccdfa1a2079db044be4b1684303ec7f, type: 3}
--- !u!223 &3081303906751693297
Canvas:
m_ObjectHideFlags: 0
@@ -118,7 +113,7 @@ MonoBehaviour:
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
m_PresetInfoIsWorld: 1
--- !u!114 &7236468329886607693
MonoBehaviour:
m_ObjectHideFlags: 0