@@ -234,6 +234,116 @@ class NwmResolver extends IdResolver {
234234 builder ++= withProjections(n~ SE & n2~ SW , IdTile (off8(id + 0x8000 + rev10), R0F0 ), when = asymmOrShared(n) && (n != n2))
235235 builder ++= withProjections(n~ SE & n2~ WS , IdTile (off8(id + 0x8000 + rev11), R0F0 ), when = asymmOrShared(n) && asymmOrShared(n2))
236236 }
237+
238+ // T-intersections
239+ // OxO NWM-Thru
240+ for (n <- Seq (Tla3 , Ave2 , Ard3 , Owr1 , Owr3 , Nrd4 )) {
241+ add(nwmRangeId(n) + 0x3000 , n~ WE & Street ~ CS ) // Street
242+ add(nwmRangeId(n) + 0x3100 , n~ WE & Road ~ CS ) // Road
243+ add(nwmRangeId(n) + 0x3200 , n~ WE & Onewayroad ~ CS ) // Onewayroad
244+ add(nwmRangeId(n) + 0x4300 , n~ WE & Avenue ~ NC , when = n != Owr1 ) // Avenue
245+ add(nwmRangeId(n) + 0x3800 , n~ NS & Tla3 ~ CE ) // TLA-3
246+ add(nwmRangeId(n) + 0x3900 , n~ NS & Ave2 ~ CE ) // AVE-2
247+ add(nwmRangeId(n) + 0x3A00 , n~ NS & Ard3 ~ EC , when = n != Owr1 && n != Tla3 ) // ARD-3a
248+ // add(nwmRangeId(n) + 0x3A80, n~NS & Ard3~EC, when = n != Owr1 && (n == Ard3)) // ARD-3b
249+ add(nwmRangeId(n) + 0x3B00 , n~ NS & Owr1 ~ CE ) // OWR-1
250+ add(nwmRangeId(n) + 0x3C00 , n~ NS & Owr3 ~ CE , when = n != Ave2 || n != Owr1 ) // OWR-3
251+ add(nwmRangeId(n) + 0x3D00 , n~ NS & Nrd4 ~ CE , when = n != Owr1 ) // NRD-4
252+ add(nwmRangeId(n) + 0x4800 , n~ NS & Tla5 ~ EC , when = n != Owr1 ) // TLA-5
253+ add(nwmRangeId(n) + 0x4A00 , n~ NS & Rd4 ~ EC , when = n != Owr1 ) // RD-4
254+ }
255+
256+ for (n <- Seq (Ard3 , Owr3 , Nrd4 )) {
257+ add(nwmRangeId(n) + 0x4B00 , n~ NS & Rd6 ~ EC ) // RD-4
258+ add(nwmRangeId(n) + 0x4C00 , n~ NS & Ave6 ~ EC ) // AVE-6
259+ add(nwmRangeId(n) + 0x4C09 , n~ NS & Tla7m ~ EC ) // TLA-M
260+ add(nwmRangeId(n) + 0x4D09 , n~ NS & Ave6m ~ EC ) // AVE-M
261+ }
262+
263+ for (n <- Seq (Nrd4 )) {
264+ add(nwmRangeId(n) + 0x4900 , n~ NS & Owr4 ~ EC ) // OWR-4
265+ add(nwmRangeId(n) + 0x4909 , n~ NS & Owr4m ~ EC ) // OWR-4m
266+ add(nwmRangeId(n) + 0x4D00 , n~ NS & Ave8 ~ EC ) // AVE-8
267+ }
268+
269+ for (n <- Seq (Tla3 )) {
270+ builder.addOne((Tla3 ~ NS ).projectLeft & Ard3 ~ CE , IdTile (0x51003A80 , R0F0 , nonMirroredOnly))
271+ builder.addOne((Tla3 ~ NS ).projectRight & Ard3 ~ EC , IdTile (0x51003A00 , R0F0 , nonMirroredOnly))
272+ }
273+
274+ for (n <- Seq (Ard3 )) {
275+ add(nwmRangeId(n) + 0x3080 , n~ EW & Street ~ CS ) // Street
276+ add(nwmRangeId(n) + 0x3180 , n~ EW & Road ~ CS ) // Road
277+ add(nwmRangeId(n) + 0x3280 , n~ EW & Onewayroad ~ CS ) // Onewayroad
278+ add(nwmRangeId(n) + 0x4380 , n~ EW & Avenue ~ NC ) // Avenue
279+ add(nwmRangeId(n) + 0x3880 , n~ SN & Tla3 ~ CE ) // TLA-3b
280+ add(nwmRangeId(n) + 0x3980 , n~ SN & Ave2 ~ CE ) // AVE-2b
281+ add(nwmRangeId(n) + 0x3A80 , n~ SN & Ard3 ~ CE ) // ARD-3b
282+ add(nwmRangeId(n) + 0x3B80 , n~ SN & Owr1 ~ CE ) // OWR-1b
283+ add(nwmRangeId(n) + 0x3C80 , n~ SN & Owr3 ~ CE ) // OWR-3b
284+ add(nwmRangeId(n) + 0x3D80 , n~ SN & Nrd4 ~ CE ) // NRD-4b
285+ add(nwmRangeId(n) + 0x4880 , n~ SN & Tla5 ~ EC ) // TLA-5b
286+ add(nwmRangeId(n) + 0x4A80 , n~ SN & Rd4 ~ EC ) // RD-4b
287+ add(nwmRangeId(n) + 0x4B80 , n~ SN & Rd6 ~ EC ) // RD-6b
288+ add(nwmRangeId(n) + 0x4C80 , n~ SN & Ave6 ~ EC ) // AVE-6b
289+ add(nwmRangeId(n) + 0x4C89 , n~ SN & Tla7m ~ EC ) // TLA-Mb
290+ add(nwmRangeId(n) + 0x4D89 , n~ SN & Ave6m ~ EC ) // AVE-Mb
291+ }
292+
293+ for (n <- Seq (Tla5 , Owr4 , Owr4m , Owr5 , Rd4 , Rd6 , Ave6 , Ave8 )) {
294+ add(nwmRangeId(n) + 0x3000 , n~ EW & Street ~ NC ) // Street Short
295+ add(nwmRangeId(n) + 0x3080 , n~ WE & Street ~ NC ) // Street Long
296+ add(nwmRangeId(n) + 0x3100 , n~ EW & Road ~ NC ) // Road Short
297+ add(nwmRangeId(n) + 0x3180 , n~ WE & Road ~ NC ) // Road Long
298+ add(nwmRangeId(n) + 0x3200 , n~ EW & Onewayroad ~ NC ) // Onewayroad Short
299+ add(nwmRangeId(n) + 0x3280 , n~ WE & Onewayroad ~ NC ) // Onewayroad Long
300+ add(nwmRangeId(n) + 0x4300 , n~ EW & Avenue ~ NC ) // Avenue Short
301+ add(nwmRangeId(n) + 0x4400 , n~ WE & Avenue ~ NC ) // Avenue Long
302+ add(nwmRangeId(n) + 0x3800 , n~ EW & Tla3 ~ NC ) // TLA-3 Short
303+ add(nwmRangeId(n) + 0x3880 , n~ WE & Tla3 ~ NC ) // TLA-3 Long
304+ add(nwmRangeId(n) + 0x3900 , n~ EW & Ave2 ~ NC ) // AVE-2 Short
305+ add(nwmRangeId(n) + 0x3980 , n~ WE & Ave2 ~ NC ) // AVE-2 Long
306+ add(nwmRangeId(n) + 0x3A00 , n~ EW & Ard3 ~ NC ) // ARD-3 Short
307+ add(nwmRangeId(n) + 0x3A80 , n~ WE & Ard3 ~ NC ) // ARD-3 Long
308+ add(nwmRangeId(n) + 0x3B00 , n~ EW & Owr1 ~ NC ) // OWR-1 Short
309+ add(nwmRangeId(n) + 0x3B80 , n~ WE & Owr1 ~ NC ) // OWR-1 Long
310+ add(nwmRangeId(n) + 0x3C00 , n~ EW & Owr3 ~ NC ) // OWR-3 Short - restrict to Owr4/m, Owr5, Rd6, Ave6, Ave8
311+ add(nwmRangeId(n) + 0x3C80 , n~ WE & Owr3 ~ NC ) // OWR-3 Long
312+ add(nwmRangeId(n) + 0x3D00 , n~ EW & Nrd4 ~ NC ) // NRD-4 Short
313+ add(nwmRangeId(n) + 0x3D80 , n~ WE & Nrd4 ~ NC ) // NRD-4 Long
314+ add(nwmRangeId(n) + 0x3E00 , n~ WE & Tla5 ~ NC ) // TLA-5 Long
315+ add(nwmRangeId(n) + 0x3F00 , n~ WE & Owr4 ~ NC ) // OWR-4 Long
316+ add(nwmRangeId(n) + 0x3F09 , n~ WE & Owr4m ~ NC ) // OWR-4m Long
317+ add(nwmRangeId(n) + 0x4000 , n~ WE & Owr5 ~ NC ) // OWR-5 Long
318+ add(nwmRangeId(n) + 0x4100 , n~ WE & Rd4 ~ NC ) // RD-4 Long
319+ add(nwmRangeId(n) + 0x4200 , n~ WE & Rd6 ~ NC ) // RD-6 Long
320+ add(nwmRangeId(n) + 0x4800 , n~ WE & Ave6 ~ NC ) // AVE-6 Long
321+ add(nwmRangeId(n) + 0x4880 , n~ WE & Tla7m ~ NC ) // TLA-M Long
322+ add(nwmRangeId(n) + 0x4900 , n~ WE & Ave8 ~ NC ) // AVE-8 Long
323+ add(nwmRangeId(n) + 0x4980 , n~ WE & Ave6m ~ NC ) // AVE-M Long
324+ }
325+
326+ // OxO NWM-End
327+ for (n <- Seq (Tla3 , Ave2 , Ard3 , Owr1 , Owr3 , Nrd4 )) {
328+ add(nwmRangeId(n) + 0x4000 , n~ CE & Street ~ NS ) // Street
329+ add(nwmRangeId(n) + 0x4100 , n~ CE & Road ~ NS ) // Road
330+ add(nwmRangeId(n) + 0x4200 , n~ CE & Onewayroad ~ NS ) // Onewayroad
331+ add(nwmRangeId(n) + 0x3300 , n~ CE & Avenue ~ SN , when = n != Owr3 ) // Avenue Short - disable for OWR-3
332+ add(nwmRangeId(n) + 0x3400 , n~ WC & Avenue ~ SN ) // Avenue Long
333+ }
334+ // OWR-5 does not have any valid T-ints with Maxis networks - just itself, RD-6, and the Triple-Tile networks
335+ for (n <- Seq (Tla5 , Owr4 , Owr4m , Rd4 , Rd6 , Ave6 , Ave8 , Tla7m , Ave6m )) {
336+ add(nwmRangeId(n) + 0x3400 , n~ NC & Avenue ~ WE , when = n != Owr5 ) // Avenue Long
337+ }
338+ // OWR-5 does not have any valid T-ints with Maxis networks - just itself, RD-6, and the Triple-Tile networks
339+ for (n <- Seq (Tla5 , Rd4 )) {
340+ add(nwmRangeId(n) + 0x4500 , n~ CE & Road ~ NS ) // Road - dummy for OWR-5/RD-6/AVE-6/AVE-8
341+ add(nwmRangeId(n) + 0x4600 , n~ CE & Onewayroad ~ NS ) // Onewayroad - dummy for OWR-5/RD-6/AVE-6/AVE-8
342+ add(nwmRangeId(n) + 0x4700 , n~ CE & Street ~ NS ) // Street
343+ // add(nwmRangeId(n) + 0x3300, n~NC & Avenue~EW) // Avenue Short - disable for all but TLA-5 and RD-4
344+ }
345+
346+
237347 }
238348
239349 builder.result()
0 commit comments