@@ -193,11 +193,7 @@ const Tile = ({
193193 ) ;
194194} ;
195195
196- export type TileMapTileSelection =
197- | { |
198- kind : 'multiple' ,
199- coordinates : TileMapCoordinates [ ] ,
200- | }
196+ export type TileMapPaintingSelection =
201197 | { |
202198 kind : 'rectangle' ,
203199 coordinates : TileMapCoordinates [ ] ,
@@ -215,20 +211,38 @@ export type TileMapTileSelection =
215211 coordinates : TileMapCoordinates [ ] ,
216212 flipHorizontally : boolean ,
217213 flipVertically : boolean ,
214+ | } ;
215+
216+ export type TileMapTileSelection =
217+ | { |
218+ kind : 'multiple' ,
219+ coordinates : TileMapCoordinates [ ] ,
218220 | }
221+ | TileMapPaintingSelection
219222 | { |
220223 kind : 'picker' ,
221224 | }
222225 | { |
223226 kind : 'erase' ,
224227 | } ;
225228
229+ export const getTileMapPaintingSelection = (
230+ selection : ?TileMapTileSelection
231+ ) : ?TileMapPaintingSelection => {
232+ if ( ! selection ) return null ;
233+ if (
234+ selection . kind === 'rectangle' ||
235+ selection . kind === 'freehand' ||
236+ selection . kind === 'floodfill'
237+ ) {
238+ return selection ;
239+ }
240+ return null ;
241+ } ;
242+
226243export const isTileMapPaintingSelection = (
227244 selection : TileMapTileSelection
228- ) : boolean % checks =>
229- selection . kind === 'rectangle' ||
230- selection . kind === 'freehand' ||
231- selection . kind === 'floodfill' ;
245+ ) : boolean => ! ! getTileMapPaintingSelection ( selection ) ;
232246
233247/**
234248 * Creates a tile selection with the picked tile coordinates,
@@ -240,17 +254,16 @@ export const createSelectionWithPreviousTool = (
240254 coordinates : TileMapCoordinates [ ] ,
241255 defaultFlips : { | horizontal : boolean , vertical : boolean | }
242256) : TileMapTileSelection => {
257+ const previousPaintingTool = getTileMapPaintingSelection ( previousTool ) ;
243258 const kind =
244- previousTool && isTileMapPaintingSelection ( previousTool )
245- ? previousTool . kind
246- : 'rectangle' ;
259+ previousPaintingTool ? previousPaintingTool . kind : 'rectangle' ;
247260 const flipHorizontally =
248- previousTool && isTileMapPaintingSelection ( previousTool )
249- ? previousTool . flipHorizontally
261+ previousPaintingTool
262+ ? previousPaintingTool . flipHorizontally
250263 : defaultFlips . horizontal ;
251264 const flipVertically =
252- previousTool && isTileMapPaintingSelection ( previousTool )
253- ? previousTool . flipVertically
265+ previousPaintingTool
266+ ? previousPaintingTool . flipVertically
254267 : defaultFlips . vertical ;
255268
256269 return {
@@ -311,6 +324,10 @@ const TileSetVisualizer = ({
311324 setLastSelection ,
312325 ] = React . useState < ?TileMapTileSelection > ( null ) ;
313326 const previousToolRef = React . useRef < ?TileMapTileSelection > ( null ) ;
327+ const tileMapPaintingSelection = getTileMapPaintingSelection (
328+ tileMapTileSelection
329+ ) ;
330+ const lastPaintingSelection = getTileMapPaintingSelection ( lastSelection ) ;
314331 const tilesetContainerRef = React . useRef < ?HTMLDivElement > ( null ) ;
315332 const tilesetAndTooltipContainerRef = React . useRef < ?HTMLDivElement > ( null ) ;
316333 const [ tooltipContent , setTooltipContent ] = React . useState < ?{ |
@@ -655,14 +672,11 @@ const TileSetVisualizer = ({
655672
656673 React . useEffect (
657674 ( ) => {
658- if (
659- tileMapTileSelection &&
660- isTileMapPaintingSelection ( tileMapTileSelection )
661- ) {
662- setLastSelection ( tileMapTileSelection ) ;
675+ if ( tileMapPaintingSelection ) {
676+ setLastSelection ( tileMapPaintingSelection ) ;
663677 }
664678 } ,
665- [ tileMapTileSelection ]
679+ [ tileMapPaintingSelection ]
666680 ) ;
667681
668682 const onHoverAtlas = React . useCallback (
@@ -777,9 +791,8 @@ const TileSetVisualizer = ({
777791 onSelectTileMapTile ( {
778792 kind : 'freehand' ,
779793 coordinates :
780- lastSelection &&
781- isTileMapPaintingSelection ( lastSelection )
782- ? lastSelection . coordinates
794+ lastPaintingSelection
795+ ? lastPaintingSelection . coordinates
783796 : [ { x : 0 , y : 0 } , { x : 0 , y : 0 } ] ,
784797 flipHorizontally : shouldFlipHorizontally ,
785798 flipVertically : shouldFlipVertically ,
@@ -810,9 +823,8 @@ const TileSetVisualizer = ({
810823 : {
811824 kind : 'rectangle' ,
812825 coordinates :
813- lastSelection &&
814- isTileMapPaintingSelection ( lastSelection )
815- ? lastSelection . coordinates
826+ lastPaintingSelection
827+ ? lastPaintingSelection . coordinates
816828 : [ { x : 0 , y : 0 } , { x : 0 , y : 0 } ] ,
817829 flipHorizontally : shouldFlipHorizontally ,
818830 flipVertically : shouldFlipVertically ,
@@ -841,9 +853,8 @@ const TileSetVisualizer = ({
841853 onSelectTileMapTile ( {
842854 kind : 'floodfill' ,
843855 coordinates :
844- lastSelection &&
845- isTileMapPaintingSelection ( lastSelection )
846- ? lastSelection . coordinates
856+ lastPaintingSelection
857+ ? lastPaintingSelection . coordinates
847858 : [ { x : 0 , y : 0 } , { x : 0 , y : 0 } ] ,
848859 flipHorizontally : shouldFlipHorizontally ,
849860 flipVertically : shouldFlipVertically ,
@@ -912,16 +923,14 @@ const TileSetVisualizer = ({
912923 onClick = { e => {
913924 const newShouldFlipHorizontally = ! shouldFlipHorizontally ;
914925 setShouldFlipHorizontally ( newShouldFlipHorizontally ) ;
915- if (
916- ! ! tileMapTileSelection &&
917- isTileMapPaintingSelection ( tileMapTileSelection )
918- ) {
919- const paintingSelection = tileMapTileSelection ;
926+ if ( tileMapPaintingSelection ) {
920927 const selection : TileMapTileSelection = {
921- kind : ( paintingSelection . kind : any ) ,
922- coordinates : ( paintingSelection . coordinates : TileMapCoordinates [ ] ) ,
928+ kind : ( tileMapPaintingSelection . kind : any ) ,
929+ coordinates : (
930+ tileMapPaintingSelection . coordinates : TileMapCoordinates [ ]
931+ ) ,
923932 flipHorizontally : newShouldFlipHorizontally ,
924- flipVertically : paintingSelection . flipVertically ,
933+ flipVertically : tileMapPaintingSelection . flipVertically ,
925934 } ;
926935 onSelectTileMapTile ( selection ) ;
927936 }
@@ -942,15 +951,13 @@ const TileSetVisualizer = ({
942951 onClick = { e => {
943952 const newShouldFlipVertically = ! shouldFlipVertically ;
944953 setShouldFlipVertically ( newShouldFlipVertically ) ;
945- if (
946- ! ! tileMapTileSelection &&
947- isTileMapPaintingSelection ( tileMapTileSelection )
948- ) {
949- const paintingSelection = tileMapTileSelection ;
954+ if ( tileMapPaintingSelection ) {
950955 const selection : TileMapTileSelection = {
951- kind : ( paintingSelection . kind : any ) ,
952- coordinates : ( paintingSelection . coordinates : TileMapCoordinates [ ] ) ,
953- flipHorizontally : paintingSelection . flipHorizontally ,
956+ kind : ( tileMapPaintingSelection . kind : any ) ,
957+ coordinates : (
958+ tileMapPaintingSelection . coordinates : TileMapCoordinates [ ]
959+ ) ,
960+ flipHorizontally : tileMapPaintingSelection . flipHorizontally ,
954961 flipVertically : newShouldFlipVertically ,
955962 } ;
956963 onSelectTileMapTile ( selection ) ;
@@ -998,23 +1005,21 @@ const TileSetVisualizer = ({
9981005 y = { hoveredTile . y }
9991006 />
10001007 ) }
1001- { tileMapTileSelection &&
1002- isTileMapPaintingSelection ( tileMapTileSelection ) &&
1003- displayedTileSize && (
1008+ { tileMapPaintingSelection && displayedTileSize && (
10041009 < Tile
10051010 key = { `selected-tile` }
10061011 highlighted
10071012 size = { displayedTileSize }
1008- x = { tileMapTileSelection . coordinates [ 0 ] . x }
1009- y = { tileMapTileSelection . coordinates [ 0 ] . y }
1013+ x = { tileMapPaintingSelection . coordinates [ 0 ] . x }
1014+ y = { tileMapPaintingSelection . coordinates [ 0 ] . y }
10101015 width = {
1011- tileMapTileSelection . coordinates [ 1 ] . x -
1012- tileMapTileSelection . coordinates [ 0 ] . x +
1016+ tileMapPaintingSelection . coordinates [ 1 ] . x -
1017+ tileMapPaintingSelection . coordinates [ 0 ] . x +
10131018 1
10141019 }
10151020 height = {
1016- tileMapTileSelection . coordinates [ 1 ] . y -
1017- tileMapTileSelection . coordinates [ 0 ] . y +
1021+ tileMapPaintingSelection . coordinates [ 1 ] . y -
1022+ tileMapPaintingSelection . coordinates [ 0 ] . y +
10181023 1
10191024 }
10201025 />
0 commit comments