mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-26 06:28:35 +01:00
made link clusters be selected properly
This commit is contained in:
parent
5de1674351
commit
b270fe3977
2 changed files with 11 additions and 16 deletions
|
@ -250,11 +250,11 @@ namespace MLEM.Ui.Elements {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stores whether this element is currently being moused over.
|
/// Stores whether this element is currently being moused over.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsMouseOver { get; private set; }
|
public bool IsMouseOver { get; protected set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stores whether this element is its <see cref="Root"/>'s <see cref="RootElement.SelectedElement"/>.
|
/// Stores whether this element is its <see cref="Root"/>'s <see cref="RootElement.SelectedElement"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsSelected { get; private set; }
|
public bool IsSelected { get; protected set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event that is called after this element is drawn, but before its children are drawn
|
/// Event that is called after this element is drawn, but before its children are drawn
|
||||||
|
@ -768,7 +768,7 @@ namespace MLEM.Ui.Elements {
|
||||||
/// <param name="matrix">The transformation matrix that is used for drawing</param>
|
/// <param name="matrix">The transformation matrix that is used for drawing</param>
|
||||||
public virtual void Draw(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) {
|
public virtual void Draw(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) {
|
||||||
this.System.OnElementDrawn?.Invoke(this, time, batch, alpha);
|
this.System.OnElementDrawn?.Invoke(this, time, batch, alpha);
|
||||||
if (this.Controls.SelectedElement == this)
|
if (this.IsSelected)
|
||||||
this.System.OnSelectedElementDrawn?.Invoke(this, time, batch, alpha);
|
this.System.OnSelectedElementDrawn?.Invoke(this, time, batch, alpha);
|
||||||
|
|
||||||
foreach (var child in this.GetRelevantChildren()) {
|
foreach (var child in this.GetRelevantChildren()) {
|
||||||
|
|
|
@ -232,6 +232,14 @@ namespace MLEM.Ui.Elements {
|
||||||
public Link(Anchor anchor, Token token, Vector2 size, Link[] linkCluster) : base(anchor, size) {
|
public Link(Anchor anchor, Token token, Vector2 size, Link[] linkCluster) : base(anchor, size) {
|
||||||
this.Token = token;
|
this.Token = token;
|
||||||
this.LinkCluster = linkCluster;
|
this.LinkCluster = linkCluster;
|
||||||
|
this.OnSelected += e => {
|
||||||
|
foreach (var link in this.LinkCluster)
|
||||||
|
link.IsSelected = true;
|
||||||
|
};
|
||||||
|
this.OnDeselected += e => {
|
||||||
|
foreach (var link in this.LinkCluster)
|
||||||
|
link.IsSelected = false;
|
||||||
|
};
|
||||||
this.OnPressed += e => {
|
this.OnPressed += e => {
|
||||||
foreach (var code in token.AppliedCodes.OfType<LinkCode>()) {
|
foreach (var code in token.AppliedCodes.OfType<LinkCode>()) {
|
||||||
try {
|
try {
|
||||||
|
@ -243,19 +251,6 @@ namespace MLEM.Ui.Elements {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public override void Draw(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) {
|
|
||||||
if (this.LinkCluster.Length > 1 && this.Controls.SelectedElement == this) {
|
|
||||||
// also draw the selection box around all other links in the cluster
|
|
||||||
foreach (var link in this.LinkCluster) {
|
|
||||||
if (link == this)
|
|
||||||
continue;
|
|
||||||
this.System.OnSelectedElementDrawn?.Invoke(link, time, batch, alpha);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
base.Draw(time, batch, alpha, blendState, samplerState, matrix);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue