I’ve noticed somewhere along the line, anything located in the “On_Roof” location shows up over-top everything else. It may just be a matter of personal taste but I find it annoying that Emergency Lights, Solar Panels, etc that are mounted on the roof are showing up overtop my cargo containers and whatnot.
And speaking of things going overtop of other things is there some way to keep armor from changing the color of interior stuff? It’s a bit difficult to tell certain parts apart when they’re all the same color not to mention it’s a hell of an eyesore.
Since these are both things I touched last, I’m probably best to respond.
Generally, the part that would be closest to the top of the car is the one displayed. This is why wheels now show up underneath frames and quarterpanels. “on_roof” also includes turrets, which you typically don’t want to forget about. There are a couple exceptions to this, the first is armor, and the second is roofs (which are never shown because they would be on every single square).
The “armor colors the symbol of what else is there” is a hold-over from the old Cataclysm. Removing it would be super easy, as it required EXTRA work to make that happen, but it can be handy to know which parts are armored. (Not everyone builds two-block-long vehicles and armors every single piece, after all).
The deal with armor is that, unlike frames/quarterpanels, there’s only one, rather than one per direction/symbol/type, so it can’t just be displayed on its own or there’ll be (s everywhere. I’m thinking that a toggleable option might be best, but because of how Z-levels on vehicles are calculated, it might require a restart to change.
As for on_roof parts, it’s a similar problem, but more complicated to solve without providing a customized z-ordering scheme to the player and letting them specify the draw order. It sounds a little more like personal preference - when there are six or eight parts in a square and you can only draw one, you’ll hear arguments about which one should be drawn in favor of every single part. A consistent scheme (“highest on the car”) is probably best to just keep for now.
I’m not talking removing the armor color from every tile, just the innards. It used to only show on Boards and Frame, not on Floor Trunks, Trunks, Boxes, Seats, etc.
I’m also not talking about hiding things like turrets. I’m talking about hiding Police lights, solar panels, things you don’t really need to worry about unless they’re broken. As it stands turrets behave like they’re mounted inside the vehicle, not on top of it (That’d probably require some serious work to change though) so you do need to worry about them blowing away other parts. I highly doubt a red light is going to assault the frame.
I think that’s an unfortunate consequence of the game having no concept of shooting from high ground, so the projectiles from turrets will always hit your vehicle if it’s in the way. Dumb, but not an easy thing to fix.
Problem is that boards are on the same location as trunks, seats, etc, so they can’t just have a unique z-level. (And again, most people don’t armor the innards of their cars, as there’s little benefit to it - armor protects from direct damage, and shock damage ignores armor, which is a separate issue entirely.)
The whole problem still comes down to “of the 7 parts in the square, which one do you display if you can pick only one?”, and listing out every individual part in order of preference isn’t really an option - not only would it be difficult to maintain but chances are the next person along is going to disagree with the ordering.
I don’t think you’d need to worry about trunks or seats unless they’re broken, either. The most important parts would be the ones you can directly interact with (welding rig, kitchen unit, forge, etc) and parts that experience Critical Existence Failures (engines, gasoline tanks), both of which are internal and shouldn’t show up on top of other things anyway.
Anyway, the armor-colored parts are probably an easy fix with a menu option. Z-levels would probably need something where you can edit the JSON to specify the Z-level, and if you omit it it assumes a default based on the location (as it does now). “Highest on the vehicle” is then a sane default, while allowing customization by the user.
As far as deciding which element to show, I would personally favor a model that displays the element that determines my movement rate over the square. That may not be the most “important” part, but it’s the part that my character would interact with.