TMPE
TMPE copied to clipboard
Future lane connector pimping
Separated out from https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/pull/635#issuecomment-583709057
Further pimping of lane connectors:
In complex situations, like a roundabout (I know this stuff could be done with lane arrows, but...) it gets difficult to distinguish the lanes the user is currently connecting from all the other lane connections. In image above, there are two outgoing lanes connected to red incoming lane, but only one of them is obvious (due to white sheath).
For currently selected incoming lane:
Everything coming out of the currently selected incoming lane = white.
- The dragged "wire" that follows mouse should be plain white:
- This will create visual cue that you drag white wire to white hole/sheath
- Border of dragged white wire would be color of the incoming lane
- Connection wires between the selected incoming lane and its outgoing lanes should be white
- This helps distinguish them from coloured wires of the other lanes at the junction
- Connection wires from other (non-selected) incoming lanes retain the colour of their incoming lanes. They could possibly be a bit thinner too?
- If user hovers mouse over outgoing lane that is connected to currently selected incoming lane:
- Gives visual feedback that clicking will have different result (ie. disconnect instead of connect)
- Clicking on that outgoing lane breaks the connector (existing functionality)
Also:
- If user hovers over non-selected incoming lane, it's outgoing lanes get sheaths with same colour as the hovered incoming lane
- Allows user to quickly visualise outgoing route of any other incoming lane
- This should work for all incoming lanes visible to the camera - ie. not just current junction
- Encourages playful inspection of the local lane routing
- Clicking any other incoming lane should select it
- Even if I already have another lane selected
- Even if it's in another node or junction!
- When I finish editing the current incoming lane, I can switch to another by just clicking it!
- No need for right-click exiting out of the current lane (althrough right click functionality would be retained as it's useful to be able to de-select incoming lanes and nodes).
So now we have:
- Outgoing stuff for currently slected incoming lane = white
- Can hover any incoming lane in camera to quickly visualise it's outgoing stuff
- Can click any incoming lane in camera to switch selection focus to it
- Can still right-click to back out of lane / node selection
Then, later work:
- When an incoming lane is selected or hovered:
- Forward trace the outgoing lanes - show what they lead to further down the road (eg. up to next junction node)
- This means if there's lane changes in non-junction nodes, you'd see the trace spreading out to other lanes and those get traced too
- Back-trace the incoming lane to show what can reach it (up to next junction)
- It too could end up with a branching set of lanes that narrow as they get closer to the incoming lane
- Forward trace the outgoing lanes - show what they lead to further down the road (eg. up to next junction node)
- If any outgoing lane, for currently selected node, is hovered, show it's forward-trace
- So if I'm about to connect my current incoming lane to an outgoing lane I get feedback as to where that will lead further down the road :)
- Forward trace would be white, backtrace would be color of incoming lane?
- Maybe have slider in mod options (and/or keyboard shortcut) to choose how far the trace extends?
- Defined in number of segments rather than junctions?
There are some obvious things to consider with the back/forward tracing:
- Recursion prevention
- Preventing multiple lane highlights for same lane
- Risk of lag / performance issues
Also....
- Lanes still controlled by lane arrows should also be visualsied
- Thin line connectors show which outgoing lanes are applicable
- Outgoing lanes that don't have any incoming connection (either via lane connector or lane arrow) should be highlighted somehow to warn user that nothing can reach them
Incoming could mean two things (I know which one you mean but it helps to clarify):
- coming into the segment ❌
- coming into the junction ✔️
according to the picture I feel like some changes has been made in the PR since you have created this issue.
the picture bellow shows how lane connections look like after the PR:
The dragged "wire" that follows mouse should be plain white: If user hovers mouse over outgoing lane that is connected to currently selected incoming lane ... Gives visual feedback that clicking will have different result (ie. disconnect instead of connect)
I like a white hollow wire. its easier to see what is underneath when we connect disconnect stuff.
Connection wires between the selected incoming lane and its outgoing lanes should be white ... Connection wires from other (non-selected) incoming lanes retain the colour of their incoming lanes. They could possibly be a bit thinner too?
right now floating wire has a white sheath. wires from selected lane have grey sheath, are thicker, and come on top. wires from other lanes have black sheath. except for the floating wire i think the rest are fine.
If user hovers over non-selected incoming lane, it's outgoing lanes get sheaths with same colour as the hovered incoming lane
maybe they could be white?
Clicking any other incoming lane should select it Even if I already have another lane selected
sounds cool but let me play devils advocate:
- if user clicks on bidirectional lane, its unclear if user wants to make a new lane connection or just select a new lane. but I think he wants to make a new lane connection.
- it also feels weird that you can click on a lane when the floating wire is following the mouse.
Yeah, that idea won't work now we have unidirectional connectors and bidirectional lanes to think about.
this issue is a bit hard to follow. it might be nice to create a task list. some of the stuff in discussed here are already addressed.