Compare commits

..

2 Commits

Author SHA1 Message Date
8a3ed42bb7 Make Merge a method of Style. 2025-06-30 18:04:29 +02:00
52bbf5a9e1 Update TODO 2025-06-30 18:01:16 +02:00
2 changed files with 20 additions and 14 deletions

View File

@@ -99,7 +99,7 @@
- ~~Style sheet~~ - ~~Style sheet~~
- ~~Add style settings for UI panels (for buttons, labels, etc.).~~ - ~~Add style settings for UI panels (for buttons, labels, etc.).~~
- ~~Parse StyleSheet from TOML file.~~ - ~~Parse StyleSheet from TOML file.~~
- Style variables
- Animated styles - Animated styles
- (stretch goal) Style variables
- Find a way to reference external assets in the style (fonts, textures). - Find a way to reference external assets in the style (fonts, textures).
- Create a default style for widgets. - Create a default style for widgets.

View File

@@ -20,6 +20,24 @@ public class Style
public Color? BorderColor { get; set; } public Color? BorderColor { get; set; }
public float CornerRadius { get; set; } public float CornerRadius { get; set; }
public Color? TextColor { get; set; } public Color? TextColor { get; set; }
/// <summary>
/// Merges this <see cref="Style"/> with a different one.<br />
/// Properties that are not set for this <see cref="Style"/> will be inherited from <paramref name="overrideStyle"/>.
/// </summary>
/// <param name="overrideStyle"></param>
/// <returns>A merged <see cref="Style"/>.</returns>
public Style Merge(Style overrideStyle)
{
return new Style
{
BackgroundColor = overrideStyle.BackgroundColor != default ? overrideStyle.BackgroundColor : BackgroundColor,
TextColor = overrideStyle.TextColor != default ? overrideStyle.TextColor : TextColor,
Padding = overrideStyle.Padding != default ? overrideStyle.Padding : Padding,
BorderSize = overrideStyle.BorderSize != default ? overrideStyle.BorderSize : BorderSize,
BorderColor = overrideStyle.BorderColor != default ? overrideStyle.BorderColor : BorderColor,
};
}
} }
public class StyleSheetLoader : ResourceLoader<StyleSheet> public class StyleSheetLoader : ResourceLoader<StyleSheet>
@@ -88,25 +106,13 @@ public class StyleSheetLoader : ResourceLoader<StyleSheet>
var subKey = string.Join('.', parts.Take(i)); var subKey = string.Join('.', parts.Take(i));
if (allStyles.TryGetValue(subKey, out var parentStyle)) if (allStyles.TryGetValue(subKey, out var parentStyle))
{ {
merged = MergeStyles(merged, parentStyle); merged = merged.Merge(parentStyle);
} }
} }
return merged; return merged;
} }
private Style MergeStyles(Style baseStyle, Style overrideStyle)
{
return new Style
{
BackgroundColor = overrideStyle.BackgroundColor != default ? overrideStyle.BackgroundColor : baseStyle.BackgroundColor,
TextColor = overrideStyle.TextColor != default ? overrideStyle.TextColor : baseStyle.TextColor,
Padding = overrideStyle.Padding != default ? overrideStyle.Padding : baseStyle.Padding,
BorderSize = overrideStyle.BorderSize != default ? overrideStyle.BorderSize : baseStyle.BorderSize,
BorderColor = overrideStyle.BorderColor != default ? overrideStyle.BorderColor : baseStyle.BorderColor,
};
}
private readonly TomlDataReader _reader = new(); private readonly TomlDataReader _reader = new();
} }