@@ -107,6 +107,34 @@ public void SaveImagePNG(Stream outfile)
107
107
visualOffProp . SetValue ( roomCanvas , prevOffset ) ;
108
108
}
109
109
110
+
111
+ public RenderTargetBitmap GetTileEditorPreview ( Layer tilemap )
112
+ {
113
+ if ( roomCanvas is null )
114
+ {
115
+ if ( MainWindow . FindVisualChild < Canvas > ( RoomGraphics ) is Canvas canv && canv . Name == "RoomCanvas" )
116
+ roomCanvas = canv ;
117
+ else
118
+ throw new Exception ( "\" RoomCanvas\" not found." ) ;
119
+ }
120
+
121
+ bool prevVisible = tilemap . IsVisible ;
122
+ tilemap . IsVisible = false ;
123
+ object prevOffset = visualOffProp . GetValue ( roomCanvas ) ;
124
+ visualOffProp . SetValue ( roomCanvas , new Vector ( 0 , 0 ) ) ;
125
+ Brush gridOpacMask = roomCanvas . OpacityMask ;
126
+ roomCanvas . OpacityMask = null ;
127
+
128
+ RenderTargetBitmap target = new ( ( int ) roomCanvas . RenderSize . Width , ( int ) roomCanvas . RenderSize . Height , 96 , 96 , PixelFormats . Pbgra32 ) ;
129
+
130
+ target . Render ( roomCanvas ) ;
131
+
132
+ tilemap . IsVisible = prevVisible ;
133
+ visualOffProp . SetValue ( roomCanvas , prevOffset ) ;
134
+ roomCanvas . OpacityMask = gridOpacMask ;
135
+ return target ;
136
+ }
137
+
110
138
private void ExportAsPNG_Click ( object sender , RoutedEventArgs e )
111
139
{
112
140
SaveFileDialog dlg = new ( ) ;
@@ -1981,6 +2009,54 @@ public static void SetupRoomWithGrids(UndertaleRoom room)
1981
2009
room . GridThicknessPx = 1 ;
1982
2010
room . SetupRoom ( ! Settings . Instance . GridWidthEnabled , ! Settings . Instance . GridHeightEnabled ) ;
1983
2011
}
2012
+
2013
+ private void EditTiles_Click ( object sender , RoutedEventArgs e )
2014
+ {
2015
+ if ( ObjectEditor . Content is Layer lay )
2016
+ {
2017
+ Layer . LayerTilesData data = lay . TilesData ;
2018
+
2019
+ if ( data . Background is null )
2020
+ {
2021
+ mainWindow . ShowMessage ( "The layer must have a tileset set!" ) ;
2022
+ return ;
2023
+ }
2024
+ if ( data . TilesX <= 0 )
2025
+ {
2026
+ mainWindow . ShowMessage ( "The layer's horizontal size must be larger than 0 tiles!" ) ;
2027
+ return ;
2028
+ }
2029
+ if ( data . TilesY <= 0 )
2030
+ {
2031
+ mainWindow . ShowMessage ( "The layer's horizontal size must be larger than 0 tiles!" ) ;
2032
+ return ;
2033
+ }
2034
+
2035
+ UndertaleTileEditor TileEditor = new UndertaleTileEditor ( lay ) ;
2036
+ TileEditor . RoomPreview = GetTileEditorPreview ( lay ) ;
2037
+ TileEditor . ShowDialog ( ) ;
2038
+ }
2039
+ }
2040
+
2041
+ private void AutoSizeTile_Click ( object sender , RoutedEventArgs e )
2042
+ {
2043
+ if ( ObjectEditor . Content is Layer lay && this . DataContext is UndertaleRoom room )
2044
+ {
2045
+ Layer . LayerTilesData data = lay . TilesData ;
2046
+
2047
+ if ( data . Background is null )
2048
+ {
2049
+ mainWindow . ShowMessage ( "The layer must have a tileset set!" ) ;
2050
+ return ;
2051
+ }
2052
+ data . TilesX = ( uint ) Math . Ceiling (
2053
+ Convert . ToDouble ( room . Width ) / Convert . ToDouble ( data . Background . GMS2TileWidth )
2054
+ ) ;
2055
+ data . TilesY = ( uint ) Math . Ceiling (
2056
+ Convert . ToDouble ( room . Height ) / Convert . ToDouble ( data . Background . GMS2TileHeight )
2057
+ ) ;
2058
+ }
2059
+ }
1984
2060
}
1985
2061
1986
2062
public partial class RoomCanvas : Canvas
0 commit comments