All checks were successful
Tag and Release Lightless / tag-and-release (push) Successful in 2m9s
# Patchnotes 2.1.0 The changes in this update are more than just "patches". With a new UI, a new feature, and a bunch of bug fixes, improvements and a new member on the dev team, we thought this was more of a minor update. We would like to introduce @tsubasahane of MareCN to the team! We’re happy to work with them to bring Lightless and its features to the CN client as well as having another talented dev bring features and ideas to us. Speaking of which: # Location Sharing (Big shout out to @tsubasahane for bringing this feature) - Are you TIRED of scrambling to find the address of the venue you're in to share with your friends? We are introducing Location Sharing! An optional feature where you can share your location with direct pairs temporarily [30 minutes, 1 hour, 3 hours] minutes or until you turn it off for them. That's up to you! [#125](<#125>) [#49](<Lightless-Sync/LightlessServer#49>) - To share your location with a pair, click the three dots beside the pair and choose a duration to share with them. [#125](<#125>) [#49](<Lightless-Sync/LightlessServer#49>) - To view the location of someone who's shared with you, simply hover over the globe icon! [#125](<#125>) [#49](<Lightless-Sync/LightlessServer#49>) [1] # Model Optimization (Mesh Decimating) - This new option can automatically “simplify” incoming character meshes to help performance by reducing triangle counts. You choose how strong the reduction is (default/recommended is 80%). [#131](<#131>) - Decimation only kicks in when a mesh is above a certain triangle threshold, and only for the items that qualify for it and you selected for. [#131](<#131>) - Hair meshes is always excluded, since simplifying hair meshes is very prone to breaking. - You can find everything under Settings → Performance → Model Optimization. [#131](<#131>) + ** IF YOU HAVE USED DECIMATION IN TESTING, PLEASE CLEAR YOUR CACHE ❗ ** [2] # Animation (PAP) Validation (Safer animations) - Lightless now checks your currently animations to see if they work with your local skeleton/bone mod. If an animation matches, it’s included in what gets sent to other players. If it doesn’t, Lightless will skip it and write a warning to your log showing how many were skipped due to skeleton changes. Its defaulted to Unsafe (off). turn it on if you experience crashes from others users. [#131](<#131>) - Lightless also does the same kind of check for incoming animation files, to make sure they match the body/skeleton they were sent with. [#131](<#131>) - Because these checks can sometimes be a little picky, you can adjust how strict they are in Settings -> General -> Animation & Bones to reduce false positives. [#131](<#131>) # UI Changes (Thanks to @kyuwu for UI Changes) - The top part of the main screen has gotten a makeover. You can adjust the colors of the gradiant in the Color settings of Lightless. [#127](<#127>) [3] - Settings have gotten some changes as well to make this change more universal, and will use the same color settings. [#127](<#127>) - The particle effects of the gradient are toggleable in 'Settings -> UI -> Behavior' [#127](<#127>) - Instead of showing download/upload on bottom of Main UI, it will show VRAM usage and triangles with their optimization options next to it [#138](<#138>) # LightFinder / ShellFinder - UI Changes that follow our new design follow the color codes for the Gradient top as the main screen does. [#127](<#127>) [4] Co-authored-by: defnotken <itsdefnotken@gmail.com> Co-authored-by: azyges <aaaaaa@aaa.aaa> Co-authored-by: cake <admin@cakeandbanana.nl> Co-authored-by: Tsubasa <tsubasa@noreply.git.lightless-sync.org> Co-authored-by: choco <choco@patat.nl> Co-authored-by: celine <aaa@aaa.aaa> Co-authored-by: celine <celine@noreply.git.lightless-sync.org> Co-authored-by: Tsubasahane <wozaiha@gmail.com> Co-authored-by: cake <cake@noreply.git.lightless-sync.org> Reviewed-on: #123
167 lines
10 KiB
C#
167 lines
10 KiB
C#
using Dalamud.Game.Text;
|
|
using LightlessSync.UtilsEnum.Enum;
|
|
using LightlessSync.LightlessConfiguration.Models;
|
|
using LightlessSync.UI;
|
|
using LightlessSync.UI.Models;
|
|
using Microsoft.Extensions.Logging;
|
|
using LightlessSync.PlayerData.Factories;
|
|
|
|
namespace LightlessSync.LightlessConfiguration.Configurations;
|
|
|
|
[Serializable]
|
|
public class LightlessConfig : ILightlessConfiguration
|
|
{
|
|
public bool AcceptedAgreement { get; set; } = false;
|
|
public string CacheFolder { get; set; } = string.Empty;
|
|
public bool DisableOptionalPluginWarnings { get; set; } = false;
|
|
public bool EnableDtrEntry { get; set; } = false;
|
|
public bool ShowUidInDtrTooltip { get; set; } = true;
|
|
public bool PreferNoteInDtrTooltip { get; set; } = false;
|
|
public bool IsNameplateColorsEnabled { get; set; } = false;
|
|
public DtrEntry.Colors NameplateColors { get; set; } = new(Foreground: 0xE69138u, Glow: 0xFFBA47u);
|
|
public Dictionary<string, string> CustomUIColors { get; set; } = new(StringComparer.OrdinalIgnoreCase);
|
|
public bool UseColorsInDtr { get; set; } = true;
|
|
public DtrEntry.Colors DtrColorsDefault { get; set; } = default;
|
|
public DtrEntry.Colors DtrColorsNotConnected { get; set; } = new(Glow: 0x0428FFu);
|
|
public DtrEntry.Colors DtrColorsPairsInRange { get; set; } = new(Glow: 0xFFBA47u);
|
|
public bool ShowLightfinderInDtr { get; set; } = false;
|
|
public bool UseLightfinderColorsInDtr { get; set; } = true;
|
|
public DtrEntry.Colors DtrColorsLightfinderEnabled { get; set; } = new(Foreground: 0xB590FFu, Glow: 0x4F406Eu);
|
|
public DtrEntry.Colors DtrColorsLightfinderDisabled { get; set; } = new(Foreground: 0xD44444u, Glow: 0x642222u);
|
|
public DtrEntry.Colors DtrColorsLightfinderCooldown { get; set; } = new(Foreground: 0xFFE97Au, Glow: 0x766C3Au);
|
|
public DtrEntry.Colors DtrColorsLightfinderUnavailable { get; set; } = new(Foreground: 0x000000u, Glow: 0x000000u);
|
|
public LightfinderDtrDisplayMode LightfinderDtrDisplayMode { get; set; } = LightfinderDtrDisplayMode.PendingPairRequests;
|
|
public bool UseLightlessRedesign { get; set; } = true;
|
|
public bool ShowUiWhenUiHidden { get; set; } = true;
|
|
public bool ShowUiInGpose { get; set; } = true;
|
|
public bool EnableRightClickMenus { get; set; } = true;
|
|
public NotificationLocation ErrorNotification { get; set; } = NotificationLocation.Both;
|
|
public string ExportFolder { get; set; } = string.Empty;
|
|
public bool FileScanPaused { get; set; } = false;
|
|
public NotificationLocation InfoNotification { get; set; } = NotificationLocation.Toast;
|
|
public bool InitialScanComplete { get; set; } = false;
|
|
public LogLevel LogLevel { get; set; } = LogLevel.Information;
|
|
public bool LogPerformance { get; set; } = false;
|
|
public double MaxLocalCacheInGiB { get; set; } = 20;
|
|
public bool OpenGposeImportOnGposeStart { get; set; } = false;
|
|
public bool OpenPopupOnAdd { get; set; } = true;
|
|
public int ParallelDownloads { get; set; } = 10;
|
|
public int ParallelUploads { get; set; } = 8;
|
|
public bool EnablePairProcessingLimiter { get; set; } = true;
|
|
public int MaxConcurrentPairApplications { get; set; } = 3;
|
|
public int DownloadSpeedLimitInBytes { get; set; } = 0;
|
|
public DownloadSpeeds DownloadSpeedType { get; set; } = DownloadSpeeds.MBps;
|
|
public bool PreferNotesOverNamesForVisible { get; set; } = false;
|
|
public VisiblePairSortMode VisiblePairSortMode { get; set; } = VisiblePairSortMode.Alphabetical;
|
|
public OnlinePairSortMode OnlinePairSortMode { get; set; } = OnlinePairSortMode.Alphabetical;
|
|
public TextureFormatSortMode TextureFormatSortMode { get; set; } = TextureFormatSortMode.None;
|
|
public float ProfileDelay { get; set; } = 1.5f;
|
|
public bool ProfilePopoutRight { get; set; } = false;
|
|
public bool ProfilesAllowNsfw { get; set; } = false;
|
|
public bool ProfilesShow { get; set; } = true;
|
|
public bool ShowSyncshellUsersInVisible { get; set; } = true;
|
|
public bool ShowCharacterNameInsteadOfNotesForVisible { get; set; } = false;
|
|
public bool ShowOfflineUsersSeparately { get; set; } = true;
|
|
public bool ShowSyncshellOfflineUsersSeparately { get; set; } = true;
|
|
public bool ShowGroupedSyncshellsInAll { get; set; } = true;
|
|
public bool GroupUpSyncshells { get; set; } = true;
|
|
public bool ShowOnlineNotifications { get; set; } = false;
|
|
public bool ShowOnlineNotificationsOnlyForIndividualPairs { get; set; } = true;
|
|
public bool ShowOnlineNotificationsOnlyForNamedPairs { get; set; } = false;
|
|
public bool ShowVisiblePairsGreenEye { get; set; } = false;
|
|
public bool ShowTransferBars { get; set; } = true;
|
|
public bool ShowTransferWindow { get; set; } = false;
|
|
public bool ShowPlayerLinesTransferWindow { get; set; } = true;
|
|
public bool ShowPlayerSpeedBarsTransferWindow { get; set; } = true;
|
|
public bool UseNotificationsForDownloads { get; set; } = true;
|
|
public bool ShowUploading { get; set; } = true;
|
|
public bool ShowUploadingBigText { get; set; } = true;
|
|
public bool ShowVisibleUsersSeparately { get; set; } = true;
|
|
public bool EnableDirectDownloads { get; set; } = true;
|
|
public int TimeSpanBetweenScansInSeconds { get; set; } = 30;
|
|
public int TransferBarsHeight { get; set; } = 12;
|
|
public bool TransferBarsShowText { get; set; } = true;
|
|
public int TransferBarsWidth { get; set; } = 250;
|
|
public bool UseAlternativeFileUpload { get; set; } = false;
|
|
public bool UseCompactor { get; set; } = false;
|
|
public bool DebugStopWhining { get; set; } = false;
|
|
public bool AutoPopulateEmptyNotesFromCharaName { get; set; } = false;
|
|
public int Version { get; set; } = 1;
|
|
public NotificationLocation WarningNotification { get; set; } = NotificationLocation.Both;
|
|
|
|
// Lightless Notification Configuration
|
|
public bool UseLightlessNotifications { get; set; } = true;
|
|
public bool ShowNotificationProgress { get; set; } = true;
|
|
public NotificationLocation LightlessInfoNotification { get; set; } = NotificationLocation.LightlessUi;
|
|
public NotificationLocation LightlessWarningNotification { get; set; } = NotificationLocation.LightlessUi;
|
|
public NotificationLocation LightlessErrorNotification { get; set; } = NotificationLocation.ChatAndLightlessUi;
|
|
public NotificationLocation LightlessPairRequestNotification { get; set; } = NotificationLocation.LightlessUi;
|
|
public NotificationLocation LightlessDownloadNotification { get; set; } = NotificationLocation.TextOverlay;
|
|
public NotificationLocation LightlessPerformanceNotification { get; set; } = NotificationLocation.LightlessUi;
|
|
|
|
// Basic Settings
|
|
public float NotificationOpacity { get; set; } = 0.95f;
|
|
public int MaxSimultaneousNotifications { get; set; } = 5;
|
|
public bool AutoDismissOnAction { get; set; } = true;
|
|
public bool DismissNotificationOnClick { get; set; } = false;
|
|
public bool ShowNotificationTimestamp { get; set; } = false;
|
|
|
|
// Position & Layout
|
|
public NotificationCorner NotificationCorner { get; set; } = NotificationCorner.Right;
|
|
public int NotificationOffsetY { get; set; } = 50;
|
|
public int NotificationOffsetX { get; set; } = 0;
|
|
public float NotificationWidth { get; set; } = 350f;
|
|
public float NotificationSpacing { get; set; } = 8f;
|
|
|
|
// Animation & Effects
|
|
public float NotificationAnimationSpeed { get; set; } = 10f;
|
|
public float NotificationSlideSpeed { get; set; } = 10f;
|
|
public float NotificationAccentBarWidth { get; set; } = 3f;
|
|
|
|
// Duration per Type
|
|
public int InfoNotificationDurationSeconds { get; set; } = 10;
|
|
public int WarningNotificationDurationSeconds { get; set; } = 15;
|
|
public int ErrorNotificationDurationSeconds { get; set; } = 20;
|
|
public int PairRequestDurationSeconds { get; set; } = 180;
|
|
public int DownloadNotificationDurationSeconds { get; set; } = 30;
|
|
public int PerformanceNotificationDurationSeconds { get; set; } = 20;
|
|
public uint CustomInfoSoundId { get; set; } = 2; // Se2
|
|
public uint CustomWarningSoundId { get; set; } = 16; // Se15
|
|
public uint CustomErrorSoundId { get; set; } = 16; // Se15
|
|
public uint PairRequestSoundId { get; set; } = 5; // Se5
|
|
public uint PerformanceSoundId { get; set; } = 16; // Se15
|
|
public bool DisableInfoSound { get; set; } = true;
|
|
public bool DisableWarningSound { get; set; } = true;
|
|
public bool DisableErrorSound { get; set; } = true;
|
|
public bool DisablePairRequestSound { get; set; } = true;
|
|
public bool DisablePerformanceSound { get; set; } = true;
|
|
public bool ShowPerformanceNotificationActions { get; set; } = true;
|
|
public bool ShowPairRequestNotificationActions { get; set; } = true;
|
|
public bool UseFocusTarget { get; set; } = false;
|
|
public bool overrideFriendColor { get; set; } = false;
|
|
public bool overridePartyColor { get; set; } = false;
|
|
public bool overrideFcTagColor { get; set; } = false;
|
|
public bool useColoredUIDs { get; set; } = true;
|
|
public bool BroadcastEnabled { get; set; } = false;
|
|
public bool LightfinderAutoEnableOnConnect { get; set; } = false;
|
|
public LightfinderLabelRenderer LightfinderLabelRenderer { get; set; } = LightfinderLabelRenderer.Pictomancy;
|
|
public short LightfinderLabelOffsetX { get; set; } = 0;
|
|
public short LightfinderLabelOffsetY { get; set; } = 0;
|
|
public bool LightfinderLabelUseIcon { get; set; } = false;
|
|
public bool LightfinderLabelShowOwn { get; set; } = true;
|
|
public bool LightfinderLabelShowPaired { get; set; } = true;
|
|
public bool LightfinderLabelShowHidden { get; set; } = false;
|
|
public string LightfinderLabelIconGlyph { get; set; } = SeIconCharExtensions.ToIconString(SeIconChar.Hyadelyn);
|
|
public float LightfinderLabelScale { get; set; } = 1.0f;
|
|
public bool LightfinderAutoAlign { get; set; } = true;
|
|
public LabelAlignment LabelAlignment { get; set; } = LabelAlignment.Left;
|
|
public DateTime BroadcastTtl { get; set; } = DateTime.MinValue;
|
|
public bool SyncshellFinderEnabled { get; set; } = false;
|
|
public string? SelectedFinderSyncshell { get; set; } = null;
|
|
public string LastSeenVersion { get; set; } = string.Empty;
|
|
public bool EnableParticleEffects { get; set; } = true;
|
|
public AnimationValidationMode AnimationValidationMode { get; set; } = AnimationValidationMode.Unsafe;
|
|
public bool AnimationAllowOneBasedShift { get; set; } = false;
|
|
public bool AnimationAllowNeighborIndexTolerance { get; set; } = false;
|
|
}
|