-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1.2.0.0+ #107
1.2.0.0+ #107
Conversation
Split the RichTextboxHelper class definition from ActionForm class to create a new custom control. Also added a ReadonlyRichTextbox base class to allow scripts to display formatted text without using WndProc (safety API needed).
Change the "Error has been encountered" message on the UI to display the specific number of errors encountered since the last opening of the error page. Fix an issue where the error info would never display after being opened once despite subsequent errors. Additionally, refactored the logging system from a single Queue<InternalLog> to a dictionary keyed by DebugLevelEnum. This allows a cap of 30000 logs per type instead of a shared cap of 100000, preventing general logs like Info and Verbose from overshadowing older Error/Warning logs.
In script actions, named callback actions and main UI, change error message logging from ex.Message to ex.ToString() to provide more detailed stack trace information. Otherwise the ex.Message usually only contains a useless sentence.
…tting local triggers to Readonly Some triggers need the users to manually fire them for self-testing. This is better not considered as "developer" level of usage. There are many people asking about "why I cannot fire the trigger" in Discord, which also shows this point.
…ion files Improve the exception handling mechanism within the translation function to provide better feedback and fallback options when a FormatException occurs. This FormatException usually happens when the translation string has more `{n}` fields then the original English string, either by mistake, or because of the original string was updated and less fields were required, such as the previous 1.1.7.x change from "Execute {C#/VB} script" to the plain text "Execute C# script".
String functions: · tofullwidth / tohalfwidth: "H1" ↔ "H1" · toxivchar(combineDigits=false): convert the alphanumeric characters to the corresponding XIV-defined black box character. If combineDigits, numbers between 10 and 31 would be converted to a single black box character. · chr(separator=","): convert a string to a sequence of charcodes. · ord(joiner=","): the reverse of chr. Expressions: · _triggerpath: the full path of the fired trigger. Also cleaned up some argument descriptions in the autofill.
ISymbol.ContainingNamespace and ISymbol.ContainingAssembly could all be null (https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.ipropertysymbol?view=roslyn-dotnet-4.7.0). This caused NullReferenceException when validating some properties.
Added functions to calculate L1-distance and L∞-distance : · L1-distance: `l1d(...)` or `manhattandistance(...)` · L∞-distance: `l∞d(...)` or `chebyshevdistance(...)` L1-distance could be used to judge if 2 coordinations are close to each other, without calculating the squares and square-roots in the L2-distance.
The original code assumed the clicked grid is boolean type (checkbox), while the grids in the first column are actually namespaces.
Also added a "Copy as CSV" button to copy the CSV data.
Refactored the ActionType property to address compatibility issues when importing triggers from higher-version datasets. The updated property now uses a more comprehensive setter: using `Enum.TryParse` to ensure robust handling of new, unknown action types. If the value is unrecognized, it will provide more information in the exception.
…ipboard exceptions - The original code did not use control.Invoke to interact with the TreeView in the ui. This caused exceptions when autofiring some actions (such as enabling a trigger) when saving the trigger. - ClipBoard.SetText(string text) does not accept empty string and caused exceptions in the original code. Also: - Changed `ctx.plug` to `RealPlugin.plug` to avoid null reference. - Fixed the typo: paissaheavyindustries#93 (comment)
Contains: - Start/End ACT Encounter - Enable/disable "Use Deucalion" - Enable/disable "Log All Network Data" - The original `End Encounter` was automatically converted into this `End ACT Encounter` - Tle old list action `PopLast` was also automatically converted to `Pop` with the given index `-1`.
… and SplitArguments
- Check the characteristics of the beginning of the imported data to determine which type of imported data it is, instead of trying every single type. - Providing more information based on the determined type. - Added the plugin version in TriggernometryExport, and show the source version when importing the data.
- Registrant - Registration time - Last Invoked The registrant could be set by the updated function: RegisterNamedCallback(string name, CustomCallbackDelegate callback, object o, string registrant) or automatically checked if using the original function without providing a registrant name.
(and other small changes)
The original code incorrectly updates repos set to "manually update" and then loads local files, causing duplicate folders to be added to the repo upon startup.
…tables and dicts `\r\n` is considered as a single char. e.g. using the expression below to build a dictionary (the second char is a linebreak): ``` = a=1 b=2 c=3 ```
- Double-click: · Clicking on all types of brackets / $ / ¤: Select the full expression with enclosed brackets, which could be very useful when writing long expressions and you cannot find where is the paired bracket; · Clicking on spaces: Select the adjacent spaces in the same line · Clicking on other characters: Select the current "word" (the splitting is better than original) - Triple-click: · Single-line: Select all text · Multi-line: Select current line
Update Log2024/5/27Expressions
Actions
UI / Improve User Experience
Codes / Scripts
Bug FixesCheck each commit for details. Notice: Changed Behaviour
|
· Ctrl + Shift + 4: ${} · Ctrl + Shift + V/L/T/D: ${v/l/t/d:}; · Ctrl + Shift + P, V/L/T/D: ${pv/pl/pt/pd:}; · Ctrl + Shift + N: ${n:} · Ctrl + Shift + F: ${f::} · Ctrl + Shift + E: ${_entity[].} · Ctrl + Shift + M: ${_me.id} · Ctrl + Shift + A: Select the next outer layer of brackets Corresponding new configuration options: · Enable shortcuts · Use abbreviation · Wrap selected text
…sion):srcVersion} For self-test triggers to determine if the user is using an old version of triggers / an old plugin.
The environment variables are defined in the folder form "Environment" tabpage. e.g. - folder1 (key1 = 1, key2 = 0) - folder2 (key2 = 2) - trigger Parsing the expression `${env:key1} ${env:key2}` in the trigger would get `1 2`.
`_triggername` `_triggerpath` `_triggerid` etc. Previously these expressions would give an empty string.
· `${_offset[1B]}` The headmarker offset (positive) in the current instance · ${_targetmarker2id[type]} / ${_tm2id[type]} The hex ID of the current entity who has a specific marker. type: id (0, 1, ...) or description (attack1, attack2, ...)
- dir2rad(direction, ±n) The reverse function of `roundir`. e.g. - `dir2rad(x, 360)` = `deg2rad(x)`. - `dir2rad(1, 4)` = -1.57... - ispointinray(srcX, srcY, θ, width, tgtX, tgtY) Calculate if the point (tgt) is in the range of a ray AoE (src). It is actually a combination of `projdistance` and `projheight`.
since the full-width parentheses are widely used in CJK regions.
…gernometry is disabled then enabled.
The separator has been changed from "," to linebreaks, which is easier to write and read. Also added "//" for comments e.g. // Set the file path below: path = C:\... then use ${env:path} to use the value.
968da53
into
paissaheavyindustries:master
The details have been added to the descriptions of each commit.