Files
glitchy-engine-beef/GlitchyEngine/src/Events/MouseEvent.bf
T
2020-11-08 18:20:50 +01:00

116 lines
2.5 KiB
Beef

using System;
namespace GlitchyEngine.Events
{
public class MouseMovedEvent : Event, IEvent
{
private int32 _mouseX, _mouseY;
public override EventType EventType => .MouseMoved;
public override StringView Name => "MouseMoved";
public override EventCategory Category => .Input | .Mouse;
public static EventType StaticType => .MouseMoved;
public int32 PositionX => _mouseX;
public int32 PositionY => _mouseY;
public this(int32 x, int32 y)
{
_mouseX = x;
_mouseY = y;
}
public override void ToString(String strBuffer)
{
strBuffer.AppendF("MouseMovedEvent: Position: ({}, {})", _mouseX, _mouseY);
}
}
public class MouseScrolledEvent : Event, IEvent
{
private int32 _xOffset, _yOffset;
public override EventType EventType => .MouseScrolled;
public override StringView Name => "MouseScrolled";
public override EventCategory Category => .Input | .Mouse;
public static EventType StaticType => .MouseScrolled;
public int32 XOffset => _xOffset;
public int32 YOffset => _yOffset;
public this(int32 xOffset, int32 yOffset)
{
_xOffset = xOffset;
_yOffset = yOffset;
}
public override void ToString(String strBuffer)
{
strBuffer.AppendF("MouseScrolledEvent: {}, {}", _xOffset, _yOffset);
}
}
public enum MouseButton
{
None = 0,
LeftButton,
RightButton,
MiddleButton,
XButton1,
XButton2,
}
public abstract class MouseButtonEvent : Event
{
protected MouseButton _mouseButton;
public override EventCategory Category => .Input | .Mouse;
public MouseButton MouseButton => _mouseButton;
protected this(MouseButton mouseButton)
{
_mouseButton = mouseButton;
}
}
public class MouseButtonPressedEvent : MouseButtonEvent, IEvent
{
public override EventType EventType => .MouseButtonPressed;
public override StringView Name => "MouseButtonPressed";
public static EventType StaticType => .MouseButtonPressed;
public this(MouseButton mouseButton) : base(mouseButton) { }
public override void ToString(String strBuffer)
{
strBuffer.AppendF("MouseButtonPressedEvent: {}", _mouseButton);
}
}
public class MouseButtonReleasedEvent : MouseButtonEvent, IEvent
{
public override EventType EventType => .MouseButtonReleased;
public override StringView Name => "MouseButtonReleased";
public static EventType StaticType => .MouseButtonReleased;
public this(MouseButton mouseButton) : base(mouseButton) { }
public override void ToString(String strBuffer)
{
strBuffer.AppendF("MouseButtonReleasedEvent: {}", _mouseButton);
}
}
}