forked from liza/Workshoppa
Automatically open Workshop window when near a Fabrication Station
This commit is contained in:
parent
c270050c3c
commit
0bf6e65bfe
@ -46,6 +46,7 @@ internal sealed class MainWindow : Window
|
|||||||
Flags = ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoCollapse;
|
Flags = ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoCollapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public EOpenReason OpenReason { get; set; } = EOpenReason.None;
|
||||||
public bool NearFabricationStation { get; set; }
|
public bool NearFabricationStation { get; set; }
|
||||||
public ButtonState State { get; set; } = ButtonState.None;
|
public ButtonState State { get; set; } = ButtonState.None;
|
||||||
|
|
||||||
@ -200,6 +201,22 @@ internal sealed class MainWindow : Window
|
|||||||
_pluginInterface.SavePluginConfig(_configuration);
|
_pluginInterface.SavePluginConfig(_configuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Toggle(EOpenReason reason)
|
||||||
|
{
|
||||||
|
if (!IsOpen)
|
||||||
|
{
|
||||||
|
IsOpen = true;
|
||||||
|
OpenReason = reason;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
IsOpen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnClose()
|
||||||
|
{
|
||||||
|
OpenReason = EOpenReason.None;
|
||||||
|
}
|
||||||
|
|
||||||
private unsafe void CheckMaterial()
|
private unsafe void CheckMaterial()
|
||||||
{
|
{
|
||||||
ImGui.Text("Items needed for all crafts in queue:");
|
ImGui.Text("Items needed for all crafts in queue:");
|
||||||
@ -283,4 +300,12 @@ internal sealed class MainWindow : Window
|
|||||||
Pause,
|
Pause,
|
||||||
Stop,
|
Stop,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum EOpenReason
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Command,
|
||||||
|
NearFabricationStation,
|
||||||
|
PluginInstaller,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ partial class WorkshopPlugin
|
|||||||
if (npcIds.Contains(GetNpcId(obj)))
|
if (npcIds.Contains(GetNpcId(obj)))
|
||||||
{
|
{
|
||||||
o = obj;
|
o = obj;
|
||||||
return Vector3.Distance(_clientState.LocalPlayer!.Position, obj.Position);
|
return Vector3.Distance(_clientState.LocalPlayer!.Position, obj.Position + new Vector3(0, -2, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ public sealed partial class WorkshopPlugin : IDalamudPlugin
|
|||||||
_windowSystem.AddWindow(_mainWindow);
|
_windowSystem.AddWindow(_mainWindow);
|
||||||
|
|
||||||
_pluginInterface.UiBuilder.Draw += _windowSystem.Draw;
|
_pluginInterface.UiBuilder.Draw += _windowSystem.Draw;
|
||||||
_pluginInterface.UiBuilder.OpenMainUi += _mainWindow.Toggle;
|
_pluginInterface.UiBuilder.OpenMainUi += OpenMainUi;
|
||||||
_framework.Update += FrameworkUpdate;
|
_framework.Update += FrameworkUpdate;
|
||||||
_commandManager.AddHandler("/ws", new CommandInfo(ProcessCommand)
|
_commandManager.AddHandler("/ws", new CommandInfo(ProcessCommand)
|
||||||
{
|
{
|
||||||
@ -86,14 +86,28 @@ public sealed partial class WorkshopPlugin : IDalamudPlugin
|
|||||||
if (!_clientState.IsLoggedIn ||
|
if (!_clientState.IsLoggedIn ||
|
||||||
!WorkshopTerritories.Contains(_clientState.TerritoryType) ||
|
!WorkshopTerritories.Contains(_clientState.TerritoryType) ||
|
||||||
_condition[ConditionFlag.BoundByDuty] ||
|
_condition[ConditionFlag.BoundByDuty] ||
|
||||||
GetDistanceToEventObject(FabricationStationIds, out var fabricationStation) >= 5f)
|
GetDistanceToEventObject(FabricationStationIds, out var fabricationStation) >= 3f)
|
||||||
{
|
{
|
||||||
_mainWindow.NearFabricationStation = false;
|
_mainWindow.NearFabricationStation = false;
|
||||||
|
|
||||||
|
if (_mainWindow.IsOpen &&
|
||||||
|
_mainWindow.OpenReason == MainWindow.EOpenReason.NearFabricationStation &&
|
||||||
|
_configuration.CurrentlyCraftedItem == null &&
|
||||||
|
_configuration.ItemQueue.Count == 0)
|
||||||
|
{
|
||||||
|
_mainWindow.IsOpen = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (DateTime.Now >= _continueAt)
|
else if (DateTime.Now >= _continueAt)
|
||||||
{
|
{
|
||||||
_mainWindow.NearFabricationStation = true;
|
_mainWindow.NearFabricationStation = true;
|
||||||
|
|
||||||
|
if (!_mainWindow.IsOpen)
|
||||||
|
{
|
||||||
|
_mainWindow.IsOpen = true;
|
||||||
|
_mainWindow.OpenReason = MainWindow.EOpenReason.NearFabricationStation;
|
||||||
|
}
|
||||||
|
|
||||||
if (_mainWindow.State is MainWindow.ButtonState.Pause or MainWindow.ButtonState.Stop)
|
if (_mainWindow.State is MainWindow.ButtonState.Pause or MainWindow.ButtonState.Stop)
|
||||||
{
|
{
|
||||||
_mainWindow.State = MainWindow.ButtonState.None;
|
_mainWindow.State = MainWindow.ButtonState.None;
|
||||||
@ -187,13 +201,17 @@ public sealed partial class WorkshopPlugin : IDalamudPlugin
|
|||||||
return _workshopCache.Crafts.Single(x => x.WorkshopItemId == _configuration.CurrentlyCraftedItem!.WorkshopItemId);
|
return _workshopCache.Crafts.Single(x => x.WorkshopItemId == _configuration.CurrentlyCraftedItem!.WorkshopItemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProcessCommand(string command, string arguments) => _mainWindow.Toggle();
|
private void ProcessCommand(string command, string arguments)
|
||||||
|
=> _mainWindow.Toggle(MainWindow.EOpenReason.Command);
|
||||||
|
|
||||||
|
private void OpenMainUi()
|
||||||
|
=> _mainWindow.Toggle(MainWindow.EOpenReason.PluginInstaller);
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_commandManager.RemoveHandler("/ws");
|
_commandManager.RemoveHandler("/ws");
|
||||||
_pluginInterface.UiBuilder.Draw -= _windowSystem.Draw;
|
_pluginInterface.UiBuilder.Draw -= _windowSystem.Draw;
|
||||||
_pluginInterface.UiBuilder.OpenMainUi -= _mainWindow.Toggle;
|
_pluginInterface.UiBuilder.OpenMainUi -= OpenMainUi;
|
||||||
_framework.Update -= FrameworkUpdate;
|
_framework.Update -= FrameworkUpdate;
|
||||||
|
|
||||||
RestoreYesAlready();
|
RestoreYesAlready();
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0-windows</TargetFramework>
|
<TargetFramework>net7.0-windows</TargetFramework>
|
||||||
<Version>2.1</Version>
|
<Version>2.2</Version>
|
||||||
<LangVersion>11.0</LangVersion>
|
<LangVersion>11.0</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||||
|
Loading…
Reference in New Issue
Block a user