Hey guys what up.. I have some ideas for you to chew on.. (Attached)
I have found, what I think is, a better way to plugin options into the EQ2Map project.. I have modded it so that you can have 4 "plugins" installed at one time.. Changes in EQ2UI_Mainhud_Map.xml are minimal for this.. 4 includes and 4 lines of script
I have also made some examples (Edit: not 100% done with any, but they all work well enough to install and check out)
There's 6 or 7 examples but they are not polished just wanted to get them in there to show some examples on using them and to test it..
I also implemented a minimap feature.. Changes for this are many.
Edit: I'm not 100% done with everything yet.. Still needs polish.. But it's in a good enough shape to be shown..
off hand I remember:
I had to move the Icons out of QM_Overlay into the MapPage and renamed it QM_Icons(So they could be dragged with it)
Had to change a lot of scripts in quite a few files for this.. (Under_ files)
I added two buttons to the titlebar for minimap feature.. Also had to add two windows to make a different style window when in mini-mode.. (Window frame and title bar needs to be on way top)
I changed the way the MapBorder works.. (Seperated into 2 windows(files) MapOverlay and MapUnderlay)
I changed the way QM_MinimizeButton and QM_RestoreButton worked so I could "press" them through my scripts..
I also added a MapImageOverlay.. I use this in one of the options to make the maps a little darker.. I don't like them so bright..
I'm sure you will rip it apart if you like it If you have any questions let me know..
Ok, here's the deal: I'll look over your code and give it a fair analysis, but keep in mind that the structure was decided upon during about a month of testing and brainstorming. There's already a couple things that I can comment on before even reviewing the code.
The minimap feature by default is a no. It's far above and beyond the default map window functionality. To have it as an optional mod is good though as long as it can be worked into a decent plug-in form.
Moving the overlay to within MapPage completely destroys the idea behind the overlays. Rather than those POIs being hidden by the fog, you can see them upon zoning in (into a new zone where none of the fog has been uncovered) because they are a layer above the fog (and unfortunately the location arrow).
The changes to mapborder, minimize button, added optional plug-ins and the darkening overlay (for people who have their brightness turned up too high perhaps?) I will go over with a fine-tooth comb (well, I will really go over it all very carefully). So I'll let ya know what's up later.
Ok, here's the deal: I'll look over your code and give it a fair analysis, but keep in mind that the structure was decided upon during about a month of testing and brainstorming.
Ahh I see, I didn't think any think was set in stone yet.. I tried not to hack it up too bad.. Just what was absolutely needed for the minimap.. But thanks for looking
Quote:
Originally Posted by Quib
There's already a couple things that I can comment on before even reviewing the code.
The minimap feature by default is a no. It's far above and beyond the default map window functionality. To have it as an optional mod is good though as long as it can be worked into a decent plug-in form.
I didn't mean for it to be a standard feature.. Could make a plugin that makes the buttons visible.. I tried to implement it in a way that it would work with any skin, as long as they re-skinned the two dockwindow pieces.. Also, I didn't think you were trying to keep it "simple" or mimic the default so closely..
I just can't stand that huge map window (It should be resizable and have scrollbars)
Quote:
Originally Posted by Quib
Moving the overlay to within MapPage completely destroys the idea behind the overlays. Rather than those POIs being hidden by the fog, you can see them upon zoning in (into a new zone where none of the fog has been uncovered) because they are a layer above the fog (and unfortunately the location arrow).
Unfortunately, unless you move those icon's, I can't really see a way of making a minimap feature.. Unless you figure out how to move the map and overlay with buttons which could work.. I set it up so you grab the MapPage to move it.. If the icons are seperate they won't move with the map.. Too bad there's no OnMoved event
I'm pretty sure the location arrow part can be fixed.. As for the POI's being under the fog that's closer to the default map window functionality J/K
Is there a way to remove the fog all togethether? It would make the all the maps work the same (no fog, like all added maps?)
Quote:
Originally Posted by Quib
The changes to mapborder, minimize button, added optional plug-ins and the darkening overlay (for people who have their brightness turned up too high perhaps?) I will go over with a fine-tooth comb (well, I will really go over it all very carefully). So I'll let ya know what's up later.
Quib
The mapborder changes were needed to make the minimap. No other reason.
I can tell you it's not my brightness.. Most people tell me my settings are too dark.. I just think the map parchment paper is blaringly bright.. The only way to darken it is to darken the whole images
The plugin system is basically the same as before except it uses 4 windows as pluging slots..
Ok, your minimap is impressive, I'm still sorting through everything it needs to be functional.
The fog issue has come up a few times, the "best" way to remove the fog results in the users location arrow not showing up until they've zoned once (or changed halves of the map in two+ map zones). This is an unacceptable kludge; the other problem is very specific conditions have to be met for it to work at all: the map window must be closed when camping, and opened once before the first zoning. Also, I'm not sure SOE really approves of us defeating the fog layer, it's actual pretty hard to get around.
Here're the three basic goals goals I have in mind when working on the format of the map window:
1) Same size as default (this one seems to bother mod authors the most; the style sets allow this to be modified, but by default the map window should LOOK just like the default map window. We're adding maps not trying to dictate the users UI style).
2) Pack it full of information that isn't in the default UI elsewhere, but don't repeat data (this is why, by default, the map window doesn't have a label for your current loc, though I must say, your when-mouse-isn't-over path finder thing was really clever).
3) Avoid changing default functionality of the map window beyond a certain point (which is arbitrary, this is the most wishy-washy of my rules).
The minimap conflicts with goal 1; a second window increases the screen real-estate of the map window, even if it can be hidden. The quests window is an example of a feature that will increase the map window size, but will be an optional download. The minimize button conflicts with goal 1 but is being left in due to a grandfather clause; it's been there since really early on. I should probably make it a plug-in, but it's not high on my priority list.
Goal 2 actually also conflicts with the minimap; it's repeating data already visible in the map window. Keep in mind I love the idea of a minimap and will be using one myself (I've played with Zonx's minimap in various forms quite a bit). So my arguments against one aren't due to a personal aversion to a minimap in particular.
The minimap really doesn't conflict functionality-wise I guess, it's just another map. The no-closing-on-escape violates this goal, but, like the minimize button, it's been there since early on. I'm leaving this one in and just relying on an optional download to restore closing-on-escape. The pathfinder doesn't conflict with this because it's simply another POI; the user can just plug in the loc data manually.
Anyway, I'm not dismissing your work or anything, I'd like to implement all of it in some form or another most likely, it'll just be a bit; we're 99% done with the full auto-updating system and so am tied up with bug shooting that right now.
Ok, your minimap is impressive, I'm still sorting through everything it needs to be functional.
Just remember it's just a preview.. I uploaded it to see if it's worth the effort for me to pursue..
Quote:
Originally Posted by Quib
The fog issue has come up a few times, the "best" way to remove the fog results in the users location arrow not showing up until they've zoned once (or changed halves of the map in two+ map zones). This is an unacceptable kludge; the other problem is very specific conditions have to be met for it to work at all: the map window must be closed when camping, and opened once before the first zoning. Also, I'm not sure SOE really approves of us defeating the fog layer, it's actual pretty hard to get around.
I tried getting it not to display (when I was working on the map in my UI) but had no luck.. I will have to check out your method..
Personally I think the only thing the fog is good for is showing where you explored and where you didn't.. Anyone who has brains enough to download your mod has brains enough to check out the maps on maps.eqInterface.com before actually exploring there. Makes the fog kind of annoying when you know what the map already looks like.. I know many people that would agree with me.. I don't see why sony would get upset if it was removed However the problem you described gets in the way..
It actually looks like there are 2 fog layers in the game.. If you look at the black fog you can see like a drop shadow underneath it.. That dropshadow, I believe, is the fog they use in citys.. Wish we could get rid of the black but keep the semi-transparent..
Wish we could find the name and location of the fog elements so we could manipulate them in scripts..
I can probably set it up without moving the QM_Overlay but it would require 9 pages of 8 buttons on each page.. Thats 72 buttons to code and it makes it less functional IMO.. Or 9 pages and 8 buttons with a ton of scripting.. But I'm taking a break from modding today!
Quote:
Here're the three basic goals goals I have in mind when working on the format of the map window:
1) Same size as default (this one seems to bother mod authors the most; the style sets allow this to be modified, but by default the map window should LOOK just like the default map window. We're adding maps not trying to dictate the users UI style).
The minimap conflicts with goal 1; a second window increases the screen real-estate of the map window, even if it can be hidden. The quests window is an example of a feature that will increase the map window size, but will be an optional download. The minimize button conflicts with goal 1 but is being left in due to a grandfather clause; it's been there since really early on. I should probably make it a plug-in, but it's not high on my priority list.
Never sacrifice features for looks!! Sony released a 1/2 finished UI system.. 100% evident in the map window and the chat system.. Features like minimize and restore(Like eq1 had but better).. and a resizable map window(EQ1 didnt have but it should!) should have been in the game since release.. Along with all the maps you guys are adding.. Adding buttons doesn't change the "look" of the window just adds some function..
Minimap doesn't add a window per say.. It makes the map smaller when you press a button.. Takes up less real estate.. It doesn't actually open another window.. When the button isn't pressed it looks just like the default with an extra button..
Quote:
2) Pack it full of information that isn't in the default UI elsewhere, but don't repeat data (this is why, by default, the map window doesn't have a label for your current loc, though I must say, your when-mouse-isn't-over path finder thing was really clever).
Goal 2 actually also conflicts with the minimap; it's repeating data already visible in the map window. Keep in mind I love the idea of a minimap and will be using one myself (I've played with Zonx's minimap in various forms quite a bit). So my arguments against one aren't due to a personal aversion to a minimap in particular.
Actually it's not repeating anything.. It changes the layout of the window.. It's the same window there for no way it could repeat information..
Quote:
3) Avoid changing default functionality of the map window beyond a certain point (which is arbitrary, this is the most wishy-washy of my rules).
The minimap really doesn't conflict functionality-wise I guess, it's just another map. The no-closing-on-escape violates this goal, but, like the minimize button, it's been there since early on. I'm leaving this one in and just relying on an optional download to restore closing-on-escape. The pathfinder doesn't conflict with this because it's simply another POI; the user can just plug in the loc data manually.
Again it doesn't add anything it changes the layout of the window.. It doesn't change any funtionality it just adds some! And I was working on making it an optional download from the start.. The default download would have 2 "blank" windows in it for minimap to plugin to..
Quote:
Anyway, I'm not dismissing your work or anything, I'd like to implement all of it in some form or another most likely, it'll just be a bit; we're 99% done with the full auto-updating system and so am tied up with bug shooting that right now.
Quib
I don't see you as dismissive.. If you were you wouldn't have even looked at it or replied.. And, we wouldn't be discussing it at all
I'm picking this apart myself too. If we're lucky we can find a way to make it so that this can be a plug-in for the map without altering the existing functionality (and thus not have Quib be bugged by it. )
In the meantime, we should be able to get the overlay to recenter with OnHoverIn and OnHoverOut, it just won't move directly with the MapPage. (Or would it be vice versa?)
__________________ If it ain't broke, it needs more features!
Features like minimize and restore(Like eq1 had but better).. and a resizable map window(EQ1 didnt have but it should!) should have been in the game since release
I've been wondering about these since I saw people adding them to various mods.. What do people use minimize for? I mean, everything is tied to a toggleable hotkey anyway, so why add a repetitive feature?
Breaks over, here's a version where I didn't mess with QM_Overlay
Only changes to eq2ui_mainhud_map are some includes and 4 lines of code for the plugins.. Map now moves in minimapmode with 5 buttons that are part of the Minimap Window..
Check it out
Note: You should NOT install this over my previous proposal.. It will not work correcty..
Edit: Just wanted to add: I don't know what I was thinking of with the 9 pages and 8 buttons on each page.. Thank god it only took 5 buttons!
Ok here it is..
I lied there were 3 changes to the EQ2UI_Mainhud_map.xml..
1. Added TM_Plugins.Visible=true to the onhide2 in the map page..
2. Added an include for plugins.xml above the QM_Overlay Page
3. Broke apart the map border..
If you look at the included fuile (plugins.xml) you'll notices that it has 5 includes there.. They are not located in a page.. And a page (MainHUD.Map.TM_Plugins) This page initializes the other pages..
The 5 includes make 5 pages in MainHUD.Map not MainHUD.Map.TM_Plugins..
All the plugins are blank right now.. I only did one and that's the Minimap..
If you look at the minimap you'll notice that it use Plugin_1.xml instead of a unique one..
If you look at it you'll notice it's a page and 2 includes outside of the page.. The 2 includes outside of the page adds 2 pages I need right to MainHUD.Map..
In other words the every page I add is a child of Root.MainHUD.Map.. The xml tree looks like this without my modifications:
-Map
--QM_Overlay
---Icons
When I add the plugins file to it the tree would look like this
When I add my minimap:
-Map
--TM_Plugins
--TM_Plugin1
--Minimap_Title
--Minimap_Window
--TM_Plugin2
--TM_Plugin3
--TM_Plugin4
--TM_Plugin5
--QM_Overlay
---Icons
Hope that's not too confusing.. If it is look at the code.. Load it up in uibuilder to look at the tree with and without the minimap plugin installed..
This needs to be istalled over a fresh install of the main eq2map download to work..
Don't have to add anything to any of the blank plugins..
If a modder wanted something to happen when the window minimizes: he/she would add a button to the plugin page called OnMinimize.. Then set the OnActivate script to get something to useful and ending it with Activated=false
For Instance:
I want to add a minimize button to the minimap that presses the mainwindows minimize..
Right now that won't work because my windows cover the titlebar.. But if I had the on events I could save the visible state of my title bar on minimize..
Then in OnRestore I use that visible state to press(or not press) my DockButton to change the window back to its minimap state
I will sleep on it aand work on adding it tomorrow night..
Forgot to mention the OnHide of the main map window would call the OnHide button.. The OnShow would be called in the final version OnShow.. Restore and Minimize in the Onactivate events of those buttons in the title bar
Ok, I finally figured out what you were talking about with OnActivate. I had never worked with that OnEvent, but I see how you're using it to basically press other buttons. I'm a little perplexed why you want to though. Like the close button; if you have another button sending a message to the close button... why not just make your button Visible=false the main Map page itself? Also, does OnActivate work in place of OnPress or along side it? Like, could a button have OnActivate and OnPress and they'd both work?
I understand what you're wanting with the minimizing, but wouldn't it be easier to have your own minimize button that performs its own actions?
I understand the includes within an included XML thing perfectly; don't worry about there being any confusion there, but why bother with including the 5 plugin XMLs in a child XML? It'd be more efficient to just include them all in the parent XML and make all the calls direcly from the main OnEvents.
Splitting up the mapborder is gonna have to be a no. Layering the border on top of the MapPage does this ugly thing of putting the tabs behind it at all times, so the current active tab isn't over it. Can't you just make a new border to go over the map when in MiniMap mode? Plus the mapborder was all combined in a previous request, so splitting it up again would be working backwards.
The plugin system (rather, just adding a handful of plugin slots) is a good idea. Using OnActivate to pass OnEvents along is brilliant (wish I had know about that, I've been using OnShow/OnHide).
Wow I just re-read all my post.. I wanted to say.. I'm still going through all this in my head (and in code).. That's probably why my post(thoughts) are all over the place..
Sorry if I try to over explain some things or don't explain other things.. The things I explain are probably on my mind at the time and it helps me think..
Everything I ask for is just asking.. So if something cannont change I understand that
Goal:
I'm trying to make the plugin system as modular as possible..
So that plugin system itself is seperate from the mainhud_map as much as possible.. But allows plugins to be very robust & flexible.. (Add buttons, pages, onshow options, etc)
Goal:
I want to make it so no plugin makers cut functionality out of the default coding (or a skins coding).. However, they will be able to add to the end of them, because, the callback events..
Goal:
There should be a callback system for OnTitlebar, OnFrame, OnHide, OnShow, OnMinimize, OnRestore..
Goal:
I want to get the changes in the map system down to 2 includes and a handful of lines of script in the mainhud_map..
Right now the way it's set up I can make plugins.xml a blank page and the plugin system is basically removed.. I want it so the whole system can be unplugged. If you change something in the mainhud_map it sits in it shouldn't break the plugin system.. Unless you remove the includes and the script support..
There are 2 reasons for me wanting to change your buttons like that.
1. I want the minimize feature to be a standard feature of eq2map..
2. I DON'T want a modder to write there own (No reason to repeat a function) they should be able write a button that calls your fuction and add to it with the "callback event" that is called..
You would have to use on activate for all buttons you want to call in script If I recall correctly. But not 100% positive.. I came up with that Idea, tested and started using OnActivate in most of my buttons for a while..
I believe:
The OnPress event is only called when the user presses the button in game.. And, not when I activate it through a script call..
OnActivate is also called when the user presses the button in game..
It's pretty much the same technique as hide/show but you can also activate with mouse..
You don't have to change The MapBorder at all.. Just give me the map underlay and it can be a blank page and hidden in the default setup.. I can't add this through a plugin because the plugins should sit on top of everything else, a tan backdrop over the map and poi's is useless.. I don't think it should be named Window_MapUnderlay then.. It should be TM_Plugins_MapUnderlay or something.. I will think of a way to change it..
I want atleast the plugins.xml to use the includes in this way.. Doing it that way makes it very robust/flexible.. Doing the minimap that way demonstrates how robust/flexible it is (I can add a whole bunch of pages right to the main map page if needed).. I can probably contain the whole minimap in one window but It actually makes the script longer in my opinion (more typing anyway).. I don't think it's any less efficient just more flexible..
If I put all the plugin# pages inside the plugins page then I add the pages I need for the minimap and the dock button to a plugin# page.. to access the MapPage from the minimap window for example I would have to type in script..
Parent.Parent.Parent.MapPage.Visible=true
The way it is now I can just do:
Parent.MapPage.Visible=true
Deathbane:
Did I offend you or something in my last reply to you? If I did I'm sorry.. I did not mean too.. I was trying to reinforce your statement not trying to be a Smarta$$, which it kinda came off as.. Haven't heard from ya since then on this subject.. Any thoughts on the subject?
Edit: I'll work on it some more a little later tonight.
Alright, I'll script the Close and Minimize buttons using OnActivate; please suggest some code for the default Minimize button(well, buttons since it's 2). I have a good idea of what I'd do with it, but want your feedback.
Why do you need an underlay? Couldn't your script just use the stuff inside of MapBorder to make an underlay (by moving/resizing it)?
Quote:
Goal:
There should be a callback system for OnTitlebar, OnFrame, OnHide, OnShow, OnMinimize, OnRestore..
Explain what you mean by OnTitlebar and OnFrame.
Quote:
Parent.Parent.Parent.MapPage.Visible=true
The way it is now I can just do:
Parent.MapPage.Visible=true
Not really sure what this was in reply too so I don't understand the exmaple. I know by using includes outside of page objects you'll avoid a level of using Parent.
The reason I say it's inefficient, is you're calling an include which will just call 5 more includes. That's ~16% less efficient than just directly calling the 5 includes. Likewise, calling one parent plugin object that'll call all the plugins themselves (to distribute the OnEvent calls) adds a layer of calls that just doesn't need to be there. I don't mind bulking up the main page objects OnEvents with calls directly to the plugins; the main page's calls are already massive.
I made 1 plugin that handles, I think, all the "window options" thus far.. Except the remove fog thingie.. and it adds a few.. Allows you to change upto 4 of the default eq2map behaviours by copying files..
Full-list: (Besides default options and plugins from the old sytem)
CloseOptions:
Min/Restore with keyboard 'M key' Esc disabled
IconOptions:
Alway 50% transparent
33% transparent till mouseover
ConnectionsOptions:
Both Off on login
City Off on login
And my darkness filter:
Maps 15% Darker than default (this is the one I will be using)
Maps 30% Darker than default
The only change to eq2ui_mainhud_map.xml this time was:
I added a page above the WorldMap Image definition..
<Page AbsorbsInput="false" BackgroundColor="#FFFFFF" BackgroundOpacity="1.000" BackgroundTint="#000000" Location="1,2" Name="TM_DarknessOverlay" Opacity="0.000" ScrollExtent="436,506" Size="436,506"/>
Required for my darkness option
I also changed the plugins.xml so that all the event buttons are not visible..
Things we will have to note to window skinners if this system is used: (I'm sure you know)
The OnHide and OnShow event for the window frame and title bar have to call the plugin handlers that are present there in the default skin at the end of the event..
The Restore and Minimize OnActivate script must end with the plugin handler followed by Activated=false
The CloseButton OnActivate must end with Ativated=false
Edit: I reversed the order in which the callbacks in plugins.xml get called instead of 1 to 5 the now trigger backwards.. So that plugin 1 has priority over 5.. System now has priorty like the z order of the plugin windows..
This is something to tell to plugin authors
I think that's it from me.. I'm out of ideas for improvements to it..
I was submitting a bug report last night (heh..) when it hit me.. POI!
When the bug report window is up, and your entering your message, you cannot press TAB to go from field to field. It just changes your target which is reflected on the bug report. That is when the idea hit me...
Why not have a pop-out pane in EQ2Map that the user can stand in a spot, target a critter, enter a blurb, click a button and have it send it to our website for POI insertion?
i will look into making a page that works with the html viewer in game where people can submit new poi's no promises though, because i remember someone said that the thing sucks pretty bad as far as displaying stuff.
I think that's it from me.. I'm out of ideas for improvements to it..
Alright, I think everything's looking good so will have a new version of eq2ui_mainhud_map.xml up for the auto-updater to grab by the end of the day. Dolby added a new "allow addons or whatever" option for mods, and I already turned it on for EQ2MAP (the main XML download) so you can upload the plugins there, though I suggest waiting a couple days; I'll update the main download with the newest version the auto-updater downloads after I update the auto-updater's downloadable files.
Sorry, I got tied up this weekend. Just logged in for my final test of EQ2MAP with your plugin code added. You'll want to get the auto-updater Talyns, and put it in an empty folder and run it to make sure you get all of the newest files. Check eq2ui_mainhud_map.xml, window_plugins.xml (this was the only filename I changed) and everything to make sure what I've done with your work is acceptable. Very little should be different; however I added it to my newest version by hand so you might wanna make sure I didn't miss anything.
Also, I figured out the difference between OnActivate and OnPress (if you already knew this, oh well): OnActivate occurs on mousedown, OnPress occurs on mouseup; basically, I can click and hold on a button, but OnPress won't occur unless my mouse is still over the button when I let go of the mouse button. OnActivate occurs the instant you click on a button. If you used both OnActivate and OnPress on the same button, there's no guarantee OnPress would get called; the user could move the mouse off of the button before releasing.
Sorry, I got tied up this weekend. Just logged in for my final test of EQ2MAP with your plugin code added. You'll want to get the auto-updater Talyns, and put it in an empty folder and run it to make sure you get all of the newest files. Check eq2ui_mainhud_map.xml, window_plugins.xml (this was the only filename I changed) and everything to make sure what I've done with your work is acceptable. Very little should be different; however I added it to my newest version by hand so you might wanna make sure I didn't miss anything.
No need to apologize..
Looks and works right =)
I found a couple minor things I need to tweak on the Minimap Plugin then I will upload both as add-ons..
Where should I upload them to when I'm done? The map AutoUpdater download? Never mind I reread two post up
Quote:
Also, I figured out the difference between OnActivate and OnPress (if you already knew this, oh well): OnActivate occurs on mousedown, OnPress occurs on mouseup; basically, I can click and hold on a button, but OnPress won't occur unless my mouse is still over the button when I let go of the mouse button. OnActivate occurs the instant you click on a button. If you used both OnActivate and OnPress on the same button, there's no guarantee OnPress would get called; the user could move the mouse off of the button before releasing.
Quib
I knew OnActivate is called on mouse down.. I think it occurs at the same time the image switches to the "Pressed" Image..
OnDeactivate.. I think is called when the image is changed back to normal..
It's good to know that OnPress has a "user failsafe" to it..
I wonder what's called first OnDeactivate or OnPress.. Good to know how this stuffs works in general..
Hmm... Is it bad that we're going around it? I don't think so.. They're just basic switches..
Probably not a good Idea to put script in OnActivate that could create a bad out come.. Like an autoattack button.. Don't want to accidently attack a sentry or something..
Anyhow, Thanks for adding this feature!
So, When you gonna make that map selector tab plugin?