@@ -44,7 +44,6 @@ const regionsEl = window.regions
4444
4545// null if show all
4646function fillRegions ( filter : string | null ) {
47- console . log ( Object . keys ( regions ) )
4847 const regs : Array < { key : RegionKey , region : Region } > = [ ]
4948 for ( const regK in regions ) {
5049 if ( filter && ! regK . includes ( filter ) ) continue
@@ -73,9 +72,17 @@ function showRegion(regionName: RegionKey, region: Region) {
7372 var minY = Infinity
7473 var maxY = - Infinity
7574
75+ const layers : Set < number > = new Set ( )
76+ const layerEls : Map < number , HTMLElement > = new Map ( )
77+
78+ const markerLayerEls : Map < number , HTMLElement > = new Map ( )
79+
7680 for ( const k in region . rooms ) {
77- const room = region . rooms [ k ]
78- if ( room . data . warpPoints ?. length > 0 ) console . log ( k , room . data . warpPoints )
81+ const room = region . rooms [ k as RegionKey ]
82+ if ( ! room . data . mapPos ) continue
83+ const layer = room . data . layer
84+ layers . add ( layer )
85+
7986 for ( const s of room . screens ) {
8087 const ps = s . split ( '$' )
8188 let x = room . data . mapPos [ 0 ] / 3 - room . data . size [ 0 ] * 0.5
@@ -94,12 +101,61 @@ function showRegion(regionName: RegionKey, region: Region) {
94101 minY = Math . min ( minY , y )
95102 maxY = Math . max ( maxY , y )
96103
97- inner . append ( image )
104+ let v = layerEls . get ( layer )
105+ if ( ! v ) {
106+ v = document . createElement ( 'div' )
107+ v . classList . add ( 'room-layer' )
108+ v . style . position = 'absolute'
109+ layerEls . set ( layer , v )
110+ }
111+
112+ v . append ( image )
98113 }
99114 }
115+
116+ const layersArr = [ ...layers ]
117+ layersArr . sort ( ( a , b ) => a - b )
118+
119+ for ( const l of layersArr ) {
120+ inner . append ( layerEls . get ( l ) )
121+ }
122+
123+ let curLayer = layersArr [ 0 ]
124+ function setLayer ( l : number ) {
125+ curLayer = l
126+ for ( const ol of layersArr ) {
127+ const el = layerEls . get ( ol )
128+ if ( ! el ) continue
129+ el . style . opacity = l == ol ? '1' : '0.2'
130+ }
131+ }
132+ setLayer ( curLayer )
133+
100134 context . camera . posX = ( minX + maxX ) * 0.5
101135 context . camera . posY = ( minY + maxY ) * 0.5
102136 context . requestRender ( )
137+
138+ {
139+ window . layers . innerHTML = ''
140+
141+ const form = document . createElement ( 'form' )
142+ for ( const l of layersArr ) {
143+ const cont = document . createElement ( 'label' )
144+ const input = document . createElement ( 'input' )
145+ input . setAttribute ( 'type' , 'radio' )
146+ if ( l == curLayer ) input . setAttribute ( 'checked' , '' )
147+ input . setAttribute ( 'name' , 'layer' )
148+ input . setAttribute ( 'value' , '' + l )
149+ input . onchange = ( ) => setLayer ( l )
150+ cont . append ( input , document . createTextNode ( '' + ( l === undefined ? '<none>' : l ) ) )
151+ form . append ( cont )
152+ }
153+
154+ window . layers . append (
155+ document . createTextNode ( 'Layers:' ) ,
156+ form ,
157+ )
158+ }
103159}
104160
105161fillRegions ( null )
0 commit comments