mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-02 01:57:07 +02:00
227 lines
6.6 KiB
C#
227 lines
6.6 KiB
C#
using Robust.Client.Input;
|
|
using Robust.Client.Utility;
|
|
using Robust.Shared.Maths;
|
|
using System;
|
|
|
|
namespace Robust.Client.UserInterface
|
|
{
|
|
public partial class Control
|
|
{
|
|
protected internal virtual void MouseEntered()
|
|
{
|
|
}
|
|
|
|
protected internal virtual void MouseExited()
|
|
{
|
|
}
|
|
|
|
protected internal virtual void MouseWheel(GUIMouseWheelEventArgs args)
|
|
{
|
|
}
|
|
|
|
public event Action<GUIMouseButtonEventArgs> OnMouseDown;
|
|
|
|
protected internal virtual void MouseDown(GUIMouseButtonEventArgs args)
|
|
{
|
|
OnMouseDown?.Invoke(args);
|
|
}
|
|
|
|
protected internal virtual void MouseUp(GUIMouseButtonEventArgs args)
|
|
{
|
|
}
|
|
|
|
protected internal virtual void MouseMove(GUIMouseMoveEventArgs args)
|
|
{
|
|
}
|
|
|
|
public event Action<GUIKeyEventArgs> OnKeyDown;
|
|
|
|
protected internal virtual void KeyDown(GUIKeyEventArgs args)
|
|
{
|
|
OnKeyDown?.Invoke(args);
|
|
}
|
|
|
|
protected internal virtual void KeyUp(GUIKeyEventArgs args)
|
|
{
|
|
}
|
|
|
|
protected internal virtual void KeyHeld(GUIKeyEventArgs args)
|
|
{
|
|
}
|
|
|
|
protected internal virtual void TextEntered(GUITextEventArgs args)
|
|
{
|
|
}
|
|
}
|
|
|
|
public class GUIKeyEventArgs : KeyEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The control spawning this event.
|
|
/// </summary>
|
|
public Control SourceControl { get; }
|
|
|
|
public GUIKeyEventArgs(Control sourceControl,
|
|
Keyboard.Key key,
|
|
bool repeat,
|
|
bool alt,
|
|
bool control,
|
|
bool shift,
|
|
bool system)
|
|
: base(key, repeat, alt, control, shift, system)
|
|
{
|
|
SourceControl = sourceControl;
|
|
}
|
|
}
|
|
|
|
public class GUITextEventArgs : TextEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The control spawning this event.
|
|
/// </summary>
|
|
public Control SourceControl { get; }
|
|
|
|
public GUITextEventArgs(Control sourceControl,
|
|
uint codePoint)
|
|
: base(codePoint)
|
|
{
|
|
SourceControl = sourceControl;
|
|
}
|
|
}
|
|
|
|
public abstract class GUIMouseEventArgs : ModifierInputEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The control spawning this event.
|
|
/// </summary>
|
|
public Control SourceControl { get; internal set; }
|
|
|
|
/// <summary>
|
|
/// <c>InputEventMouse.button_mask</c> in Godot.
|
|
/// Which mouse buttons are currently held maybe?
|
|
/// </summary>
|
|
public Mouse.ButtonMask ButtonMask { get; }
|
|
|
|
/// <summary>
|
|
/// Position of the mouse, relative to the screen.
|
|
/// </summary>
|
|
public Vector2 GlobalPosition { get; }
|
|
|
|
public Vector2 GlobalPixelPosition { get; }
|
|
|
|
/// <summary>
|
|
/// Position of the mouse, relative to the current control.
|
|
/// </summary>
|
|
public Vector2 RelativePosition { get; internal set; }
|
|
|
|
public Vector2 RelativePixelPosition { get; internal set; }
|
|
|
|
protected GUIMouseEventArgs(Control sourceControl,
|
|
Mouse.ButtonMask buttonMask,
|
|
Vector2 globalPosition,
|
|
Vector2 globalPixelPosition,
|
|
Vector2 relativePosition,
|
|
Vector2 relativePixelPosition,
|
|
bool alt,
|
|
bool control,
|
|
bool shift,
|
|
bool system)
|
|
: base(alt, control, shift, system)
|
|
{
|
|
SourceControl = sourceControl;
|
|
ButtonMask = buttonMask;
|
|
GlobalPosition = globalPosition;
|
|
RelativePosition = relativePosition;
|
|
RelativePixelPosition = relativePixelPosition;
|
|
GlobalPixelPosition = globalPixelPosition;
|
|
}
|
|
}
|
|
|
|
public class GUIMouseButtonEventArgs : GUIMouseEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The mouse button that has been pressed or released.
|
|
/// </summary>
|
|
public Mouse.Button Button { get; }
|
|
|
|
/// <summary>
|
|
/// True if this action was a double click.
|
|
/// Can't be true if this was a release event.
|
|
/// </summary>
|
|
public bool DoubleClick { get; }
|
|
|
|
public GUIMouseButtonEventArgs(Mouse.Button button,
|
|
bool doubleClick,
|
|
Control sourceControl,
|
|
Mouse.ButtonMask buttonMask,
|
|
Vector2 globalPosition,
|
|
Vector2 globalPixelPosition,
|
|
Vector2 relativePosition,
|
|
Vector2 relativePixelPosition,
|
|
bool alt,
|
|
bool control,
|
|
bool shift,
|
|
bool system)
|
|
: base(sourceControl, buttonMask, globalPosition, globalPixelPosition, relativePosition, relativePixelPosition, alt, control, shift, system)
|
|
{
|
|
Button = button;
|
|
DoubleClick = doubleClick;
|
|
}
|
|
}
|
|
|
|
public class GUIMouseMoveEventArgs : GUIMouseEventArgs
|
|
{
|
|
/// <summary>
|
|
/// The new position relative to the previous position.
|
|
/// </summary>
|
|
public Vector2 Relative { get; }
|
|
|
|
// TODO: Godot's docs aren't exactly clear on what this is.
|
|
// Speed how?
|
|
/// <summary>
|
|
/// The speed of the movement.
|
|
/// </summary>
|
|
public Vector2 Speed { get; }
|
|
|
|
// ALL the parameters!
|
|
public GUIMouseMoveEventArgs(Vector2 relative,
|
|
Vector2 speed,
|
|
Control sourceControl,
|
|
Mouse.ButtonMask buttonMask,
|
|
Vector2 globalPosition,
|
|
Vector2 globalPixelPosition,
|
|
Vector2 relativePosition,
|
|
Vector2 relativePixelPosition,
|
|
bool alt,
|
|
bool control,
|
|
bool shift,
|
|
bool system)
|
|
: base(sourceControl, buttonMask, globalPosition, globalPixelPosition, relativePosition, relativePixelPosition, alt, control, shift, system)
|
|
{
|
|
Relative = relative;
|
|
Speed = speed;
|
|
}
|
|
}
|
|
|
|
public class GUIMouseWheelEventArgs : GUIMouseEventArgs
|
|
{
|
|
public Vector2 Delta { get; }
|
|
|
|
public GUIMouseWheelEventArgs(Vector2 delta,
|
|
Control sourceControl,
|
|
Mouse.ButtonMask buttonMask,
|
|
Vector2 globalPosition,
|
|
Vector2 globalPixelPosition,
|
|
Vector2 relativePosition,
|
|
Vector2 relativePixelPosition,
|
|
bool alt,
|
|
bool control,
|
|
bool shift,
|
|
bool system)
|
|
: base(sourceControl, buttonMask, globalPosition, globalPixelPosition, relativePosition, relativePixelPosition, alt, control, shift, system)
|
|
{
|
|
Delta = delta;
|
|
}
|
|
}
|
|
}
|