forked from liza/Questionable
39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using System.Numerics;
|
|
using Dalamud.Plugin.Services;
|
|
using FFXIVClientStructs.FFXIV.Client.UI;
|
|
using Questionable.Model;
|
|
|
|
namespace Questionable.Controller;
|
|
|
|
internal sealed class NavigationShortcutController
|
|
{
|
|
private readonly IGameGui _gameGui;
|
|
private readonly MovementController _movementController;
|
|
private readonly GameFunctions _gameFunctions;
|
|
|
|
public NavigationShortcutController(IGameGui gameGui, MovementController movementController,
|
|
GameFunctions gameFunctions)
|
|
{
|
|
_gameGui = gameGui;
|
|
_movementController = movementController;
|
|
_gameFunctions = gameFunctions;
|
|
}
|
|
|
|
public unsafe void HandleNavigationShortcut()
|
|
{
|
|
var inputData = UIInputData.Instance();
|
|
if (inputData == null)
|
|
return;
|
|
|
|
if (inputData->IsGameWindowFocused &&
|
|
inputData->UIFilteredMouseButtonReleasedFlags.HasFlag(MouseButtonFlags.LBUTTON) &&
|
|
inputData->GetKeyState(SeVirtualKey.MENU).HasFlag(KeyStateFlags.Down) &&
|
|
_gameGui.ScreenToWorld(new Vector2(inputData->CursorXPosition, inputData->CursorYPosition),
|
|
out Vector3 worldPos))
|
|
{
|
|
_movementController.NavigateTo(EMovementType.Shortcut, null, worldPos,
|
|
_gameFunctions.IsFlyingUnlockedInCurrentZone(), true);
|
|
}
|
|
}
|
|
}
|