@@ -77,7 +77,7 @@ type WarpTrace = {
7777 fromRegion : RegionKey
7878 fromRoom : string
7979 from : TraceData
80-
80+ pos : Pos | null
8181}
8282
8383// backlinks by toRegion and toRoom
@@ -100,10 +100,20 @@ for(const regK in regions) {
100100 const room = region . rooms [ roomK ]
101101 if ( ! room . data . mapPos ) continue
102102 for ( const wp of room . data . warpPoints ) {
103- bfill ( wp . destRegion , wp . destRoom , { fromRegion : regK , fromRoom : roomK , from : { type : 'warp' , data : wp } } )
103+ bfill ( wp . destRegion , wp . destRoom , {
104+ fromRegion : regK ,
105+ fromRoom : roomK ,
106+ from : { type : 'warp' , data : wp } ,
107+ pos : wp . destPos ,
108+ } )
104109 }
105110 for ( const wp of room . data . echoSpots ) {
106- bfill ( wp . destRegion , wp . destRoom , { fromRegion : regK , fromRoom : roomK , from : { type : 'echo' , data : wp } } )
111+ bfill ( wp . destRegion , wp . destRoom , {
112+ fromRegion : regK ,
113+ fromRoom : roomK ,
114+ from : { type : 'echo' , data : wp } ,
115+ pos : wp . destPos ,
116+ } )
107117 }
108118 }
109119}
@@ -222,12 +232,13 @@ function showRegion(regionName: RegionKey, region: Region, pos?: [number, number
222232 let totalY = 0
223233 let count = 0
224234
235+ const bx = room . data . mapPos [ 0 ] / 3 - room . data . size [ 0 ] * 0.5
236+ const by = room . data . mapPos [ 1 ] / 3 - room . data . size [ 1 ] * 0.5
237+
225238 for ( const s of room . screens ) {
226239 const ps = s . split ( '$' )
227- let x = room . data . mapPos [ 0 ] / 3 - room . data . size [ 0 ] * 0.5
228- let y = room . data . mapPos [ 1 ] / 3 - room . data . size [ 1 ] * 0.5
229- x += Number ( ps [ 0 ] ) / 20
230- y += Number ( ps [ 1 ] ) / 20
240+ const x = bx + Number ( ps [ 0 ] ) / 20
241+ const y = by + Number ( ps [ 1 ] ) / 20
231242
232243 totalX += x
233244 totalY += y
@@ -247,8 +258,8 @@ function showRegion(regionName: RegionKey, region: Region, pos?: [number, number
247258 lget ( layerEls , layer ) . append ( image )
248259 }
249260
250- const mx = totalX / count
251- const my = totalY / count
261+ const mx = totalX / count + 69 * 0.5
262+ const my = totalY / count + 39 * 0.5
252263
253264 const remBacklinks = backlinks [ regionName . toLowerCase ( ) ] ?. [ k . toLowerCase ( ) ] ?. slice ( )
254265 function clearBacklink ( fromRegion : string | null , fromRoom : string | null ) {
@@ -265,39 +276,50 @@ function showRegion(regionName: RegionKey, region: Region, pos?: [number, number
265276
266277 for ( let i = 0 ; i < room . data . warpPoints . length ; i ++ ) {
267278 const it = room . data . warpPoints [ i ]
279+ const x = bx + it . pos [ 0 ] / 20
280+ const y = by + it . pos [ 1 ] / 20
268281
269282 const v = lget ( markerLayerEls , layer )
270283 const m = document . createElement ( 'div' )
271284 m . classList . add ( 'marker-warp' )
272285 if ( it . oneWay ) m . classList . add ( 'warp-oneway' )
273- m . style . left = mx + 'px'
274- m . style . top = - my + 'px'
286+ m . style . left = x + 'px'
287+ m . style . top = - y + 'px'
275288 v . append ( m )
276- markers . push ( { type : 'warp' , position : [ mx , my ] , data : it , element : m } )
289+
290+ markers . push ( { type : 'warp' , position : [ x , y ] , data : it , element : m } )
277291 clearBacklink ( it . destRegion , it . destRoom )
278292 }
279293
280294 for ( let i = 0 ; i < room . data . echoSpots . length ; i ++ ) {
281295 const it = room . data . echoSpots [ i ]
296+ const x = bx + it . pos [ 0 ] / 20
297+ const y = by + it . pos [ 1 ] / 20
282298
283299 const v = lget ( markerLayerEls , layer )
284300 const m = document . createElement ( 'div' )
285301 m . classList . add ( 'marker-echo' )
286- m . style . left = mx + 'px'
287- m . style . top = - my + 'px'
302+ m . style . left = x + 'px'
303+ m . style . top = - y + 'px'
288304 v . append ( m )
289- markers . push ( { type : 'echo' , position : [ mx , my ] , data : it , element : m } )
305+
306+ markers . push ( { type : 'echo' , position : [ x , y ] , data : it , element : m } )
290307 clearBacklink ( it . destRegion , it . destRoom )
291308 }
292309
293310 for ( let i = 0 ; remBacklinks && i < remBacklinks . length ; i ++ ) {
311+ const it = remBacklinks [ i ]
312+
313+ const x = it . pos ? bx + it . pos [ 0 ] / 20 : mx
314+ const y = it . pos ? by + it . pos [ 1 ] / 20 : my
315+
294316 const v = lget ( markerLayerEls , layer )
295317 const m = document . createElement ( 'div' )
296318 m . classList . add ( 'marker-backlink' )
297- m . style . left = mx + 'px'
298- m . style . top = - my + 'px'
319+ m . style . left = x + 'px'
320+ m . style . top = - y + 'px'
299321 v . append ( m )
300- markers . push ( { type : 'backlink' , position : [ mx , my ] , data : remBacklinks [ i ] , element : m } )
322+ markers . push ( { type : 'backlink' , position : [ x , y ] , data : remBacklinks [ i ] , element : m } )
301323 }
302324 }
303325
0 commit comments