Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
345 commits
Select commit Hold shift + click to select a range
cea0e9a
Avalonia GitHub Actions
luizzeroxis Jul 27, 2025
13f6b75
Move items in room
luizzeroxis Jul 28, 2025
eae6bc9
Add decompile settings
luizzeroxis Jul 29, 2025
eda89bb
Merge remote-tracking branch 'origin/master' into avalonia
luizzeroxis Jul 30, 2025
65dad71
Only select from selected category
luizzeroxis Jul 31, 2025
7625f54
Properly select selected item in room tree, keep current layer when u…
luizzeroxis Aug 2, 2025
562e64c
Ask user for asset name when creating, and if room should be added in…
luizzeroxis Aug 3, 2025
0c1e53a
Add scripting function for text inputs
luizzeroxis Aug 3, 2025
bc17e36
Flip and rotate tiles, instance color, fix crash with rooms after 202…
luizzeroxis Aug 4, 2025
9836df1
Fix data grid add not enabling
luizzeroxis Aug 6, 2025
47236d2
Save changes before quitting dialog
luizzeroxis Aug 7, 2025
6c88eee
Small dialog fixes
luizzeroxis Aug 7, 2025
357a3c4
Ask user to save when creating new, opening or closing data file
luizzeroxis Aug 9, 2025
5233ace
Moved view accessing functions to interface
luizzeroxis Aug 9, 2025
e4c8078
Loader window is now an interface for testing
luizzeroxis Aug 9, 2025
a3897d1
Merge remote-tracking branch 'origin/master' into avalonia
luizzeroxis Aug 10, 2025
4dc296a
Update version to 0.8.3.0
luizzeroxis Aug 10, 2025
45ca572
Allow custom Styles.xaml in AppData
luizzeroxis Aug 10, 2025
220108b
Moved room properties to left side, zoom textbox
luizzeroxis Aug 10, 2025
9a29b0d
Fix forgotten Avalonia.Markup.Xaml.Loader and update dependencies
luizzeroxis Aug 11, 2025
1b32c9b
Single namespace
luizzeroxis Aug 16, 2025
1c03a16
Reorganized folders
luizzeroxis Aug 16, 2025
5fbeed0
Restore caret position and focus after compile in code editor
luizzeroxis Aug 19, 2025
f97ca8a
Basic code syntax highlighting
luizzeroxis Aug 20, 2025
cbeb8e8
Rough tile editor
luizzeroxis Aug 30, 2025
701b791
Add copy and paste to room instances
luizzeroxis Sep 27, 2025
395ab75
Add move up and down buttons to room editor
luizzeroxis Oct 12, 2025
5bd9c79
Add swap to position to resources
luizzeroxis Oct 12, 2025
246044e
Removed room debug text, added room coordinates under mouse
luizzeroxis Oct 13, 2025
fae20e2
Setting to disable syntax highlighting
luizzeroxis Oct 13, 2025
1b44d06
Update dependencies
luizzeroxis Oct 13, 2025
bb50336
Merge branch 'master' into avalonia
luizzeroxis Oct 13, 2025
b57feee
Fix for updates
luizzeroxis Oct 13, 2025
c5a72e3
Add option to not auto compile
luizzeroxis Oct 14, 2025
ca87358
Fix sprites not showing up when opening
luizzeroxis Oct 15, 2025
480169d
Fix color background
luizzeroxis Oct 15, 2025
636d70c
Fix negative scaled items not being selected in room
luizzeroxis Oct 15, 2025
e46a6f6
Render tiled backgrounds
luizzeroxis Oct 16, 2025
9541ea7
Room editor reorganize around room items
luizzeroxis Oct 19, 2025
d531874
Changed custom data tree view with TreeDataGrid
luizzeroxis Oct 22, 2025
44df104
Temporary fix to resource position swaps sometimes not working
luizzeroxis Oct 23, 2025
4a03185
Setting to open new resource after creating it
luizzeroxis Oct 23, 2025
24e67b2
Fix crash when rendering happens at same time as updates in room editor
luizzeroxis Oct 27, 2025
c44e25b
Add room grid
luizzeroxis Oct 28, 2025
9bc6dd6
Removed unecessary columns and buttons in data grids
luizzeroxis Oct 28, 2025
4282595
Remove DynamicData, replace with custom solution
luizzeroxis Nov 23, 2025
4363d01
Update dependencies
luizzeroxis Nov 24, 2025
2f0928e
Added a reset to the list when there's too many changes to fix perfor…
luizzeroxis Dec 8, 2025
7ceabe6
Gray parented code entries and null entries (again)
luizzeroxis Dec 9, 2025
f2843c1
Update SKImageViewer to be simpler and more robust
luizzeroxis Dec 14, 2025
02b7505
Show sprite in object, hide GMS2 stuff in GMS1.
luizzeroxis Dec 14, 2025
310cf76
Merge branch 'master' into avalonia
luizzeroxis Dec 15, 2025
05c979a
Update to .NET 10
luizzeroxis Dec 15, 2025
606243e
Add right click to code editor to replace integer index with a proper…
luizzeroxis Dec 21, 2025
6cbf213
Improved code editor performance by caching highlighting data
luizzeroxis Dec 24, 2025
87c5a6d
Added loader to search on code
luizzeroxis Dec 24, 2025
efb69b1
Expand data tree item on load
luizzeroxis Dec 24, 2025
2e2d76e
View font and embedded image image
luizzeroxis Dec 25, 2025
e2934a1
Import audio
luizzeroxis Dec 25, 2025
4474391
Import embedded texture
luizzeroxis Dec 26, 2025
623da7b
Drop data files into window to open
luizzeroxis Dec 26, 2025
0d21d2d
CollectionChanged and loader window works in other threads (hopefully…
luizzeroxis Dec 28, 2025
284f2eb
Removed ShowMessageDialog
luizzeroxis Dec 28, 2025
7beb969
Add right click option on tab to select item on list
luizzeroxis Dec 28, 2025
8958931
Moved ScrollViewer inside views to fix some issues
luizzeroxis Dec 28, 2025
71064fe
Add save as image to room editor
luizzeroxis Dec 28, 2025
d78cc7c
Add button to export sprite textures as PNGs
luizzeroxis Dec 31, 2025
cefd37b
Fast tile rendering with DrawVertices
luizzeroxis Dec 31, 2025
aff5518
Fix whitespace
luizzeroxis Dec 31, 2025
abb7a4e
Merge branch 'master' into avalonia
luizzeroxis Jan 1, 2026
b19fff5
Update for new background properties
luizzeroxis Jan 2, 2026
8af09c6
Add path viewer
luizzeroxis Jan 12, 2026
434e07e
Little reorganizing of room editor
luizzeroxis Jan 15, 2026
08ff972
Add select any layer to room editor
luizzeroxis Jan 15, 2026
687af36
Merge remote-tracking branch 'origin/master' into avalonia
luizzeroxis Jan 19, 2026
5066d24
Update version number
luizzeroxis Jan 19, 2026
8320d7c
Update dependencies
luizzeroxis Jan 19, 2026
d235762
Add tile picker
luizzeroxis Jan 20, 2026
024139d
Formatting fixes
luizzeroxis Jan 20, 2026
87b585a
Move room view things to view model
luizzeroxis Jan 20, 2026
1d8908b
Add auto size tile layer button
luizzeroxis Jan 21, 2026
081784c
Use resources in styles
luizzeroxis Jan 21, 2026
74964ba
Tile set columns control now a NumericUpDown
luizzeroxis Jan 21, 2026
8d54ae5
Add some keyboard shortcuts
luizzeroxis Jan 23, 2026
1c7f64f
Add middle click button in places
luizzeroxis Jan 23, 2026
0d929f0
Add flip x, flip y and rotate buttons to tile picker, and right click…
luizzeroxis Jan 25, 2026
c3c372a
Room editor reorganizing
luizzeroxis Jan 26, 2026
6ec4541
Fix crash after changing syntax highlight setting (#7)
luizzeroxis Jan 26, 2026
5b2e65f
Moved room renderer to separate file
luizzeroxis Jan 31, 2026
d06884f
Limiting room items and isolating custom draw operation
luizzeroxis Feb 2, 2026
8caad01
The room renderer now first creates render commands, which will store…
luizzeroxis Feb 8, 2026
7371a67
Cull tiles in tiles layer outside view
luizzeroxis Feb 8, 2026
a7527ca
Changed to software rendering on Linux to hopefully avoid crashes
luizzeroxis Feb 8, 2026
d14e747
Add animation curve editor
luizzeroxis Feb 11, 2026
caa921a
Only show chunks that exist in data file
luizzeroxis Feb 12, 2026
5efdd81
Made selection color the same as theme in custom draw operations
luizzeroxis Feb 12, 2026
a15e0c7
Small changes
luizzeroxis Feb 12, 2026
7fc19c6
Add textbox to flags box
luizzeroxis Feb 14, 2026
20f2ad3
Add "run with runner" feature
luizzeroxis Feb 16, 2026
6267c34
Change MessageWindow's arguments to Buttons
luizzeroxis Feb 17, 2026
c3fc657
Moved file picker types to separate file
luizzeroxis Feb 17, 2026
3b64f9d
Forgot other operating systems existed
luizzeroxis Feb 17, 2026
4639c7f
Added basic test project
luizzeroxis Feb 18, 2026
f6c49a6
Merge branch 'master' into avalonia
luizzeroxis Feb 19, 2026
c45c050
Add audio player with SDL
luizzeroxis Feb 21, 2026
1df3eca
Add attach and detach events to tabs, sounds stop when embedded audio…
luizzeroxis Feb 23, 2026
e9e3f3a
View and play audio from sound if in the same data file
luizzeroxis Feb 24, 2026
05457c8
Fix version comparer
luizzeroxis Feb 24, 2026
cc06d26
Improve audio player
luizzeroxis Feb 24, 2026
8593ee4
Improve some rotations
luizzeroxis Feb 27, 2026
458f074
Zoom in tile picker
luizzeroxis Mar 1, 2026
4b3e3a3
Checkered background in tile picker
luizzeroxis Mar 1, 2026
e832fd3
Try to fix crash in large rooms
luizzeroxis Mar 5, 2026
36fa046
Use default monospace font on Linux, moved font config to style resource
luizzeroxis Mar 5, 2026
81f7cf7
Quick fix for search results not opening in correct line when compila…
luizzeroxis Mar 13, 2026
84315a3
Slightly better go to location logic
luizzeroxis Mar 13, 2026
582dc7e
Add add button to reference, can add new code entry within object wit…
luizzeroxis Mar 14, 2026
1980d3f
Add setting to not start maximized
luizzeroxis Mar 15, 2026
1e9787a
Try to show message on error
luizzeroxis Mar 21, 2026
afeb8c3
Moved things to ImportExport
luizzeroxis Mar 21, 2026
8446487
Fix and add tests to ObservableCollectionView
luizzeroxis Mar 26, 2026
4598395
Binary search in observable collection view, more testing
luizzeroxis Mar 29, 2026
f202cb0
Allow shift+enter in command box
luizzeroxis Apr 3, 2026
8cd9b6c
Add some TargetWidth and TargetHeight support
luizzeroxis Apr 3, 2026
f3cc266
Merge branch 'master' into avalonia
luizzeroxis Apr 4, 2026
5982476
Update dependencies
luizzeroxis Apr 4, 2026
4ffc60d
Allow playing sounds in sound editor if there's no audio groups
luizzeroxis Apr 4, 2026
75b204f
Make double tapping reference views go to the reference
skirlez Feb 19, 2026
507532a
Merge branch 'skirlez/avalonia' into avalonia
luizzeroxis Apr 5, 2026
12afdc0
Allow dragging and dropping objects and sprites into room
luizzeroxis Apr 13, 2026
5ad993d
Add auto tile IDs button
luizzeroxis Apr 14, 2026
6414567
Small scripting fixes
luizzeroxis Apr 23, 2026
d4252ef
Merge commit 'f3f1c878' into avalonia
luizzeroxis Apr 23, 2026
cd16932
Fix things from last merge
luizzeroxis Apr 23, 2026
ba0d3d5
Merge commit '8cae55567019123d3d1f33cd7aebd2d3e6dfc4c0' into avalonia…
luizzeroxis Apr 25, 2026
2606975
Fix errors caused by merge
luizzeroxis Apr 25, 2026
708ff3a
Merge branch 'master' into avalonia-project-system
luizzeroxis Apr 25, 2026
5f068b4
Add basic project file management. New, open, save and close projects.
luizzeroxis May 9, 2026
7bbef49
Add marked for export checkbox, mark add and unmark removed, fix reso…
luizzeroxis May 10, 2026
606ae6b
Fix project data file saving
luizzeroxis May 10, 2026
226174d
Source code from project can be viewed and edit in code editor and be…
luizzeroxis May 11, 2026
4f47415
Merge branch 'master' into avalonia-project-system
luizzeroxis May 16, 2026
e560eec
Update version to 0.9.0.0
luizzeroxis May 16, 2026
0d86043
Updated dependencies, moved to wieslawsoltes's TreeDataGrid for Avalo…
luizzeroxis May 16, 2026
80f0ac3
Control + left click to open code resource in new tab
luizzeroxis May 16, 2026
86c441c
Update filter when changing data file
luizzeroxis May 16, 2026
f08f79f
Small formatting fixes
luizzeroxis May 16, 2026
dc91cda
Trying to fix services
luizzeroxis May 30, 2026
1ccc9ea
MacOS shortcuts
luizzeroxis May 30, 2026
f736606
Add project to title bar
luizzeroxis May 30, 2026
261ad99
Increase max GPU resource size to 512 MB
luizzeroxis May 30, 2026
3202460
Workaround for slowdown in code editor on Linux
luizzeroxis Jun 5, 2026
d4ac933
Add unexported assets window
luizzeroxis Jun 12, 2026
7641d58
Combined Desktop project into main project
luizzeroxis Jun 19, 2026
87c012b
Merge branch 'master' into avalonia
luizzeroxis Jun 21, 2026
e9d2df6
Updated to 0.9.1.0 and updated dependencies
luizzeroxis Jun 21, 2026
9731743
Add lock button to room editor
luizzeroxis Jun 28, 2026
f943c74
Small fixes
luizzeroxis Jun 28, 2026
599e8c2
Add bad find references window
luizzeroxis Jul 1, 2026
9522600
Add context menu option to find references
luizzeroxis Jul 2, 2026
25a45fa
Add loader window to find references
luizzeroxis Jul 2, 2026
b9d4e69
Add version to places
luizzeroxis Jul 2, 2026
fc992f9
Add message to code editor warning if code is compiled or not
luizzeroxis Jul 2, 2026
6a61834
Improved ObservableCollectionView code
luizzeroxis Jul 4, 2026
c3c17fc
Attempt to fix focus and UI disabling problems
luizzeroxis Jul 5, 2026
547b1d3
Remove image pinning
luizzeroxis Jul 7, 2026
a5356eb
Go to column in search in code
luizzeroxis Jul 8, 2026
6e3e659
Remember last data location
luizzeroxis Jul 8, 2026
f6b6f10
Add external texture controls to texture group info view
luizzeroxis Jul 8, 2026
1ee4933
Add ctrl+scroll to scale images
luizzeroxis Jul 8, 2026
7d642b2
Add some kind of nine patch support to rendering
luizzeroxis Jul 8, 2026
6b14655
Add support to playing sounds in audio group files
luizzeroxis Jul 10, 2026
e030096
Add git version to about box
luizzeroxis Jul 12, 2026
dda04ba
Add run with data/project runner menu item (F5)
luizzeroxis Jul 12, 2026
7191fcf
Merge branch 'master' into avalonia
luizzeroxis Jul 12, 2026
d362d21
Update to 0.9.1.1 and cleanups
luizzeroxis Jul 12, 2026
b597036
Updated dependencies
luizzeroxis Jul 12, 2026
7e5fef9
Gray out disabled items in room editor list
luizzeroxis Jul 14, 2026
4847e1b
Separate data explorer view
luizzeroxis Jul 14, 2026
7422482
Add add button to string references and some tooltips.
luizzeroxis Jul 16, 2026
cb43947
Added a button to sort data list alphabetically (had to change the en…
luizzeroxis Jul 18, 2026
4210365
Add filter delay
luizzeroxis Jul 18, 2026
810c120
Moved things to data explorer view model
luizzeroxis Jul 19, 2026
e1081fd
Merge branch 'master' into avalonia
luizzeroxis Jul 19, 2026
524527d
Update to 0.9.1.2 and update dependencies
luizzeroxis Jul 19, 2026
54581e9
Fix some bugs with ObservableCollectionView
luizzeroxis Jul 19, 2026
a73f487
Fix crash when going out of bounds in room with tiles
luizzeroxis Jul 19, 2026
9b0eac2
Removed AllAssets from UndertaleRoom
luizzeroxis Jul 19, 2026
13ff5e6
Try to fix double selection when using select on list on tab, it stil…
luizzeroxis Jul 20, 2026
dcecbad
Add toggle visiblity menu item to layers in rooms
luizzeroxis Jul 20, 2026
3b6d881
Move from canton7's PropertyChanged.SourceGenerator to MVVM Toolkit
luizzeroxis Jul 21, 2026
1ee9ef3
Fix some problems with nine slices
luizzeroxis Jul 21, 2026
15a7722
Add hotkeys to tile editing
luizzeroxis Jul 21, 2026
73be5da
Add setting to disable backups
luizzeroxis Jul 22, 2026
c161a6f
Don't set code to outdated if it just decompiled or loaded
luizzeroxis Jul 22, 2026
e448e79
Add nine slice fields to sprite
luizzeroxis Jul 22, 2026
ae8be74
Use compiled bindings on item template, use dynamic only at the last …
luizzeroxis Jul 22, 2026
509d85b
Improved code editor (and removed undo)
luizzeroxis Jul 26, 2026
6692e8f
Improvements for code view and search in code go to location
luizzeroxis Jul 26, 2026
ff47add
Tab save system - when closing the tab or saving the data, it'll try …
luizzeroxis Jul 26, 2026
8ca94a5
Add extension chunk editor
luizzeroxis Jul 27, 2026
bb23020
Set highlight code editor color
luizzeroxis Jul 28, 2026
08f4634
Fix not being able to set string references
luizzeroxis Jul 29, 2026
9ce6a63
Add several checks for null resource names
luizzeroxis Jul 29, 2026
bd007d3
Add .app bundle build
luizzeroxis Jul 29, 2026
05ddcc1
Add app name and remove app menu
luizzeroxis Jul 30, 2026
9a146e0
Add tile picker for GMS1 tiles, make selected border in room keep sam…
luizzeroxis Aug 1, 2026
56b5f84
Fix duplicating flags
luizzeroxis Aug 1, 2026
0262686
Alt drag to select region in room tile picker
luizzeroxis Aug 1, 2026
80e5e5d
Shift to override grid enabled/disabled
luizzeroxis Aug 1, 2026
f1ca258
Add tile editing to legacy tiles
luizzeroxis Aug 2, 2026
1304291
Changed string reference behavior, now it only changes the current fi…
luizzeroxis Aug 2, 2026
eec5e7d
Dark window decorations on Windows 10
luizzeroxis Aug 5, 2026
e2f7077
Deleted tests
luizzeroxis Aug 7, 2026
72bd403
Add padding to load/save in texture page item
luizzeroxis Aug 8, 2026
4ed094d
Try to fix issues with loading project code
luizzeroxis Aug 9, 2026
4e8ed0e
Add reload project menu item
luizzeroxis Aug 9, 2026
3352a49
Show all constants on right click in code editor, add effect and text…
luizzeroxis Aug 9, 2026
996bc54
Replace SemaphoreSlim with proper queue
luizzeroxis Aug 10, 2026
c67ff73
Add temp file when saving
luizzeroxis Aug 13, 2026
eb19b78
Add script menu list searcher
luizzeroxis Aug 15, 2026
2e6c2e8
Rework SKImageViewer
luizzeroxis Aug 20, 2026
4dfa32e
Fix tile pickers not showing
luizzeroxis Aug 20, 2026
54d8cf0
Improve exceptions in some situations
luizzeroxis Aug 20, 2026
7440802
Fix error when going back to code tab
luizzeroxis Aug 22, 2026
4c604d5
Add character column to font editor
luizzeroxis Aug 22, 2026
cc20245
Update dependencies
luizzeroxis Aug 22, 2026
c61d708
Merge branch 'master' into avalonia
luizzeroxis Aug 22, 2026
bfd436e
Add changes from newest version: extension initialization and audio g…
luizzeroxis Aug 22, 2026
b86556c
Fixed welcome tab not showing
luizzeroxis Aug 22, 2026
b418529
Move tab stuff into separate files
luizzeroxis Aug 23, 2026
0145b0d
Simplified settings file loading
luizzeroxis Aug 23, 2026
1ebeec7
Add option to always save data in project destination
luizzeroxis Aug 27, 2026
bd3c5ae
Merge branch 'master' into avalonia
luizzeroxis Aug 27, 2026
4c782c1
Update version to 0.9.2.0
luizzeroxis Aug 27, 2026
51b6000
Write the id or name of a resource in a reference instead of dragging…
luizzeroxis Aug 28, 2026
f08b602
Add more checks for main errors
luizzeroxis Aug 28, 2026
cab656d
Slightly improved image viewer code
luizzeroxis Sep 5, 2026
29c99e5
Band-aid fix for font editor performance
luizzeroxis Sep 5, 2026
07e1ece
Cache audio group files
luizzeroxis Sep 9, 2026
e972499
New settings window
YarTom Sep 11, 2026
8f37651
Added hotkeys from original gui
YarTom Sep 11, 2026
e9bc8ab
Fix
YarTom Sep 11, 2026
b27393a
Remove Ctrl+W annotation
YarTom Sep 11, 2026
5eaed86
Merge pull request #14 from YarTom/hotkeys
luizzeroxis Sep 11, 2026
31b7f68
Added "Custom" indentation variant in settings
YarTom Sep 13, 2026
437256f
Merge commit 'refs/pull/13/head' of https://github.com/luizzeroxis/Un…
luizzeroxis Sep 13, 2026
60b0a5a
Move indent style to view model
luizzeroxis Sep 19, 2026
b7b14c4
Removed expanders from settings, moved some styles to Styles.axaml
luizzeroxis Sep 19, 2026
cedf61e
Add temp temp run
luizzeroxis Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>io.github.underminersteam.undertalemodtool</string>
<key>CFBundleName</key>
<string>UTMTA</string>
<key>CFBundleDisplayName</key>
<string>UndertaleModToolAvalonia</string>
<key>CFBundleVersion</key>
<string>0.0.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.12</string>
<key>CFBundleExecutable</key>
<string>UndertaleModToolAvalonia</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>
76 changes: 76 additions & 0 deletions .github/workflows/publish_gui_avalonia.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Publish UndertaleModToolAvalonia

on:
push:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_gui:
defaults:
run:
shell: bash

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
configuration: [Release]
bundled: [true]
singlefile: [false]
include:
- os: ubuntu-latest
rid: linux-x64
- os: macOS-latest
rid: osx-x64
- os: windows-latest
rid: win-x64

runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v7
with:
submodules: true

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
dotnet-version: 10.0.x

- name: Publish ${{ matrix.os }}
run: |
dotnet publish UndertaleModToolAvalonia -c ${{ matrix.configuration }} -r ${{ matrix.rid }} --self-contained ${{ matrix.bundled }} -p:PublishSingleFile=${{ matrix.singlefile }} --output Publish/${{ matrix.os }}
cp ./README.md ./Publish/${{ matrix.os }}
cp ./SCRIPTS.md ./Publish/${{ matrix.os }}
cp ./LICENSE.txt ./Publish/${{ matrix.os }}

- name: ubuntu-latest specific
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
echo "artifact_location=Publish/ubuntu-latest/" >> "$GITHUB_ENV"

- name: windows-latest specific
if: ${{ matrix.os == 'windows-latest' }}
run: |
echo "artifact_location=Publish/windows-latest/" >> "$GITHUB_ENV"

- name: macOS-latest specific
if: ${{ matrix.os == 'macOS-latest' }}
run: |
APP_NAME="./Publish/macOS-latest-app/UndertaleModToolAvalonia.app"

mkdir -p "$APP_NAME/Contents/MacOS"

cp "./.github/workflows/Info.plist" "$APP_NAME/Contents/Info.plist"
cp -a "./Publish/macOS-latest/." "$APP_NAME/Contents/MacOS"

echo "artifact_location=Publish/macOS-latest-app/" >> "$GITHUB_ENV"

- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: UndertaleModToolAvalonia-${{ matrix.os }}-${{ github.sha }}
path: ${{ env.artifact_location }}
23 changes: 12 additions & 11 deletions UndertaleModLib/Models/UndertaleAnimationCurve.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public enum GraphTypeEnum : uint
/// <summary>
/// The channels this animation curve has.
/// </summary>
public UndertaleSimpleList<Channel> Channels { get; set; }
public UndertaleSimpleList<Channel> Channels { get; set; } = new UndertaleSimpleList<Channel>();

/// <inheritdoc />
public void Serialize(UndertaleWriter writer)
Expand Down Expand Up @@ -158,7 +158,7 @@ public enum CurveType : uint
/// <summary>
/// The points in the channel.
/// </summary>
public UndertaleSimpleList<Point> Points { get; set; }
public UndertaleSimpleList<Point> Points { get; set; } = new UndertaleSimpleList<Point>();

/// <inheritdoc />
public void Serialize(UndertaleWriter writer)
Expand Down Expand Up @@ -230,37 +230,38 @@ public void Dispose()
/// <summary>
/// A point which can exist on a <see cref="Channel"/>.
/// </summary>
[PropertyChanged.AddINotifyPropertyChangedInterface]
public class Point : UndertaleObject
{
/// <summary>
/// The X coordinate of this point. GameMaker abbreviates this to "h".
/// </summary>
public float X;
public float X { get; set; }

/// <summary>
/// The Y coordinate of this point. GameMaker abbreviates this to "v".
/// </summary>
public float Value;
public float Value { get; set; }

/// <summary>
/// The Y position for the first bezier handle. Only used if the Channel is set to Bezier.
/// </summary>
public float BezierX0;
public float BezierX0 { get; set; }

/// <summary>
/// The Y position for the first bezier handle. Only used if the Channel is set to Bezier.
/// </summary>
public float BezierY0;
public float BezierY0 { get; set; }

/// <summary>
/// The X position for the second bezier handle. Only used if the Channel is set to Bezier.
/// </summary>
public float BezierX1;
public float BezierX1 { get; set; }

/// <summary>
/// The Y position for the second bezier handle. Only used if the Channel is set to Bezier.
/// </summary>
public float BezierY1;
public float BezierY1 { get; set; }

/// <inheritdoc />
public void Serialize(UndertaleWriter writer)
Expand Down
2 changes: 1 addition & 1 deletion UndertaleModLib/Models/UndertaleGeneralInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace UndertaleModLib.Models;
/// General info about a data file.
/// </summary>
[PropertyChanged.AddINotifyPropertyChangedInterface]
public class UndertaleGeneralInfo : UndertaleObject, IDisposable
public partial class UndertaleGeneralInfo : UndertaleObject, IDisposable
{
/// <summary>
/// Information flags a data file can use.
Expand Down
20 changes: 20 additions & 0 deletions UndertaleModLib/Models/UndertaleRoom.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1114,6 +1114,26 @@ protected void OnPropertyChanged([CallerMemberName] string name = null)
/// </remarks>
public int YOffset => Y + SpriteYOffset;

public GameObject Clone()
{
return new()
{
X = this.X,
Y = this.Y,
ObjectDefinition = this.ObjectDefinition,
InstanceID = this.InstanceID,
CreationCode = this.CreationCode,
ScaleX = this.ScaleX,
ScaleY = this.ScaleY,
Color = this.Color,
Rotation = this.Rotation,
PreCreateCode = this.PreCreateCode,
ImageSpeed = this.ImageSpeed,
ImageIndex = this.ImageIndex,
Nonexistent = this.Nonexistent,
};
}

/// <inheritdoc />
public virtual void Serialize(UndertaleWriter writer)
{
Expand Down
2 changes: 1 addition & 1 deletion UndertaleModLib/Models/UndertaleSprite.cs
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public int OriginYWrapper

public UndertaleSequence V2Sequence;

public NineSlice V3NineSlice;
public NineSlice V3NineSlice { get; set; }

/// <inheritdoc />
public event PropertyChangedEventHandler PropertyChanged;
Expand Down
2 changes: 1 addition & 1 deletion UndertaleModLib/Models/UndertaleVariable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace UndertaleModLib.Models;
/// <summary>
/// A variable entry in a GameMaker data file.
/// </summary>
// TODO: INotifyPropertyChanged
[PropertyChanged.AddINotifyPropertyChangedInterface]
public class UndertaleVariable : UndertaleNamedResource, ISearchable, UndertaleInstruction.IReferencedObject, IDisposable, IGMVariable
{
/// The name of the Variable.
Expand Down
19 changes: 15 additions & 4 deletions UndertaleModLib/UndertaleChunks.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using UndertaleModLib.Models;
using UndertaleModLib.Util;
Expand Down Expand Up @@ -237,7 +240,7 @@ internal override uint UnserializeObjectCount(UndertaleReader reader)
public class UndertaleChunkEXTN : UndertaleListChunk<UndertaleExtension>
{
public override string Name => "EXTN";
public List<byte[]> productIdData = new List<byte[]>();
public ObservableCollection<ByteArrayWrapper> productIdData { get; set; } = new ObservableCollection<ByteArrayWrapper>(); // TODO: Capitalize property

private bool checkedFor2022_6 = false;
private bool checkedFor2023_4 = false;
Expand Down Expand Up @@ -361,7 +364,7 @@ internal override void UnserializeChunk(UndertaleReader reader)

// Strange data for each extension, some kind of unique identifier based on
// the product ID for each of them
productIdData = new List<byte[]>();
productIdData.Clear();
if (UndertaleExtension.ProductDataEligible(reader.undertaleData))
{
for (int i = 0; i < List.Count; i++)
Expand Down Expand Up @@ -397,6 +400,14 @@ internal override uint UnserializeObjectCount(UndertaleReader reader)

return base.UnserializeObjectCount(reader);
}

public class ByteArrayWrapper(byte[] v)
{
public byte[] ByteArray { get; set; } = v;

public static implicit operator byte[](ByteArrayWrapper v) => v.ByteArray;
public static implicit operator ByteArrayWrapper(byte[] v) => new(v);
}
}

public class UndertaleChunkSOND : UndertaleListChunk<UndertaleSound>
Expand Down Expand Up @@ -1746,7 +1757,7 @@ public class UndertaleChunkVARI : UndertaleChunk
public uint VarCount2 { get; set; }
public uint MaxLocalVarCount { get; set; }
public bool DifferentVarCounts { get; set; }
public List<UndertaleVariable> List = new List<UndertaleVariable>();
public ObservableCollection<UndertaleVariable> List = new ObservableCollection<UndertaleVariable>();

[Obsolete]
public uint InstanceVarCount { get => VarCount1; set => VarCount1 = value; }
Expand Down Expand Up @@ -1796,7 +1807,7 @@ internal override void UnserializeChunk(UndertaleReader reader)
else
varLength = 12;
List.Clear();
List.Capacity = (int)(Length / varLength);
//List.Capacity = (int)(Length / varLength);
while (reader.Position + varLength <= startPosition + Length)
List.Add(reader.ReadUndertaleObject<UndertaleVariable>());
}
Expand Down
Loading
Loading