forked from liza/Deliveroo
Add an option to pause delivery when reaching a certain FC rank
This commit is contained in:
parent
fc31d8041c
commit
e80a841f31
@ -14,6 +14,7 @@ internal sealed class Configuration : IPluginConfiguration
|
||||
public int ReservedSealCount { get; set; }
|
||||
public bool ReserveDifferentSealCountAtMaxRank { get; set; }
|
||||
public int ReservedSealCountAtMaxRank { get; set; }
|
||||
public int PauseAtRank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A config-only setting, not exposed in the UI.
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<Version>2.12</Version>
|
||||
<Version>2.13</Version>
|
||||
<LangVersion>11.0</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||
|
@ -6,6 +6,8 @@ using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
using Dalamud.Game.ClientState.Objects.Types;
|
||||
using Dalamud.Game.Command;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Interface.Windowing;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Plugin.Services;
|
||||
@ -87,6 +89,7 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin
|
||||
_pluginInterface.UiBuilder.OpenConfigUi += _configWindow.Toggle;
|
||||
_clientState.Login += Login;
|
||||
_clientState.Logout += Logout;
|
||||
_chatGui.ChatMessage += ChatMessage;
|
||||
_commandManager.AddHandler("/deliveroo", new CommandInfo(ProcessCommand)
|
||||
{
|
||||
HelpMessage = "Open the configuration"
|
||||
@ -102,6 +105,30 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesNoPostSetup);
|
||||
}
|
||||
|
||||
private void ChatMessage(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled)
|
||||
{
|
||||
if (_configuration.PauseAtRank <= 0)
|
||||
return;
|
||||
|
||||
if (type != _gameStrings.RankUpFcType)
|
||||
return;
|
||||
|
||||
var match = _gameStrings.RankUpFc.Match(message.ToString());
|
||||
if (!match.Success)
|
||||
return;
|
||||
|
||||
foreach (var group in match.Groups.Values)
|
||||
{
|
||||
if (int.TryParse(group.Value, out int rank) && rank == _configuration.PauseAtRank)
|
||||
{
|
||||
_turnInWindow.State = false;
|
||||
_pluginLog.Information($"Pausing GC delivery, FC reached rank {rank}");
|
||||
_chatGui.Print($"Pausing Deliveroo, your FC reached rank {rank}.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal CharacterConfiguration? CharacterConfiguration { get; set; }
|
||||
|
||||
|
||||
@ -305,6 +332,7 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectString", SelectStringPostSetup);
|
||||
|
||||
_commandManager.RemoveHandler("/deliveroo");
|
||||
_chatGui.ChatMessage -= ChatMessage;
|
||||
_clientState.Logout -= Logout;
|
||||
_clientState.Login -= Login;
|
||||
_pluginInterface.UiBuilder.OpenConfigUi -= _configWindow.Toggle;
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Plugin.Services;
|
||||
using LLib;
|
||||
using Lumina.Excel;
|
||||
@ -13,13 +14,20 @@ internal sealed class GameStrings
|
||||
public GameStrings(IDataManager dataManager, IPluginLog pluginLog)
|
||||
{
|
||||
UndertakeSupplyAndProvisioningMission =
|
||||
dataManager.GetDialogue<ComDefGrandCompanyOfficer>("TEXT_COMDEFGRANDCOMPANYOFFICER_00073_A4_002", pluginLog);
|
||||
dataManager.GetString<ComDefGrandCompanyOfficer>("TEXT_COMDEFGRANDCOMPANYOFFICER_00073_A4_002", pluginLog)
|
||||
?? throw new Exception($"Unable to resolve {nameof(UndertakeSupplyAndProvisioningMission)}");
|
||||
ClosePersonnelOfficerTalk =
|
||||
dataManager.GetDialogue<ComDefGrandCompanyOfficer>("TEXT_COMDEFGRANDCOMPANYOFFICER_00073_A4_004", pluginLog);
|
||||
dataManager.GetString<ComDefGrandCompanyOfficer>("TEXT_COMDEFGRANDCOMPANYOFFICER_00073_A4_004", pluginLog)
|
||||
?? throw new Exception($"Unable to resolve {nameof(ClosePersonnelOfficerTalk)}");
|
||||
ExchangeItems = dataManager.GetRegex<Addon>(4928, addon => addon.Text, pluginLog)
|
||||
?? throw new Exception($"Unable to resolve {nameof(ExchangeItems)}");
|
||||
TradeHighQualityItem = dataManager.GetString<Addon>(102434, addon => addon.Text, pluginLog)
|
||||
?? throw new Exception($"Unable to resolve {nameof(TradeHighQualityItem)}");
|
||||
|
||||
var rankUpFc = dataManager.GetExcelSheet<LogMessage>()!.GetRow(3123)!;
|
||||
RankUpFc = rankUpFc.GetRegex(logMessage => logMessage.Text, pluginLog)
|
||||
?? throw new Exception($"Unable to resolve {nameof(RankUpFc)}");
|
||||
RankUpFcType = (XivChatType)rankUpFc.LogKind;
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +35,8 @@ internal sealed class GameStrings
|
||||
public string ClosePersonnelOfficerTalk { get; }
|
||||
public Regex ExchangeItems { get; }
|
||||
public string TradeHighQualityItem { get; }
|
||||
public Regex RankUpFc { get; }
|
||||
public XivChatType RankUpFcType { get; }
|
||||
|
||||
[Sheet("custom/000/ComDefGrandCompanyOfficer_00073")]
|
||||
private class ComDefGrandCompanyOfficer : QuestDialogueText
|
||||
|
@ -291,6 +291,18 @@ internal sealed class ConfigWindow : Window
|
||||
}
|
||||
ImGui.EndDisabled();
|
||||
|
||||
ImGui.SetNextItemWidth(ImGuiHelpers.GlobalScale * 120);
|
||||
List<(int Rank, string Name)> rankUpComboValues = Enumerable.Range(1, 30)
|
||||
.Select(x => x == 1 ? (0, "---") : (x, $"Rank {x}"))
|
||||
.ToList();
|
||||
int pauseAtRank = Math.Max(rankUpComboValues.FindIndex(x => x.Rank == _configuration.PauseAtRank), 0);
|
||||
if (ImGui.Combo("Pause when reaching selected FC Rank", ref pauseAtRank, rankUpComboValues.Select(x => x.Name).ToArray(),
|
||||
rankUpComboValues.Count))
|
||||
{
|
||||
_configuration.PauseAtRank = rankUpComboValues[pauseAtRank].Rank;
|
||||
Save();
|
||||
}
|
||||
|
||||
ImGui.EndTabItem();
|
||||
}
|
||||
}
|
||||
|
2
LLib
2
LLib
@ -1 +1 @@
|
||||
Subproject commit 2f6ef354c401a9f1bb9b807327acad7e98662a2e
|
||||
Subproject commit 89448838a1295041293bbd5dd69501ad934bdf03
|
Loading…
Reference in New Issue
Block a user