As for the map layers, I don't think giving options is the right solution. I would rather make the tool smarter and give people less options. Giving people a new option for every little thing only causes more usage problems.
I use two map sets, Sony's and Mapfiend's. I have not come across overlap when using one of the two. Can you give me an example of where there is label overlap?
If there is sufficient reason to add more smarts for this, I would probably do it by keeping track of labels added and not add them more than once. For example, if there were a label "Joe's Tavern" in file Zone_2.txt, and a label "Joe's Tavern" in file Zone_3.txt, then I could add smarts where it would not draw both of these (since the x,y coords may be slightly different).
Any other suggestions where I might be able to intelligently apply or not apply a label are welcome. This is what I am thinking right now:
It appears that mapfiend's maps have most, if not all, labels in layer 2. Here is a list of some of those entries from Crescent Reach:
Code:
P 1131, 461, -140, 0, 0, 0, 3, Spells_&_Guild_Masters_(All)
P 1453, 1262, -91, 0, 0, 0, 2, soulbinder
P 1596, 1422, 30, 0, 0, 0, 2, Naeema_(alchemy)
P 2798, 1103, -101, 0, 240, 0, 3, To_Goru`kar_Mesa
P 2085, 909, -164, 0, 0, 0, 1, Guildmasters
It appears the numbers are X,Y,Z,R,G,B,L,T where L=Layer and T is the text to display. What I could probably do is, depending on the Zoom level, display labels from just Layer 1, 1 and 2, or 1, 2 and 3 (if the person was zoomed way in). I could also probably discover how cluttered the text would appear at any zoom level, and only display labels that wont clutter.
I personally *hate* the in-game map with the 1/2/3 buttons. I think it is a lazy solution. I much prefer the google maps approach where more detail is automatically displayed as you zoom in... and I don't think it is that much more coding to add something like that. It's actually more complicated to give people options, and harder to maintain down the road.
A fellow programmer once told me, K.I.S.S., which stands for 'Keep It Simple, Stupid'. Good advice when programming user interfaces. Most people are fairly simple when it comes to computers. Imagine if your car dashboard looked like that of an airplane cockpit. Most people probably would not be able to drive in that case. So I am all about less options, more smarts... within reason. The other part of the equation is that the last 10% of automation consumes 90% of the coding effort. In other words, you can automate 90% of anything with relatively simple code. The last 10% needs to be available to the user as options. A good example would be if I were to make MySEQ try and do *everything* automatically. It would have to scan the network looking for running servers, then once they were running, automatically zoom in and track the player, automatically adjusting zoom/pan as you walked around the zone. It would also check for CPU usage and auto lower details accordingly. Doing all this is very code intensive, and much better left to the user as options. However, leaving *everything* to options makes the user interface look like an airplane cockpit, which is just as bad.
FWIW, I have added the ability to attach multiple clients/servers. You still need a client and server running for each instance of EQ, but the server will detect all running EQs and pass a list back to the client. The client then can pick which instance it wants to monitor. The server will auto-bump its port number if the port is in use, so you can run 5 instances of the server from the same folder before it won't run anymore. You will need to point each client to a unique server, and then pick the EQ instance you want to monitor. I think I can add some more smarts such that once you do it once, it will remember and try and smart-attach the next time.