mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-25 22:18:34 +01:00
part 1
This commit is contained in:
parent
64749c31ce
commit
ee5111372b
15 changed files with 83 additions and 67 deletions
|
@ -17,21 +17,21 @@
|
|||
/importer:FontDescriptionImporter
|
||||
/processor:FontDescriptionProcessor
|
||||
/processorParam:PremultiplyAlpha=True
|
||||
/processorParam:TextureFormat=Compressed
|
||||
/processorParam:TextureFormat=Color
|
||||
/build:Fonts/TestFont.spritefont
|
||||
|
||||
#begin Fonts/TestFontBold.spritefont
|
||||
/importer:FontDescriptionImporter
|
||||
/processor:FontDescriptionProcessor
|
||||
/processorParam:PremultiplyAlpha=True
|
||||
/processorParam:TextureFormat=Compressed
|
||||
/processorParam:TextureFormat=Color
|
||||
/build:Fonts/TestFontBold.spritefont
|
||||
|
||||
#begin Fonts/TestFontItalic.spritefont
|
||||
/importer:FontDescriptionImporter
|
||||
/processor:FontDescriptionProcessor
|
||||
/processorParam:PremultiplyAlpha=True
|
||||
/processorParam:TextureFormat=Compressed
|
||||
/processorParam:TextureFormat=Color
|
||||
/build:Fonts/TestFontItalic.spritefont
|
||||
|
||||
#begin Textures/Anim.png
|
||||
|
|
|
@ -85,16 +85,16 @@ namespace MLEM.Ui.Elements {
|
|||
public TabNextElementCallback GetTabNextElement;
|
||||
public GamepadNextElementCallback GetGamepadNextElement;
|
||||
|
||||
private UiSystem system;
|
||||
public UiSystem System {
|
||||
get => this.system;
|
||||
private UiSystem uiSystem;
|
||||
public UiSystem UiSystem {
|
||||
get => this.uiSystem;
|
||||
internal set {
|
||||
this.system = value;
|
||||
if (this.system != null)
|
||||
this.InitStyle(this.system.Style);
|
||||
this.uiSystem = value;
|
||||
if (this.uiSystem != null)
|
||||
this.InitStyle(this.uiSystem.Style);
|
||||
}
|
||||
}
|
||||
protected UiControls Controls => this.System.Controls;
|
||||
protected UiControls Controls => this.UiSystem.Controls;
|
||||
protected InputHandler Input => this.Controls.Input;
|
||||
public RootElement Root { get; internal set; }
|
||||
public float Scale => this.Root.ActualScale;
|
||||
|
@ -166,7 +166,7 @@ namespace MLEM.Ui.Elements {
|
|||
element.Parent = this;
|
||||
element.AndChildren(e => {
|
||||
e.Root = this.Root;
|
||||
e.System = this.System;
|
||||
e.UiSystem = this.UiSystem;
|
||||
if (this.Root != null)
|
||||
this.Root.OnElementAdded(e);
|
||||
});
|
||||
|
@ -180,7 +180,7 @@ namespace MLEM.Ui.Elements {
|
|||
element.Parent = null;
|
||||
element.AndChildren(e => {
|
||||
e.Root = null;
|
||||
e.System = null;
|
||||
e.UiSystem = null;
|
||||
if (this.Root != null)
|
||||
this.Root.OnElementRemoved(e);
|
||||
});
|
||||
|
@ -230,7 +230,7 @@ namespace MLEM.Ui.Elements {
|
|||
if (this.IsHidden)
|
||||
return;
|
||||
|
||||
var parentArea = this.Parent != null ? this.Parent.ChildPaddedArea : (RectangleF) this.system.Viewport;
|
||||
var parentArea = this.Parent != null ? this.Parent.ChildPaddedArea : (RectangleF) this.uiSystem.Viewport;
|
||||
var parentCenterX = parentArea.X + parentArea.Width / 2;
|
||||
var parentCenterY = parentArea.Y + parentArea.Height / 2;
|
||||
|
||||
|
@ -314,7 +314,7 @@ namespace MLEM.Ui.Elements {
|
|||
}
|
||||
|
||||
this.area = new RectangleF(pos, actualSize);
|
||||
this.System.OnElementAreaUpdated?.Invoke(this);
|
||||
this.UiSystem.OnElementAreaUpdated?.Invoke(this);
|
||||
|
||||
foreach (var child in this.Children)
|
||||
child.ForceUpdateArea();
|
||||
|
@ -451,15 +451,15 @@ namespace MLEM.Ui.Elements {
|
|||
}
|
||||
|
||||
public virtual void Update(GameTime time) {
|
||||
this.System.OnElementUpdated?.Invoke(this, time);
|
||||
this.UiSystem.OnElementUpdated?.Invoke(this, time);
|
||||
|
||||
foreach (var child in this.GetRelevantChildren())
|
||||
if (child.System != null)
|
||||
if (child.UiSystem != null)
|
||||
child.Update(time);
|
||||
}
|
||||
|
||||
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.UiSystem.OnElementDrawn?.Invoke(this, time, batch, alpha);
|
||||
|
||||
foreach (var child in this.GetRelevantChildren()) {
|
||||
if (!child.IsHidden)
|
||||
|
|
|
@ -85,7 +85,7 @@ namespace MLEM.Ui.Elements {
|
|||
if (this.renderTarget == null || targetArea.Width != this.renderTarget.Width || targetArea.Height != this.renderTarget.Height) {
|
||||
if (this.renderTarget != null)
|
||||
this.renderTarget.Dispose();
|
||||
this.renderTarget = targetArea.IsEmpty ? null : new RenderTarget2D(this.System.GraphicsDevice, targetArea.Width, targetArea.Height);
|
||||
this.renderTarget = targetArea.IsEmpty ? null : new RenderTarget2D(this.UiSystem.GraphicsDevice, targetArea.Width, targetArea.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -132,8 +132,8 @@ namespace MLEM.Ui.Elements {
|
|||
}
|
||||
|
||||
public override void Draw(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) {
|
||||
if (this.Texture.Value != null)
|
||||
batch.Draw(this.Texture, this.DisplayArea, Color.White * alpha, this.Scale);
|
||||
if (this.Texture != null)
|
||||
batch.Draw(this.Texture.Value, this.DisplayArea, Color.White * alpha, this.Scale);
|
||||
// if we handle overflow, draw using the render target in DrawUnbound
|
||||
if (!this.scrollOverflow || this.renderTarget == null) {
|
||||
base.Draw(time, batch, alpha, blendState, samplerState, matrix);
|
||||
|
|
|
@ -36,9 +36,8 @@ namespace MLEM.Ui.Elements {
|
|||
batch.Draw(this.Texture, this.DisplayArea, (Color) this.Color * alpha, this.Scale);
|
||||
|
||||
var percentage = this.CurrentValue / this.MaxValue;
|
||||
var tex = this.ProgressTexture.Value;
|
||||
var padHor = tex != null ? tex.Padding.Width * this.Scale : 0;
|
||||
var padVer = tex != null ? tex.Padding.Height * this.Scale : 0;
|
||||
var padHor = this.ProgressTexture != null ? this.ProgressTexture.Value.Padding.Width * this.Scale : 0;
|
||||
var padVer = this.ProgressTexture != null ? this.ProgressTexture.Value.Padding.Height * this.Scale : 0;
|
||||
var width = percentage * (this.DisplayArea.Width - padHor) + padHor;
|
||||
var height = percentage * (this.DisplayArea.Height - padVer) + padVer;
|
||||
RectangleF progressArea;
|
||||
|
@ -61,7 +60,7 @@ namespace MLEM.Ui.Elements {
|
|||
break;
|
||||
}
|
||||
var offsetArea = progressArea.Shrink(this.ProgressPadding.Value * this.Scale);
|
||||
if (this.ProgressTexture.Value != null) {
|
||||
if (this.ProgressTexture != null) {
|
||||
batch.Draw(this.ProgressTexture, offsetArea, (Color) this.ProgressColor * alpha, this.Scale);
|
||||
} else {
|
||||
batch.Draw(batch.GetBlankTexture(), offsetArea, (Color) this.ProgressColor * alpha);
|
||||
|
|
|
@ -73,7 +73,7 @@ namespace MLEM.Ui.Elements {
|
|||
if (this.isMouseHeld)
|
||||
this.ScrollToPos(this.Input.MousePosition.Transform(this.Root.InvTransform));
|
||||
if (!this.Horizontal && moused != null && (moused == this.Parent || moused.GetParentTree().Contains(this.Parent))) {
|
||||
var scroll = this.Input.LastScrollWheel - this.Input.ScrollWheel;
|
||||
double scroll = this.Input.LastScrollWheel - this.Input.ScrollWheel;
|
||||
if (scroll != 0)
|
||||
this.CurrentValue += this.StepPerScroll * Math.Sign(scroll);
|
||||
}
|
||||
|
|
|
@ -69,6 +69,7 @@ namespace MLEM.Ui.Elements {
|
|||
}
|
||||
};
|
||||
} else {
|
||||
#if !WEB
|
||||
this.OnPressed += async e => {
|
||||
if (!KeyboardInput.IsVisible) {
|
||||
var title = this.MobileTitle ?? this.PlaceholderText;
|
||||
|
@ -77,6 +78,7 @@ namespace MLEM.Ui.Elements {
|
|||
this.SetText(result.Replace('\n', ' '), true);
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
this.OnDeselected += e => this.CaretPos = 0;
|
||||
this.OnSelected += e => this.CaretPos = this.text.Length;
|
||||
|
@ -84,7 +86,7 @@ namespace MLEM.Ui.Elements {
|
|||
|
||||
private void HandleTextChange(bool textChanged = true) {
|
||||
// not initialized yet
|
||||
if (this.Font.Value == null)
|
||||
if (this.Font == null)
|
||||
return;
|
||||
var length = this.Font.Value.MeasureString(this.text).X * this.TextScale;
|
||||
var maxWidth = this.DisplayArea.Width / this.Scale - this.TextOffsetX * 2;
|
||||
|
|
|
@ -23,12 +23,12 @@ namespace MLEM.Ui.Elements {
|
|||
|
||||
if (elementToHover != null) {
|
||||
elementToHover.OnMouseEnter += element => {
|
||||
element.System.Add(element.GetType().Name + "Tooltip", this);
|
||||
element.UiSystem.Add(element.GetType().Name + "Tooltip", this);
|
||||
this.SnapPositionToMouse();
|
||||
};
|
||||
elementToHover.OnMouseExit += element => {
|
||||
if (this.System != null)
|
||||
this.System.Remove(this.Root.Name);
|
||||
if (this.UiSystem != null)
|
||||
this.UiSystem.Remove(this.Root.Name);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ namespace MLEM.Ui.Elements {
|
|||
}
|
||||
|
||||
public void SnapPositionToMouse() {
|
||||
var viewport = this.System.Viewport.Size;
|
||||
var viewport = this.UiSystem.Viewport.Size;
|
||||
var offset = this.Input.MousePosition.ToVector2() / this.Scale + this.MouseOffset;
|
||||
if (offset.X < 0)
|
||||
offset.X = 0;
|
||||
|
|
|
@ -12,9 +12,8 @@ namespace MLEM.Ui.Style {
|
|||
}
|
||||
|
||||
public void SetFromStyle(T value) {
|
||||
if (!this.isCustom) {
|
||||
if (!this.isCustom)
|
||||
this.Value = value;
|
||||
}
|
||||
}
|
||||
|
||||
public void Set(T value) {
|
||||
|
@ -23,7 +22,7 @@ namespace MLEM.Ui.Style {
|
|||
}
|
||||
|
||||
public T OrDefault(T def) {
|
||||
return EqualityComparer<T>.Default.Equals(this.Value, default) ? def : this.Value;
|
||||
return EqualityComparer<T>.Default.Equals(this.Value, default(T)) ? def : this.Value;
|
||||
}
|
||||
|
||||
public static implicit operator T(StyleProp<T> prop) {
|
||||
|
@ -34,5 +33,13 @@ namespace MLEM.Ui.Style {
|
|||
return new StyleProp<T>(prop);
|
||||
}
|
||||
|
||||
public static bool operator ==(StyleProp<T> left, StyleProp<T> right) {
|
||||
return EqualityComparer<T>.Default.Equals(left.Value, right.Value);
|
||||
}
|
||||
|
||||
public static bool operator !=(StyleProp<T> left, StyleProp<T> right) {
|
||||
return !(left == right);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -13,7 +13,7 @@ namespace MLEM.Ui {
|
|||
|
||||
public readonly InputHandler Input;
|
||||
protected readonly bool IsInputOurs;
|
||||
protected readonly UiSystem System;
|
||||
protected readonly UiSystem UiSystem;
|
||||
|
||||
public RootElement ActiveRoot { get; private set; }
|
||||
public Element MousedElement { get; private set; }
|
||||
|
@ -34,8 +34,8 @@ namespace MLEM.Ui {
|
|||
|
||||
public bool IsAutoNavMode { get; private set; }
|
||||
|
||||
public UiControls(UiSystem system, InputHandler inputHandler = null) {
|
||||
this.System = system;
|
||||
public UiControls(UiSystem uiSystem, InputHandler inputHandler = null) {
|
||||
this.UiSystem = uiSystem;
|
||||
this.Input = inputHandler ?? new InputHandler();
|
||||
this.IsInputOurs = inputHandler == null;
|
||||
|
||||
|
@ -46,18 +46,18 @@ namespace MLEM.Ui {
|
|||
public virtual void Update() {
|
||||
if (this.IsInputOurs)
|
||||
this.Input.Update();
|
||||
this.ActiveRoot = this.System.GetRootElements().FirstOrDefault(root => root.CanSelectContent && !root.Element.IsHidden);
|
||||
this.ActiveRoot = this.UiSystem.GetRootElements().FirstOrDefault(root => root.CanSelectContent && !root.Element.IsHidden);
|
||||
|
||||
// MOUSE INPUT
|
||||
if (this.HandleMouse) {
|
||||
var mousedNow = this.GetElementUnderPos(this.Input.MousePosition.ToVector2());
|
||||
if (mousedNow != this.MousedElement) {
|
||||
if (this.MousedElement != null)
|
||||
this.System.OnElementMouseExit?.Invoke(this.MousedElement);
|
||||
this.UiSystem.OnElementMouseExit?.Invoke(this.MousedElement);
|
||||
if (mousedNow != null)
|
||||
this.System.OnElementMouseEnter?.Invoke(mousedNow);
|
||||
this.UiSystem.OnElementMouseEnter?.Invoke(mousedNow);
|
||||
this.MousedElement = mousedNow;
|
||||
this.System.OnMousedElementChanged?.Invoke(mousedNow);
|
||||
this.UiSystem.OnMousedElementChanged?.Invoke(mousedNow);
|
||||
}
|
||||
|
||||
if (this.Input.IsMouseButtonPressed(MouseButton.Left)) {
|
||||
|
@ -65,11 +65,11 @@ namespace MLEM.Ui {
|
|||
var selectedNow = mousedNow != null && mousedNow.CanBeSelected ? mousedNow : null;
|
||||
this.ActiveRoot?.SelectElement(selectedNow);
|
||||
if (mousedNow != null && mousedNow.CanBePressed)
|
||||
this.System.OnElementPressed?.Invoke(mousedNow);
|
||||
this.UiSystem.OnElementPressed?.Invoke(mousedNow);
|
||||
} else if (this.Input.IsMouseButtonPressed(MouseButton.Right)) {
|
||||
this.IsAutoNavMode = false;
|
||||
if (mousedNow != null && mousedNow.CanBePressed)
|
||||
this.System.OnElementSecondaryPressed?.Invoke(mousedNow);
|
||||
this.UiSystem.OnElementSecondaryPressed?.Invoke(mousedNow);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,10 +79,10 @@ namespace MLEM.Ui {
|
|||
if (this.SelectedElement?.Root != null && this.SelectedElement.CanBePressed) {
|
||||
if (this.Input.IsModifierKeyDown(ModifierKey.Shift)) {
|
||||
// secondary action on element using space or enter
|
||||
this.System.OnElementSecondaryPressed?.Invoke(this.SelectedElement);
|
||||
this.UiSystem.OnElementSecondaryPressed?.Invoke(this.SelectedElement);
|
||||
} else {
|
||||
// first action on element using space or enter
|
||||
this.System.OnElementPressed?.Invoke(this.SelectedElement);
|
||||
this.UiSystem.OnElementPressed?.Invoke(this.SelectedElement);
|
||||
}
|
||||
}
|
||||
} else if (this.Input.IsKeyPressed(Keys.Tab)) {
|
||||
|
@ -103,13 +103,13 @@ namespace MLEM.Ui {
|
|||
var tapped = this.GetElementUnderPos(tap.Position);
|
||||
this.ActiveRoot?.SelectElement(tapped);
|
||||
if (tapped != null && tapped.CanBePressed)
|
||||
this.System.OnElementPressed?.Invoke(tapped);
|
||||
this.UiSystem.OnElementPressed?.Invoke(tapped);
|
||||
} else if (this.Input.GetGesture(GestureType.Hold, out var hold)) {
|
||||
this.IsAutoNavMode = false;
|
||||
var held = this.GetElementUnderPos(hold.Position);
|
||||
this.ActiveRoot?.SelectElement(held);
|
||||
if (held != null && held.CanBePressed)
|
||||
this.System.OnElementSecondaryPressed?.Invoke(held);
|
||||
this.UiSystem.OnElementSecondaryPressed?.Invoke(held);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,10 +117,10 @@ namespace MLEM.Ui {
|
|||
if (this.HandleGamepad) {
|
||||
if (this.GamepadButtons.Any(b => this.IsGamepadPressed(b))) {
|
||||
if (this.SelectedElement?.Root != null && this.SelectedElement.CanBePressed)
|
||||
this.System.OnElementPressed?.Invoke(this.SelectedElement);
|
||||
this.UiSystem.OnElementPressed?.Invoke(this.SelectedElement);
|
||||
} else if (this.SecondaryGamepadButtons.Any(b => this.IsGamepadPressed(b))) {
|
||||
if (this.SelectedElement?.Root != null && this.SelectedElement.CanBePressed)
|
||||
this.System.OnElementSecondaryPressed?.Invoke(this.SelectedElement);
|
||||
this.UiSystem.OnElementSecondaryPressed?.Invoke(this.SelectedElement);
|
||||
} else if (this.DownButtons.Any(this.IsGamepadPressed)) {
|
||||
this.HandleGamepadNextElement(Direction2.Down);
|
||||
} else if (this.LeftButtons.Any(this.IsGamepadPressed)) {
|
||||
|
@ -134,7 +134,7 @@ namespace MLEM.Ui {
|
|||
}
|
||||
|
||||
public virtual Element GetElementUnderPos(Vector2 position, bool transform = true) {
|
||||
foreach (var root in this.System.GetRootElements()) {
|
||||
foreach (var root in this.UiSystem.GetRootElements()) {
|
||||
var pos = transform ? Vector2.Transform(position, root.InvTransform) : position;
|
||||
var moused = root.Element.GetElementUnderPos(pos);
|
||||
if (moused != null)
|
||||
|
@ -146,7 +146,7 @@ namespace MLEM.Ui {
|
|||
protected virtual Element GetTabNextElement(bool backward) {
|
||||
if (this.ActiveRoot == null)
|
||||
return null;
|
||||
var children = this.ActiveRoot.Element.GetChildren(c => !c.IsHidden, true, true).Append(this.ActiveRoot.Element);
|
||||
var children = this.ActiveRoot.Element.GetChildren(c => !c.IsHidden, true, true).Concat(new[] {this.ActiveRoot.Element});
|
||||
if (this.SelectedElement?.Root != this.ActiveRoot) {
|
||||
return backward ? children.LastOrDefault(c => c.CanBeSelected) : children.FirstOrDefault(c => c.CanBeSelected);
|
||||
} else {
|
||||
|
@ -174,7 +174,7 @@ namespace MLEM.Ui {
|
|||
protected virtual Element GetGamepadNextElement(RectangleF searchArea) {
|
||||
if (this.ActiveRoot == null)
|
||||
return null;
|
||||
var children = this.ActiveRoot.Element.GetChildren(c => !c.IsHidden, true, true).Append(this.ActiveRoot.Element);
|
||||
var children = this.ActiveRoot.Element.GetChildren(c => !c.IsHidden, true, true).Concat(new[] {this.ActiveRoot.Element});
|
||||
if (this.SelectedElement?.Root != this.ActiveRoot) {
|
||||
return children.FirstOrDefault(c => c.CanBeSelected);
|
||||
} else {
|
||||
|
@ -202,7 +202,7 @@ namespace MLEM.Ui {
|
|||
RectangleF searchArea = default;
|
||||
if (this.SelectedElement?.Root != null) {
|
||||
searchArea = this.SelectedElement.Area;
|
||||
var (_, _, width, height) = this.System.Viewport;
|
||||
var (_, _, width, height) = this.UiSystem.Viewport;
|
||||
switch (dir) {
|
||||
case Direction2.Down:
|
||||
searchArea.Height += height;
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace MLEM.Ui {
|
|||
set {
|
||||
this.style = value;
|
||||
foreach (var root in this.rootElements) {
|
||||
root.Element.AndChildren(e => e.System = this);
|
||||
root.Element.AndChildren(e => e.UiSystem = this);
|
||||
root.Element.SetAreaDirty();
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ namespace MLEM.Ui {
|
|||
this.OnMousedElementChanged = e => this.ApplyToAll(t => t.OnMousedElementChanged?.Invoke(t, e));
|
||||
this.OnSelectedElementChanged = e => this.ApplyToAll(t => t.OnSelectedElementChanged?.Invoke(t, e));
|
||||
this.OnSelectedElementDrawn = (element, time, batch, alpha) => {
|
||||
if (this.Controls.IsAutoNavMode && element.SelectionIndicator.Value != null) {
|
||||
if (this.Controls.IsAutoNavMode && element.SelectionIndicator != null) {
|
||||
batch.Draw(element.SelectionIndicator, element.DisplayArea, Color.White * alpha, element.Scale / 2);
|
||||
}
|
||||
};
|
||||
|
@ -134,7 +134,7 @@ namespace MLEM.Ui {
|
|||
this.rootElements.Add(root);
|
||||
root.Element.AndChildren(e => {
|
||||
e.Root = root;
|
||||
e.System = this;
|
||||
e.UiSystem = this;
|
||||
root.OnElementAdded(e);
|
||||
e.SetAreaDirty();
|
||||
});
|
||||
|
@ -151,7 +151,7 @@ namespace MLEM.Ui {
|
|||
root.SelectElement(null);
|
||||
root.Element.AndChildren(e => {
|
||||
e.Root = null;
|
||||
e.System = null;
|
||||
e.UiSystem = null;
|
||||
root.OnElementRemoved(e);
|
||||
e.SetAreaDirty();
|
||||
});
|
||||
|
@ -192,7 +192,7 @@ namespace MLEM.Ui {
|
|||
|
||||
public readonly string Name;
|
||||
public readonly Element Element;
|
||||
public readonly UiSystem System;
|
||||
public readonly UiSystem UiSystem;
|
||||
private float scale = 1;
|
||||
public float Scale {
|
||||
get => this.scale;
|
||||
|
@ -208,10 +208,10 @@ namespace MLEM.Ui {
|
|||
get => this.priority;
|
||||
set {
|
||||
this.priority = value;
|
||||
this.System.SortRoots();
|
||||
this.UiSystem.SortRoots();
|
||||
}
|
||||
}
|
||||
public float ActualScale => this.System.GlobalScale * this.Scale;
|
||||
public float ActualScale => this.UiSystem.GlobalScale * this.Scale;
|
||||
|
||||
public Matrix Transform = Matrix.Identity;
|
||||
public Matrix InvTransform => Matrix.Invert(this.Transform);
|
||||
|
@ -222,10 +222,10 @@ namespace MLEM.Ui {
|
|||
public Element.GenericCallback OnElementAdded;
|
||||
public Element.GenericCallback OnElementRemoved;
|
||||
|
||||
public RootElement(string name, Element element, UiSystem system) {
|
||||
public RootElement(string name, Element element, UiSystem uiSystem) {
|
||||
this.Name = name;
|
||||
this.Element = element;
|
||||
this.System = system;
|
||||
this.UiSystem = uiSystem;
|
||||
|
||||
this.OnElementAdded += e => {
|
||||
if (e.CanBeSelected)
|
||||
|
@ -242,11 +242,11 @@ namespace MLEM.Ui {
|
|||
return;
|
||||
|
||||
if (this.SelectedElement != null)
|
||||
this.System.OnElementDeselected?.Invoke(this.SelectedElement);
|
||||
this.UiSystem.OnElementDeselected?.Invoke(this.SelectedElement);
|
||||
if (element != null)
|
||||
this.System.OnElementSelected?.Invoke(element);
|
||||
this.UiSystem.OnElementSelected?.Invoke(element);
|
||||
this.SelectedElement = element;
|
||||
this.System.OnSelectedElementChanged?.Invoke(element);
|
||||
this.UiSystem.OnSelectedElementChanged?.Invoke(element);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,7 +24,9 @@ namespace MLEM.Extensions {
|
|||
private static class TextInputAdder {
|
||||
|
||||
public static void Add(GameWindow window, TextInputCallback callback) {
|
||||
#if !WEB
|
||||
window.TextInput += (sender, args) => callback(sender, args.Key, args.Character);
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,8 +27,13 @@ namespace MLEM.Formatting {
|
|||
// color codes
|
||||
var colors = typeof(Color).GetProperties();
|
||||
foreach (var color in colors) {
|
||||
#if !WEB
|
||||
if (color.GetGetMethod().IsStatic)
|
||||
FormattingCodes[color.Name.ToLowerInvariant()] = new FormattingCode((Color) color.GetValue(null));
|
||||
#else
|
||||
if (color.GetMethod.IsStatic)
|
||||
FormattingCodes[color.Name.ToLower()] = new FormattingCode((Color) color.GetValue(null));
|
||||
#endif
|
||||
}
|
||||
|
||||
// animations
|
||||
|
@ -139,7 +144,7 @@ namespace MLEM.Formatting {
|
|||
}
|
||||
|
||||
private static FormattingCode FromMatch(Capture match) {
|
||||
var rawCode = match.Value.Substring(1, match.Value.Length - 2).ToLowerInvariant();
|
||||
var rawCode = match.Value.Substring(1, match.Value.Length - 2).ToLower();
|
||||
FormattingCodes.TryGetValue(rawCode, out var val);
|
||||
return val;
|
||||
}
|
||||
|
|
|
@ -270,6 +270,7 @@ namespace MLEM.Input {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
sample = default(GestureSample);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace MLEM.Misc {
|
|||
[DataContract]
|
||||
public struct RectangleF : IEquatable<RectangleF> {
|
||||
|
||||
public static RectangleF Empty => default;
|
||||
public static RectangleF Empty => default(RectangleF);
|
||||
|
||||
[DataMember]
|
||||
public float X;
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace MLEM.Pathfinding {
|
|||
}
|
||||
|
||||
protected override float GetManhattanDistance(Vector3 first, Vector3 second) {
|
||||
return Math.Abs(second.X - first.X) + Math.Abs(second.Y - first.Y) + Math.Abs(second.Z - first.Z);
|
||||
return (float)(Math.Abs(second.X - first.X) + Math.Abs(second.Y - first.Y) + Math.Abs(second.Z - first.Z));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue