When opening the installer while boot plugins are still loaded, it may have been possible for plugins to be added to the installed plugins list twice, causing various statekeeping issues
* Switch INotificationManager and ITitleScreenMenu to use ISharedImmediateTexture #1879
* Remove SetIconTexture
Remove some remarks that no longer apply
* Cleanup StyleCop warnings
* Add SeStringEvaluator service
* Move DrawCopyableText into WidgetUtil
* Use Icon2RemapTable in SeStringRenderer
* Beautify some code
* Make sure to use the correct language
* Add SeString Creator widget
* Fix getting local parameters
* Update expressionNames
* misc changes
* Use InvariantCulture in TryResolveSheet
* Add SeStringEvaluatorAgingStep
* Fix item id comparisons
* Add SheetRedirectResolverAgingStep
* Add NounProcessorAgingStep
* Update SeString.CreateItemLink
This also adds the internal ItemUtil class.
* Fix name of SeStringCreator widget
* Add Global Parameters tab to SeStringCreatorWidget
* Load widgets on demand
* Update SeStringCreatorWidget
* Resizable SeStringCreatorWidget panels
* Update GamepadStateAgingStep
* Experimental status was removed in #2144
* Update SheetRedirectResolver, rewrite Noun params
* Fixes for 4 am code
* Remove incorrect column offset
I have no idea how that happened.
* Draw names of linked things
---------
Co-authored-by: Soreepeong <3614868+Soreepeong@users.noreply.github.com>
Co-authored-by: KazWolfe <KazWolfe@users.noreply.github.com>
- Adds new menu item to /xldev to disable Safe Mode, allowing users to load plugins again.
- Safe mode cannot be re-enabled once disabled.
- Add new ModuleLog.Create<T> for eventual ILogger magic
- Make safe mode writable
- Remove redundant check in CheckPolicy
These are supposed to indicate to the user that they called a function at the wrong point in time. We don't want to actually mutate the state in that case.
* Avoid re-creating title version string every frame
* Marked title version string that it has been changed by Dalamud by
appending a newline payload with a string expression embedded within,
which the game will ignore (effectively `<br(!Dalamud!)>`.)
* Added `PluginManager.LoadedPluginCount` which will count the number of
loaded plugin without making a copy of the plugin list.
* Made TitleScreenMenuWindow.OnVersionStringDraw` update the title
version text addon only if number of loaded plugin changes or the text
is missing the custom suffix from the first point.
* Use OriginalTextPointer to determine if SetText(ROS) has been called
* Implement Print methods that work with Lumina SeString/ReadOnlySeString
* null terminate before passing to Utf8String
* Rename XivChatEntryReadOnly to XivChatEntryRaw
* Fix error from wrong conversion method
* Follow Rider suggestion
* Switch from AppendMacroString to BeginMacro for optimization
* More optimization suggested by kizer
* More kizer suggested optimizations
* Fix small mistake
* Use XivChatEntry and read/write to Byte fields accordingly
* Add file dialog to add a dev plugin
* Require dev plugins to be paths to the DLL
* Only allow .dlls in the dev plugin setting entry
* Update dev plugin location hint
* update wording
---------
Co-authored-by: KazWolfe <KazWolfe@users.noreply.github.com>
* Remove unused code from ChatHandlers
* Replace sigs in DalamudAtkTweaks
* Resolve LocalContentId by using PlayerState.ContentId
* Resolve BuddyList address via UIState.Buddy
* Resolve ObjectTable address via GameObjectManager
* Resolve FateTable address via FateManager
* Resolve GroupManager address via GroupManager
* Resolve JobGauges address via JobGaugeManager.CurrentGauge
* Simplify ItemHover/Out event
* Resolve ToggleUiHide address via RaptureAtkModule.SetUiVisibility
* Resolve PopulateItemLinkObject via InventoryItem.Copy
* Add byte[].AsPointer extension
* Resolve addresses used by ToastGui via UIModule functions
* Use Length from Span as ObjectTableLength
* Replace OpenMapWithMapLink with CS call
* Resolve FrameworkAddressResolver with CS vtable
* Drop unnecessary ToArray in HandlePrintMessage
* Clean up event calls in HandlePrintMessageDetour
* Simplify LocalContentId further
This pointer can't be null, because it's part of the .data section.
* Compare SeStrings in FlyTextGui with SequenceEqual
* Use CS types in FlyTextGuis internal code
* Simplify reading SeStrings internally
* Remove AsPointer again
* Resolve Number/StringArray by type in NamePlateGui
* Fix crashes in HandlePrintMessageDetour
* Resolve InteractableLinkClicked with LogViewer.HandleLinkClick
* Refactor and upgrade to new excel design
* Obsolete ExcelResolver<T> and use only RowRef<T>
* Better benchmarking for Lumina
* Add custom game-supported RSV provider
* Refactor and move Lazy<T> and nullable/cached row objects to RowRefs
* Convert IRSVProvider to delegate, resolve strings by default
* Split IExcelRow into IExcelSubrow
* Extra lumina documentation
* Minor RSV CS fixes
* Fix UIGlowPayload warning
* Fix rebase
* Update to Lumina 5
- New methods `HasAction`, `HasFunction`, and `SubscriptionCount` to allow making better decisions about IPC logic.
- Some better documentation for the call gates.
ServiceScope.Dispose was not waiting for scoped services to complete
disposing. This had an effect of letting a new plugin instance register
a DtrBar entry before previous plugin instance's entry got unregistered.
This change also cleans up unloading procedure in LocalPlugin.