We don't NEED a menu chooser, I'd actually prefer new crosshair images made specifically for the weapons, so one can recognize the weapons by it.
Laser: a "star" shape (eight or six lines converging at the center)
Shotgun would e.g. be something circly.
MG a cross with slightly emphasized end points (to symbolize that the MG does spread).
Mortar could be some oval that's higher than wide (to symbolize the grenade a little).
Electro woulld be a small circle with some rays going out of it (like the electro secondary projectile).
Crylink - three lines from the center, going up, 120 degrees from that left, 120 degrees from that right (as that's where the primary particles will go).
Nex - a dot in the center, a small thin circle around it, a larger thin circle around that.
Hagar - a circle with three vertical lines in it, symbolizing the fast rocket firing.
Rocket Launcher - circle with a X in it (as rockets tend to have such "wings")
Porto - a circle, partially red, partially blue. This one uses a targeting laser, and needs no crosshair at all for aiming.
MinstaNex - a +, symbolizing exact aim, with a small circle inside
Seeker - a filled circle like shotgun, with a center dot, and four short lines from the outside into it, symbolizing the homing missiles.
HLAC - a design based on the laser crosshair, but feeling thicker and less exact. Maybe a circle, the 6 "star" lines around it, but the horizontal one going THROUGH the circle and being longer?
Camping Rifle: a + cross, with scales to symbolize exact aim.
It would be ideal if these crosshairs were tuned to match the actual spread of the weapons at the default fov (90), if you can manage that.
The ideas, quickly drawn:
http://emptyset.endoftheinternet.org/~r ... 9624bb.jpg
Note that each crosshair image must contain pixels of two different colors (usually white and black), so it is visible on any background.
Another thing you MUST get rid of before this can go into Nexuiz svn is the overwriting of the crosshair_ cvars. Basically, this means you have to draw the crosshair from csqc code, and not let the engine do it. This is because this cvar is being used by the players for a long time, and this patch is no good reason to break their config because it can be done a better way (csqc). Also, doing a cvar_set every frame is very annoying to people who are debugging stuff, as this prints a message if the developer cvar is high enough (this is also why the v_flipped cvar_set per frame will go shortly before release).