EQInterface Forums

EQInterface Forums (http://www.eqinterface.com/forums/index.php)
-   XML Tutorials & Info. (http://www.eqinterface.com/forums/forumdisplay.php?f=48)
-   -   How to make UI's never break. (http://www.eqinterface.com/forums/showthread.php?t=3848)

Statix 11-08-2002 09:37 AM

How to make UI's never break.
 
Source: http://skins.machin-shin.net/nobreak.html

How to make your UI never break: (atleast im 99% sure):

First you need to make your User Interface Modular ... that means taking all of your modifications to your EQUI_Animations.xml file, EQUI_Templates, etc etc, whatever you may have modified and place them inside of a new .XML file that you create. This makes mix/matching mods much easier.

After this part you need to 'Include' the .xml file in everquest. What I mean is you will need to edit your EQUI.xml (in your UI folder)file to look like this.



What this does is cause your UI folder to look in the default folder for its MAIN includes (normal windows, graphics, templates, etc).
Then it looks in the UI file that you created (replace EQUI_Quartz.xml with your own) and loads its data.



This way any time verant adds a new window OR graphics your UI will be affected in no way.. I guess we'll see how well it works when the Test server mp3 player comes in :) Note: This way will not work so well with customized cursors, and possibly some other methods... Any additional input of ways to get around this is appreciated and should be said to the UI public :)
-Statix Cinderblade




=)

Statix 11-08-2002 04:29 PM

bump

Runtt 11-20-2002 05:38 AM

I haven't tried this yet

Don't know why nobody else has said anythoughts, I just found this tonight and I think this is the most useful bit of info out there.

Thanks Statix!!:nana: :nana:

Chronwaas 11-20-2002 08:10 AM

I found this on Statix's website a couple weeks ago. I have already used this as well as a few other things to make my version of the UI modular as well.

The to Statix and to many others for the help in getting my code and many others code to this point. With the information they provided I was able to learn xml faster and to a point that like my other programming make it less likely to break in the future.

Kelric 11-20-2002 08:24 AM

Statix, this is a great development!

I'm a little confused though (unsurprising ;))... your example shows two EQUI.xml files, that I think I understand: the edited one in your Custom folder being the one that includes your EQUI_Quartz.xml, which in turn contains pointers to the animations, graphics, etc... (right?)

But what makes EQ look at the Custom EQUI.xml first, and not the Default?

Chronwaas 11-20-2002 08:34 AM

It is that way because Verant has designed things so that the system will always look in your custom dir first. Then if it does not find something it goes back to your default dir to find it.

AnnaKey 11-20-2002 08:40 AM

This is a really great development. Added it to my UI before yesterdays patch and it had no problems with the new MP3 windows.

Kelric, I think that is just the way it works (thankfully)...Because EQ is loading a UI in a custom folder, it automatically looks in that custom folder for files its told to find, regardless of where the file telling it to find them is.

Kelric 11-20-2002 08:42 AM

Quote:
Originally posted by Chronwaas
It is that way because Verant has designed things so that the system will always look in your custom dir first. Then if it does not find something it goes back to your default dir to find it.



OHHH! So really, it's reading the UI_character_server.ini file to see what skin is being used, and then jumps to that folder, eh? That makes sense, then! Thanks!

Gnosis 11-20-2002 08:43 AM

Quote:
But what makes EQ look at the Custom EQUI.xml first, and not the Default?



My best guess is that the client looks for the EQUI.xml first in wahtever directory is flagged by the user by entering a line in each character's respective User Interface initialization file ( ex. UI_Gnosis_64.ini ).

The client determines the default directory per character by parsing the directory as whatever is in the MAIN section to the right of the designator UISkin=

The client determines the default directory globaly by parsing the directory as whatever is in the eqclient.ini file in the DEFAULT section to the right of the designator UISkin=

This is just a guess and would like feedback as to any other thoughts...


-Gnosis-
The summation of all things...

Cairenn 11-20-2002 11:20 AM

Okay, I've been trying to figure this out for myself (and also for input to t.king and Remelio). The thing I am stumped on is that in the your example of how the file should look, you show:

blah blah blah
yadda yadda
blah gaugetypes

<XML ID = "EQInterfaceDefinitionLanguuage">
<Composite>
<Include>../default/EQUI.xml</Include>
<Include>EQUI_Quartz.xml</Include>
</Composite>
<Schema xmlns = "EverQuestData" xmlns:dt = "EverQuestDataTypes" />
</XML>

The line that I have in bold .... it has a "path" defined in it. When I try to put a path in, it chokes. What am I missing here?

Also, as you have already noted, it won't work for things like cursors. We still end up having to go back and edit the default EQUI_Animations.xml, rather defeating the entire purpose. Has anyone come up with a work around for that yet?

Chronwaas 11-20-2002 01:02 PM

Do not change that line. That line is set to do exactly what it should do. It will use the "..\ " to go up one directory from the current directory (which would be your custom skin directory) then it will use the "default " to go to that directory and then it will grab the "EQUI.xml " file from that directory to include in your custom UI.

It is this process that makes this UI so that it is less likely to break. By including the Verant EQUI.xml file in this file it makes it so that any change that Verant makes is always included in your custom skin.

So do not make a change to this line leave it so that is says
"<Include>../default/EQUI.xml</Include>"

Chronwaas 11-20-2002 01:03 PM

We are still working on a solution for the cursor issue.

Cairenn 11-20-2002 02:43 PM

Quote:
Originally posted by Chronwaas
<snip> do not make a change to this line leave it so that is says
"<Include>../default/EQUI.xml</Include>"


Ah ha! I was doing the whole "write the path out" thing, instead of putting the ..\ Simple mistake, easily fixed, thanks.

Chronwaas 11-20-2002 02:54 PM

If that fixed your issue then Cool. If not let us know and we will give you a hand tracking it down more.

Haliken 11-20-2002 03:45 PM

Statix, THIS method I'm impressed with. Finally a way for people to use a modified EQUI.xml but still reference the original so patches won't impair the functioning of the UI due to an outdated modded EQUI.xml. I personally don't change the animations or templates files so this method isn't necessary for me, but for everyone who feels it's necessary to change those files, this is a great breakthrough.

Enok

Cairenn 11-20-2002 03:55 PM

Okay, further question then.

I want to comment out the casting window. I don't see any way to do this, under this method.

Would it not make as much sense to just copy the default EQUI.xml file over, and add the <Include>, without going through the whole rest of the rigamarole?

I understand the principle. I just see some difficulties with it. The two main being the ones already stated: Cursors (animation file) and Casting Windows (ui file).

Nandayar 11-21-2002 07:40 AM

I tried to edit my existing EQUI.xml file to make this change and I can not seem to get it to work. Is there any way I could possibly post my EQUI.xml file here so someone could tell me what lines to add where?? I could really use the help.


Ok I think I misunderstood this change. I read that I have to create a entirely new xml file, but I guess it just did not register in my head. I will have to hit up a friend to help me with this kind of change it is a bit over my head.

Chronwaas 11-21-2002 10:04 AM

Hey Nandayar, if you want to if you want to zip up your EQUI.xml, EQUI_Animations.xml, and EQUI_Templates.xml file and attach them here I can take a look at them and maybe clean them up along these lines for you. Then I can give you an outline of the changes so that you can take a look and see what I did so that if you want ot learn about it you can. I am always willing to help those that are looking for help. And if you are looking to learn all the better.

Nandayar 11-21-2002 11:17 AM

Thanks a lot Chronwaas for the offer, but I already burnt off a copy of my modified files and sent them to my buddy. If I run into more problems I may have to take you up on the offer. See ya.

Aelthas 11-21-2002 04:43 PM

Quote:
Originally posted by Cairenn
Okay, further question then.

I want to comment out the casting window. I don't see any way to do this, under this method.

Would it not make as much sense to just copy the default EQUI.xml file over, and add the <Include>, without going through the whole rest of the rigamarole?

I understand the principle. I just see some difficulties with it. The two main being the ones already stated: Cursors (animation file) and Casting Windows (ui file).


Make a dummy EQUI_CastingWindow with no xml in it. This way it will include the file but, the casting window won't appear since there's no xml in it.

Making dummy files of those you would rather comment out may seem like more work, but if that means most people can go in and play right after a patch instead of having to add a new line to the EQUI file (or waiting for someone else add the line for them) then I'm all for it.

And no, the unbreakable UI solution isn't perfect, but it's much better then what most people are doing right now. I hope it catches on.

EDIT: All that you should need in a dummy file is this:

<?xml version="1.0" encoding="us-ascii"?>
<XML ID="EQInterfaceDefinitionLanguage">
<Schema xmlns="EverQuestData" xmlns:dt="EverQuestDataTypes" />
</XML>

- Aelthas

Cairenn 11-21-2002 05:20 PM

Quote:
Originally posted by Aelthas
And no, the unbreakable UI solution isn't perfect, but it's much better then what most people are doing right now. I hope it catches on.

Oh, I quite agree that anything that will make this entire process less painful for *all* of us is a good thing. Just coming up with questions so we can figure out ways to deal with them, in the attempt to make this *really* work, ya know?

jobeken 11-22-2002 09:03 AM

The dummy file is a bad idea for one reason...

Anytime you delete the pre-existing verant XML you run the risk of seeing an incompatibility message even tho the skin loads.

What you need to do to correctly make a window go away...

Window type WDT_Def
transparency true
Move all XML elemnts that display in the window to -250 -250
Then edit the window size down to 1x1

That gets rid of the incompatability warning message and the window.

Aelthas 11-22-2002 05:48 PM

Quote:
Originally posted by jobeken
The dummy file is a bad idea for one reason...

Anytime you delete the pre-existing verant XML you run the risk of seeing an incompatibility message even tho the skin loads.

What you need to do to correctly make a window go away...

Window type WDT_Def
transparency true
Move all XML elemnts that display in the window to -250 -250
Then edit the window size down to 1x1

That gets rid of the incompatability warning message and the window.


True enough. Maybe I should have been more explicit in the last post. For a few windows making a dummy file of them would get you into trouble (The bazaar window springs to mind here).

But, for the two windows that are most commonly commented out (EQUI_BreathWindow and EQUI_CastingWindow) making dummy files for them is perfectly valid. No incompatibility messages or errors should be forthcoming. Though I am only speaking from my experience with them and it wouldn't be the first (or last) time I was mistaken about something. Though your method is safer for most people deciding to get rid of a window. :)

Also with the dummy file for those two you get the nice bonus of not wasting memory to load something that won't even be seen by the user. And really, I just dislike putting in any code that isn't going to be used.



ps. Love your work on Glass. I'm looking forward to seeing the finished mod.

- Aelthas

Xymarra 11-25-2002 08:00 PM

Actually, a slightly cleaner way to accomplish the same end is to delete EQUI.xml from your own directory entirely. Then, in the first loaded file that you modify, insert your includes at the beginning:

Code:
<?xml version = "1.0"?> <XML ID = "EQInterfaceDefinitionLanguage"> <Composite> <Include>Gauges.xml</Include> <Include>Gems.xml</Include> <Include>ThinBorder.xml</Include> <Include>Deco.xml</Include> </Composite>


For me, this is in EQUI_Animations.xml.

jobeken 11-25-2002 08:21 PM

Or you could not use includes at all and just put all your custom animations in any standard UI file you want...

But Xymarra does have a point...

Those who mix n match UI's cant exactly easily put your custom animations from your UI in with someone elses if they all require a custom EQUI.xml file...

The BEST option is to just put your custom animations/etc in a named file, then include it in your modded file...So people who mix n match can still mix n match...As long as they dont overwrite your one custom file that has your animations/etc in it...

But really and truly, there is no unbreakable UI...

aeluin 11-25-2002 10:51 PM

But you can work toward that goal. And I happen to like Statix's method; I don't mod Animations, Templates or any other common file and I wouldn't want to have Include statements or shared animations in a window file (which is all I will mod anymore because all non-window files have broken at one time or another) because then I'd have to tell people who download my skin how to fix things if they decide they want to mod that particular window.

As is, all I have to say is "don't replace EQUI, don't put in a custom Animations or Templates, don't copy over your default directory and don't delete EQUI_Aeluin, and this mod shouldn't have any problems." Even so I get a few support questions but they're mostly from people trying to add broken mods or mods that come with an Animations.

jobeken 11-25-2002 11:21 PM

Agreed Aelu, but your one of the few already using a modded EQUI.xml...What happens when all the mods people want to mix-n-match say dont change EQUI.xml ... ?

Thats the point I think Xymarra was trying to make, which is not only valid, but going to become an issue fast...

Spiritwalker 11-26-2002 05:34 AM

Way to go
 
This is a good suggestion. I have had some success with crash proofing on my WC3 mods because i was including most of the animations declarations into the actual files that will use them. This has worked well so far but there was no way for me to create a custom window design without using the templates files. Unfortunately for most skinners EQ has chosen to patch the two most critical files and patch them frequently. Those 2 files are the templates, and animations files. Also if you add any declarations to the main EQUI file that gets patched as well. I think Verant just wants to challenge us to see if they can use our methods of patch proofing in their own code. What better way to save DEV time and funds heheheeh. At any rate. I will most definately be trying your suggestions on my WC3 mods and see how they work out. Very nice contribution. Thanks.

Spiritwalker

Earthscum 11-26-2002 02:07 PM

This is actually a pretty simple concept. You have the first file that EQ looks for (that's modifiable) and you use it to include only what your mod or skin uses, plus the other EQUI file. Since it already loaded some stuff from the custom file, it won't load it from the original EQUI. If Verant changes anything in the EQUI file, it won't matter because you aren't eliminating it from your file processing. Same with the animations file. You can do a custom animations file (EQUI_Animations_Spec.XML) that is called before the other animations file, but the original EQUI_Animations still stays intact and updateable. Basically, the EQUI.xml fix is working off that same principal.

What I was doing (pain in the butt if you ask me) was taking the windows that were grouped together (ie, swapping stuff around between Player, Pet, Grouup, and Target) and looking in the EQUI file to see which it loaded up first. In this case, it would be the Group window, so I was using that window to define the animations for those three windows. But, I ran into a problem of wanting to reuse some graphics in the buff window, which got loaded first and wouldn't have a definition for the custom graphics, so I had to move all that info from the group window to the buff window. I have about 3 out of 6 XML files that don't have animation definitions now. This will fix it so I don't have to have animation definitions in ANY of my files except the custom animations :-)

aeluin 11-26-2002 03:22 PM

Jobeken- you have a valid point, but if somebody comes to me and says I want to add this cool mod in but it comes with a modified EQUI.xml, what do I do?", it's quite simple to say "show me the EQUI they sent you and I'll see if you need to change anything in mine"- most likely it'll only be 1 line if they even need to change anything. On the other hand, if I decide to put all my custom animations or Includes in the breath window for instance, it would be ridiculously difficult to attempt to explain to someone over PMs how to put in a different breath window.

Besides, individual window mods almost never come with a modded EQUI. It's not practical or useful to do that unless you have a complete set. And members who are mixing-and-matching elements from more than one set tend to be the more experienced ones who can either figure things out themselves or at least understand a semi-technical explanation.


All times are GMT -5. The time now is 06:02 PM.

vBulletin Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.