Skip to content

Commit

Permalink
add option to line-break before links
Browse files Browse the repository at this point in the history
  • Loading branch information
SlashNephy committed Apr 29, 2024
1 parent 4c515c4 commit dbc33c1
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 14 deletions.
33 changes: 19 additions & 14 deletions AetheryteLinkInChat/AetheryteLinkInChat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,46 +97,41 @@ private void AppendNearestAetheryteLink(ref SeString message)
Dalamud.ClientState.TerritoryType);
}

var payloads = new List<Payload>();
foreach (var (index, path) in paths.Select((x, i) => (i, x)))
{
switch (path)
{
// テレポ可能なエーテライト
case AetheryteTeleportPath { Aetheryte.IsAetheryte: true } aetheryte:
var payloads = new List<Payload>
{
payloads.AddRange([
new IconPayload(BitmapFontIcon.Aetheryte),
new UIForegroundPayload(069),
..SeString.TextArrowPayloads,
aetheryteLinkPayload,
new TextPayload(aetheryte.Aetheryte.PlaceName.Value?.Name.RawString),
new AetherytePayload(aetheryte.Aetheryte).ToRawPayload(),
RawPayload.LinkTerminator,
UIForegroundPayload.UIForegroundOff,
};
payloads.InsertRange(2, SeString.TextArrowPayloads);

message = message.Append(payloads);
]);
break;
// 仮設エーテライト・都市内エーテライト
case AetheryteTeleportPath { Aetheryte.IsAetheryte: false } aetheryte:
message = message.Append(
[
payloads.AddRange([
new IconPayload(BitmapFontIcon.Aethernet),
new TextPayload(aetheryte.Aetheryte.AethernetName.Value?.Name.RawString),
]);
break;
// マップ境界
case BoundaryTeleportPath boundary:
message = message.Append(
[
payloads.AddRange([
new IconPayload(BitmapFontIcon.FlyZone),
new TextPayload(boundary.ConnectedMarker.PlaceNameSubtext.Value?.Name.RawString),
]);
break;
// ワールド間テレポ
case WorldTeleportPath world:
message = message.Append(
[
payloads.AddRange([
new IconPayload(BitmapFontIcon.Aetheryte),
new UIForegroundPayload(069),
aetheryteLinkPayload,
Expand All @@ -153,15 +148,15 @@ private void AppendNearestAetheryteLink(ref SeString message)

if (index != paths.Count - 1)
{
message = message.Append(new TextPayload($" {SeIconChar.ArrowRight.ToIconString()} "));
payloads.Add(new TextPayload($" {SeIconChar.ArrowRight.ToIconString()} "));
}
}

if (Config.EnableLifestreamIntegration && teleporter.IsLifestreamAvailable())
{
var world = solver.DetectWorld(message, Dalamud.ClientState.LocalPlayer?.CurrentWorld.GameData);

message = message.Append([
payloads.AddRange([
new TextPayload(" ["),
new IconPayload(BitmapFontIcon.Aetheryte),
new UIForegroundPayload(069),
Expand All @@ -174,6 +169,16 @@ private void AppendNearestAetheryteLink(ref SeString message)
new TextPayload("]"),
]);
}

if (payloads.Count > 0)
{
if (Config.DisplayLineBreak)
{
payloads.Insert(0, new TextPayload("\n"));
}

message.Payloads.AddRange(payloads);
}
}

private void HandleAetheryteLink(uint _, SeString link)
Expand Down
1 change: 1 addition & 0 deletions AetheryteLinkInChat/Config/PluginConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public class PluginConfig : IPluginConfiguration
public int PreferredGrandCompanyAetheryte;
public bool ConsiderTeleportsToOtherWorlds;
public bool EnableLifestreamIntegration;
public bool DisplayLineBreak;

public bool EnableChatNotificationOnTeleport = true;
public bool EnableQuestNotificationOnTeleport = true;
Expand Down
2 changes: 2 additions & 0 deletions AetheryteLinkInChat/Config/PluginConfigWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ private void DrawGeneralTab()
ImGui.Text(Localization.EnableLifestreamIntegrationDescription);
ImGui.Unindent();

ImGui.Checkbox(Localization.DisplayLineBreak, ref Config.DisplayLineBreak);

ImGui.Checkbox(Localization.EnableChatNotificationOnTeleport, ref Config.EnableChatNotificationOnTeleport);
ImGui.Checkbox(Localization.EnableQuestNotificationOnTeleport, ref Config.EnableQuestNotificationOnTeleport);

Expand Down
6 changes: 6 additions & 0 deletions AetheryteLinkInChat/Localization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,12 @@ public static class Localization
Ja = "Lifestream がインストールされていません。",
};

public static readonly LocalizedString DisplayLineBreak = new()
{
En = "Line break before teleport links",
Ja = "テレポリンクの前に改行を入れる",
};

public static readonly LocalizedString EnableChatNotificationOnTeleport = new()
{
En = "Enable Chat Notification on Teleport",
Expand Down

0 comments on commit dbc33c1

Please sign in to comment.