mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-22 12:58:33 +01:00
made style props a lot easier to use
This commit is contained in:
parent
7f81f6469f
commit
f28e234392
8 changed files with 26 additions and 14 deletions
|
@ -81,11 +81,11 @@ namespace Demos {
|
||||||
|
|
||||||
root.AddChild(new VerticalSpace(3));
|
root.AddChild(new VerticalSpace(3));
|
||||||
root.AddChild(new Paragraph(Anchor.AutoLeft, 1, "Note that the default style does not contain any textures or font files and, as such, is quite bland. However, the default style is quite easy to override."));
|
root.AddChild(new Paragraph(Anchor.AutoLeft, 1, "Note that the default style does not contain any textures or font files and, as such, is quite bland. However, the default style is quite easy to override."));
|
||||||
var customButton = root.AddChild(new Button(Anchor.AutoCenter, new Vector2(1, 10), "Change Style") {
|
root.AddChild(new Button(Anchor.AutoCenter, new Vector2(1, 10), "Change Style") {
|
||||||
OnPressed = element => this.UiSystem.Style = this.UiSystem.Style == untexturedStyle ? style : untexturedStyle,
|
OnPressed = element => this.UiSystem.Style = this.UiSystem.Style == untexturedStyle ? style : untexturedStyle,
|
||||||
PositionOffset = new Vector2(0, 1)
|
PositionOffset = new Vector2(0, 1),
|
||||||
|
Texture = this.testPatch
|
||||||
});
|
});
|
||||||
customButton.Texture.Set(this.testPatch);
|
|
||||||
|
|
||||||
root.AddChild(new VerticalSpace(3));
|
root.AddChild(new VerticalSpace(3));
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var tex = this.Texture;
|
var tex = this.Texture;
|
||||||
var color = Color.White * alpha;
|
var color = Color.White * alpha;
|
||||||
if (this.IsMouseOver) {
|
if (this.IsMouseOver) {
|
||||||
if (this.HoveredTexture.Value != null)
|
tex = this.HoveredTexture.OrDefault(tex);
|
||||||
tex = this.HoveredTexture;
|
|
||||||
color = (Color) this.HoveredColor * alpha;
|
color = (Color) this.HoveredColor * alpha;
|
||||||
}
|
}
|
||||||
batch.Draw(tex, this.DisplayArea, color, this.Scale);
|
batch.Draw(tex, this.DisplayArea, color, this.Scale);
|
||||||
|
|
|
@ -51,8 +51,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var tex = this.Texture;
|
var tex = this.Texture;
|
||||||
var color = Color.White * alpha;
|
var color = Color.White * alpha;
|
||||||
if (this.IsMouseOver) {
|
if (this.IsMouseOver) {
|
||||||
if (this.HoveredTexture.Value != null)
|
tex = this.HoveredTexture.OrDefault(tex);
|
||||||
tex = this.HoveredTexture;
|
|
||||||
color = (Color) this.HoveredColor * alpha;
|
color = (Color) this.HoveredColor * alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,8 @@ namespace MLEM.Ui.Elements {
|
||||||
};
|
};
|
||||||
if (pressed != null)
|
if (pressed != null)
|
||||||
paragraph.OnPressed += pressed;
|
paragraph.OnPressed += pressed;
|
||||||
paragraph.OnMouseEnter += e => paragraph.TextColor.Set(Color.LightGray);
|
paragraph.OnMouseEnter += e => paragraph.TextColor = Color.LightGray;
|
||||||
paragraph.OnMouseExit += e => paragraph.TextColor.Set(Color.White);
|
paragraph.OnMouseExit += e => paragraph.TextColor = Color.White;
|
||||||
this.AddElement(paragraph);
|
this.AddElement(paragraph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,9 +66,9 @@ namespace MLEM.Ui.Elements {
|
||||||
if (this.texture == null)
|
if (this.texture == null)
|
||||||
return;
|
return;
|
||||||
var center = new Vector2(this.texture.Width / 2F, this.texture.Height / 2F);
|
var center = new Vector2(this.texture.Width / 2F, this.texture.Height / 2F);
|
||||||
var color = (this.Color.Value != default ? this.Color : Microsoft.Xna.Framework.Color.White) * alpha;
|
var color = this.Color.OrDefault(Microsoft.Xna.Framework.Color.White) * alpha;
|
||||||
if (this.MaintainImageAspect) {
|
if (this.MaintainImageAspect) {
|
||||||
var scale = Math.Min(this.DisplayArea.Width / (float) this.texture.Width, this.DisplayArea.Height / (float) this.texture.Height);
|
var scale = Math.Min(this.DisplayArea.Width / this.texture.Width, this.DisplayArea.Height / this.texture.Height);
|
||||||
var imageOffset = new Vector2(this.DisplayArea.Width / 2F - this.texture.Width * scale / 2, this.DisplayArea.Height / 2F - this.texture.Height * scale / 2);
|
var imageOffset = new Vector2(this.DisplayArea.Width / 2F - this.texture.Width * scale / 2, this.DisplayArea.Height / 2F - this.texture.Height * scale / 2);
|
||||||
batch.Draw(this.texture, this.DisplayArea.Location + center * scale + imageOffset, color, this.ImageRotation, center, scale * this.ImageScale, this.ImageEffects, 0);
|
batch.Draw(this.texture, this.DisplayArea.Location + center * scale + imageOffset, color, this.ImageRotation, center, scale * this.ImageScale, this.ImageEffects, 0);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -81,7 +81,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var pos = this.DisplayArea.Location;
|
var pos = this.DisplayArea.Location;
|
||||||
var sc = this.TextScale * this.Scale;
|
var sc = this.TextScale * this.Scale;
|
||||||
|
|
||||||
var color = (this.TextColor.Value != default ? this.TextColor : Color.White) * alpha;
|
var color = this.TextColor.OrDefault(Color.White) * alpha;
|
||||||
// if we don't have any formatting codes, then we don't need to do complex drawing
|
// if we don't have any formatting codes, then we don't need to do complex drawing
|
||||||
if (this.codeLocations.Count <= 0) {
|
if (this.codeLocations.Count <= 0) {
|
||||||
this.RegularFont.Value.DrawString(batch, this.splitText, pos, color, 0, Vector2.Zero, sc, SpriteEffects.None, 0);
|
this.RegularFont.Value.DrawString(batch, this.splitText, pos, color, 0, Vector2.Zero, sc, SpriteEffects.None, 0);
|
||||||
|
|
|
@ -137,8 +137,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var tex = this.Texture;
|
var tex = this.Texture;
|
||||||
var color = Color.White * alpha;
|
var color = Color.White * alpha;
|
||||||
if (this.IsMouseOver) {
|
if (this.IsMouseOver) {
|
||||||
if (this.HoveredTexture.Value != null)
|
tex = this.HoveredTexture.OrDefault(tex);
|
||||||
tex = this.HoveredTexture;
|
|
||||||
color = (Color) this.HoveredColor * alpha;
|
color = (Color) this.HoveredColor * alpha;
|
||||||
}
|
}
|
||||||
batch.Draw(tex, this.DisplayArea, color, this.Scale);
|
batch.Draw(tex, this.DisplayArea, color, this.Scale);
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MLEM.Ui.Style {
|
namespace MLEM.Ui.Style {
|
||||||
public struct StyleProp<T> {
|
public struct StyleProp<T> {
|
||||||
|
|
||||||
public T Value { get; private set; }
|
public T Value { get; private set; }
|
||||||
private bool isCustom;
|
private bool isCustom;
|
||||||
|
|
||||||
|
public StyleProp(T value) {
|
||||||
|
this.isCustom = true;
|
||||||
|
this.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
public void SetFromStyle(T value) {
|
public void SetFromStyle(T value) {
|
||||||
if (!this.isCustom) {
|
if (!this.isCustom) {
|
||||||
this.Value = value;
|
this.Value = value;
|
||||||
|
@ -15,9 +22,17 @@ namespace MLEM.Ui.Style {
|
||||||
this.Value = value;
|
this.Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T OrDefault(T def) {
|
||||||
|
return EqualityComparer<T>.Default.Equals(this.Value, default) ? def : this.Value;
|
||||||
|
}
|
||||||
|
|
||||||
public static implicit operator T(StyleProp<T> prop) {
|
public static implicit operator T(StyleProp<T> prop) {
|
||||||
return prop.Value;
|
return prop.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static implicit operator StyleProp<T>(T prop) {
|
||||||
|
return new StyleProp<T>(prop);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue