@@ -5,145 +5,165 @@ import { importState } from './state';
5
5
import { Item , Select , Input } from '#ui' ;
6
6
import { zoomAssert , paletteLineAssert } from '#util/assertions' ;
7
7
8
- export const ImportSprites = observer ( class ImportSprites extends React . Component {
9
-
10
- render ( ) {
11
- const { scale, sprites, spriteIndex, mappings, importWidth, importHeight } = importState ;
12
-
13
- return < div className = "importer" >
14
-
15
- < div className = "menu" >
16
-
17
- < div className = "menu-section" >
18
- < Item
19
- color = "blue"
20
- inverted
21
- onClick = { importState . importOne }
22
- >
23
- Import Sprite
24
- </ Item >
25
- < Item
26
- color = "magenta"
27
- inverted
28
- onClick = { importState . importAll }
29
- >
30
- Import All
31
- </ Item >
32
- < Item
33
- color = "yellow"
34
- inverted
35
- onClick = { importState . next }
36
- >
37
- Next Sprite
38
- </ Item >
39
- < Item
40
- color = "yellow"
41
- inverted
42
- onClick = { importState . prev }
43
- >
44
- Prev Sprite
45
- </ Item >
46
-
47
- < Select
48
- options = { [
49
- { label : 'Reduce Mappings' , value : 'mappings' } ,
50
- { label : 'Reduce Tiles' , value : 'tiles' } ,
51
- ] }
52
- store = { importState }
53
- accessor = "type"
54
- onChange = { importState . changeType }
55
- />
56
-
57
- < div className = "input" >
58
- < span > Palette</ span >
59
- < Input
60
- store = { importState }
61
- accessor = "paletteLine"
62
- assert = { paletteLineAssert }
63
- onChange = { importState . changePalette }
64
- isNumber
65
- />
8
+ export const ImportSprites = observer (
9
+ class ImportSprites extends React . Component {
10
+ render ( ) {
11
+ const {
12
+ scale,
13
+ sprites,
14
+ spriteIndex,
15
+ mappings,
16
+ importWidth,
17
+ importHeight,
18
+ } = importState ;
19
+
20
+ return (
21
+ < div className = "importer" >
22
+ < div className = "menu" >
23
+ < div className = "menu-section" >
24
+ < Item
25
+ color = "blue"
26
+ inverted
27
+ onClick = { importState . importOne }
28
+ >
29
+ Import Sprite
30
+ </ Item >
31
+ { sprites . length > 1 && (
32
+ < >
33
+ < Item
34
+ color = "magenta"
35
+ inverted
36
+ onClick = { importState . importAll }
37
+ >
38
+ Import All
39
+ </ Item >
40
+ < Item
41
+ color = "yellow"
42
+ inverted
43
+ onClick = { importState . next }
44
+ >
45
+ Next Sprite
46
+ </ Item >
47
+ < Item
48
+ color = "yellow"
49
+ inverted
50
+ onClick = { importState . prev }
51
+ >
52
+ Prev Sprite
53
+ </ Item >
54
+ </ >
55
+ ) }
56
+
57
+ < Select
58
+ options = { [
59
+ {
60
+ label : 'Reduce Mappings' ,
61
+ value : 'mappings' ,
62
+ } ,
63
+ { label : 'Reduce Tiles' , value : 'tiles' } ,
64
+ ] }
65
+ store = { importState }
66
+ accessor = "type"
67
+ onChange = { importState . changeType }
68
+ />
69
+
70
+ < div className = "input" >
71
+ < span > Palette</ span >
72
+ < Input
73
+ store = { importState }
74
+ accessor = "paletteLine"
75
+ assert = { paletteLineAssert }
76
+ onChange = { importState . changePalette }
77
+ isNumber
78
+ />
79
+ </ div >
80
+
81
+ < div className = "input" >
82
+ < span > Zoom</ span >
83
+ < Input
84
+ store = { importState }
85
+ accessor = "scale"
86
+ assert = { zoomAssert }
87
+ isNumber
88
+ />
89
+ </ div >
90
+
91
+ < div className = "input" >
92
+ < span > Mappings</ span >
93
+ < span > { mappings . length } </ span >
94
+ </ div >
95
+
96
+ < div className = "input" >
97
+ < span > Tiles</ span >
98
+ < span > { importState . tileQty } </ span >
99
+ </ div >
100
+
101
+ { sprites . length > 1 && (
102
+ < div className = "input" >
103
+ < span > Sprite</ span >
104
+ < span >
105
+ { spriteIndex + 1 } / { sprites . length }
106
+ </ span >
107
+ </ div >
108
+ ) }
109
+ </ div >
110
+
111
+ < div className = "menu-section" >
112
+ { importState . path &&
113
+ < Item
114
+ color = "orange"
115
+ inverted
116
+ onClick = { importState . backToDetect }
117
+ >
118
+ Back
119
+ </ Item > }
120
+ < Item
121
+ color = "red"
122
+ inverted
123
+ onClick = { importState . cancel }
124
+ >
125
+ Cancel
126
+ </ Item >
127
+ </ div >
66
128
</ div >
67
129
68
- < div className = "input" >
69
- < span > Zoom</ span >
70
- < Input
71
- store = { importState }
72
- accessor = "scale"
73
- assert = { zoomAssert }
74
- isNumber
75
- />
76
- </ div >
77
-
78
- < div className = "input" >
79
- < span > Mappings</ span >
80
- < span > { mappings . length } </ span >
81
- </ div >
82
-
83
- < div className = "input" >
84
- < span > Tiles</ span >
85
- < span > { importState . tileQty } </ span >
86
- </ div >
87
-
88
- < div className = "input" >
89
- < span > Sprite</ span >
90
- < span > { spriteIndex + 1 } / { sprites . length } </ span >
91
- </ div >
92
-
93
- </ div >
94
-
95
- < div className = "menu-section" >
96
- < Item
97
- color = "orange"
98
- inverted
99
- onClick = { importState . backToDetect }
100
- >
101
- Back
102
- </ Item >
103
- < Item
104
- color = "red"
105
- inverted
106
- onClick = { importState . cancel }
107
- >
108
- Cancel
109
- </ Item >
110
- </ div >
111
-
112
- </ div >
113
-
114
-
115
- < div className = "container" >
116
- < div
117
- className = "workspace"
118
- style = { {
119
- width : 0 ,
120
- height : 0 ,
121
- left : '50%' ,
122
- top : '50%' ,
123
- transform : `
124
- scale(${ scale } )
125
- translate(-${ importWidth / 2 } px,-${ importHeight / 2 } px)
126
- ` ,
127
- } } >
128
- < canvas
129
- key = { `import-${ spriteIndex } ` }
130
- ref = { importState . canvasRefImport }
131
- className = "import-canvas"
132
- />
133
- { mappings . map ( ( { x, y, width, height} , i ) => (
130
+ < div className = "container" >
134
131
< div
132
+ className = "workspace"
135
133
style = { {
136
- top : y ,
137
- left : x ,
138
- width : ( 8 * width ) - 1 ,
139
- height : ( 8 * height ) - 1 ,
134
+ width : 0 ,
135
+ height : 0 ,
136
+ left : '50%' ,
137
+ top : '50%' ,
138
+ transform : `
139
+ scale(${ scale } )
140
+ translate(-${ importWidth / 2 } px,-${
141
+ importHeight / 2
142
+ } px)
143
+ ` ,
140
144
} }
141
- key = { i }
142
- className = "import-mapping"
143
- />
144
- ) ) }
145
+ >
146
+ < canvas
147
+ key = { `import-${ spriteIndex } ` }
148
+ ref = { importState . canvasRefImport }
149
+ className = "import-canvas"
150
+ />
151
+ { mappings . map ( ( { x, y, width, height } , i ) => (
152
+ < div
153
+ style = { {
154
+ top : y ,
155
+ left : x ,
156
+ width : 8 * width - 1 ,
157
+ height : 8 * height - 1 ,
158
+ } }
159
+ key = { i }
160
+ className = "import-mapping"
161
+ />
162
+ ) ) }
163
+ </ div >
164
+ </ div >
145
165
</ div >
146
- </ div >
147
- </ div > ;
148
- }
149
- } ) ;
166
+ ) ;
167
+ }
168
+ } ,
169
+ ) ;
0 commit comments